From 4a5e204e16b6ba811c2bed8b20a656b7947c71f7 Mon Sep 17 00:00:00 2001 From: Joel Pearson Date: Fri, 17 Feb 2023 15:01:47 +1100 Subject: [PATCH] Adding PDF support #130 --- pom.xml | 9 ++++ .../plantuml/servlet/PdfServlet.java | 46 +++++++++++++++++++ .../plantuml/servlet/PlantUmlServlet.java | 1 + src/main/webapp/WEB-INF/web.xml | 9 ++++ src/main/webapp/index.jsp | 2 + 5 files changed, 67 insertions(+) create mode 100644 src/main/java/net/sourceforge/plantuml/servlet/PdfServlet.java 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 <% } %>