【问题标题】:Does Flying Saucer library support for Google App-Engine?Flying Saucer 库是否支持 Google App-Engine?
【发布时间】:2012-08-22 08:17:06
【问题描述】:

我正在尝试在我的应用程序中从 HTML 文件创建 PDF。 我的整个应用程序正在为 Java 开发 Google App-Engine(GAE)。
飞碟库是否支持 GAE?

如果有人知道,请给我解决方案。

【问题讨论】:

    标签: java google-app-engine flying-saucer


    【解决方案1】:

    Java7

    飞碟使用在AppEngine Java 7 Runtime Environment 中受限的抽象窗口工具包 (java.awt.*)。尝试使用 Flying Source 会给出:

    java.lang.NoClassDefFoundError: Could not initialize class org.xhtmlrenderer.pdf.ITextOutputDevice
        at org.xhtmlrenderer.pdf.ITextRenderer.<init>(ITextRenderer.java:102)
        at org.xhtmlrenderer.pdf.ITextRenderer.<init>(ITextRenderer.java:98)
    

    但是,Flying Sourcer 可以在 AppEngine 柔性环境中使用。

    Java8AppEngine Java 8 Runtime Evnvironment,飞碟就像一个魅力。

    【讨论】:

      【解决方案2】:

      Flying Saucer 需要格式良好的 XML(在本例中为您的 html)来创建 pdf 导出文件。 由于 GAE 支持 servlet

      https://developers.google.com/appengine/docs/java/#Java_Requests_and_servlets

      将飞碟引擎包含在 servlet 中可能并不难。像这样的

      import java.io.IOException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      public class MyFSServlet extends HttpServlet {
          @Override
          public void doGet(HttpServletRequest req, HttpServletResponse resp)
                  throws IOException {
              try {
          StringBuffer buf = new StringBuffer();
          buf.append("<html YOUR HTML CODE HERE>"); //could be retrieve from somewhere else
          DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
          Document doc = builder.parse(new StringBufferInputStream(buf.toString()));
          ITextRenderer renderer = new ITextRenderer();
          renderer.setDocument(doc, null);
          renderer.layout();
          OutputStream os = resp.getOutputStream();
          renderer.createPDF(os);
          os.close();
      } catch (Exception ex) {
          ex.printStackTrace();
      }
          }
      

      }

      【讨论】:

        猜你喜欢
        • 2012-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 2014-08-05
        • 2020-02-21
        • 2013-11-18
        • 1970-01-01
        相关资源
        最近更新 更多