diff --git a/pom.xml b/pom.xml
index 6b90174..c7dc25b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,6 +164,15 @@
${jetty-server.version}
test
+
+
+
+
+ org.apache.xmlgraphics
+ fop
+ 2.7
+ pom
+
diff --git a/src/main/java/net/sourceforge/plantuml/servlet/PdfServlet.java b/src/main/java/net/sourceforge/plantuml/servlet/PdfServlet.java
new file mode 100644
index 0000000..da46804
--- /dev/null
+++ b/src/main/java/net/sourceforge/plantuml/servlet/PdfServlet.java
@@ -0,0 +1,46 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * Project Info: https://plantuml.com
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ */
+package net.sourceforge.plantuml.servlet;
+
+import net.sourceforge.plantuml.FileFormat;
+
+/**
+ * PDF servlet of the webapp.
+ * This servlet produces the UML diagram in PDF format.
+ */
+@SuppressWarnings("SERIAL")
+public class PdfServlet extends UmlDiagramService {
+
+ /**
+ * Gives the wished output format of the diagram.
+ * This value is used by the DiagramResponse class.
+ *
+ * @return the format for pdf responses
+ */
+ @Override
+ public FileFormat getOutputFormat() {
+ return FileFormat.PDF;
+ }
+
+}
diff --git a/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java b/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java
index dfec375..8804eab 100644
--- a/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java
+++ b/src/main/java/net/sourceforge/plantuml/servlet/PlantUmlServlet.java
@@ -262,6 +262,7 @@ public class PlantUmlServlet extends HttpServlet {
request.setAttribute("hasImg", hasImg);
request.setAttribute("imgurl", hostpath + "/png/" + index + encoded);
request.setAttribute("svgurl", hostpath + "/svg/" + index + encoded);
+ request.setAttribute("pdfurl", hostpath + "/pdf/" + index + encoded);
request.setAttribute("txturl", hostpath + "/txt/" + index + encoded);
request.setAttribute("mapurl", hostpath + "/map/" + index + encoded);
// map for diagram source if necessary
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index ae4992e..bcdef3d 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -111,6 +111,15 @@
/svg/*
+
+ pdfservlet
+ net.sourceforge.plantuml.servlet.PdfServlet
+
+
+ pdfservlet
+ /pdf/*
+
+
epsservlet
net.sourceforge.plantuml.servlet.EpsServlet
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp
index 17cf707..4006451 100644
--- a/src/main/webapp/index.jsp
+++ b/src/main/webapp/index.jsp
@@ -13,6 +13,7 @@
String imgurl = request.getAttribute("imgurl").toString();
String svgurl = request.getAttribute("svgurl").toString();
String txturl = request.getAttribute("txturl").toString();
+ String pdfurl = request.getAttribute("pdfurl").toString();
String mapurl = request.getAttribute("mapurl").toString();
// map for diagram source if necessary
boolean hasMap = (boolean)request.getAttribute("hasMap");
@@ -79,6 +80,7 @@
View as PNG
View as SVG
View as ASCII Art
+ View as PDF
<% if (hasMap) { %>
View Map Data
<% } %>