0

icepdf在我的网络项目中使用。当我在 Eclipse 中运行这个项目时它工作正常,并且当我在 tomcat 版本 8/9 上使用这个项目时也运行它。但是当我在 Linux 实例中部署这场战争时,一切都很好,但 pdf 不会在JFrame. 我的 java 版本和 tomcat 版本也和我本地使用的一样。

这是我的代码

import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;
import java.io.InputStream;
import javax.swing.*; 
public class PdfPreview {
public static void pdfPreview(InputStream stream) {

    // build a component controller
    SwingController controller = new SwingController();

    SwingViewBuilder factory = new SwingViewBuilder(controller);

    JPanel viewerComponentPanel = factory.buildViewerPanel();

    // add interactive mouse link annotation support via callback
    controller.getDocumentViewController().setAnnotationCallback(
            new org.icepdf.ri.common.MyAnnotationCallback(
                    controller.getDocumentViewController()));

    JFrame applicationFrame = new JFrame();
    applicationFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    applicationFrame.getContentPane().add(viewerComponentPanel);

    // Now that the GUI is all in place, we can try openning a PDF
    controller.openDocument(stream, "Pdf Viewer", null);
    // show the component
    applicationFrame.pack();
    applicationFrame.setVisible(true);
}}

这里stream来自一个来源

4

1 回答 1

1

基于 Swing 的查看器设计为作为胖客户端作为独立应用程序运行。您的代码可能在服务器上运行正常,但 GUI 将加载到服务器系统而不是您的系统上。当服务器尝试加载 Swing 子系统时,也可能出现无头异常。

如果要通过 Web 服务器启动 Viewer 应用程序,则需要构建和部署 Java WebStart 应用程序 (JWS)。一个例子在这里,http://anonsvn.icesoft.org/repo/icepdf/tags/icepdf-6.3.0/icepdf/examples/jws/。您需要对罐子签名进行一些自己的研究。

您还可以使用 ICEpdf 库将 PDF 文档的页面保存为图像,然后您可以使用 Tomcat 将图像提供给请求的客户端。有一些示例代码使用 JSF/ICEfaces http://anonsvn.icesoft.org/repo/icepdf/tags/icepdf-6.3.0/icepdf/examples/icefaces/。核心捕获由这个 Servlet 类完成,http://anonsvn.icesoft.org/repo/icepdf/tags/icepdf-6.3.0/icepdf/examples/icefaces/src/main/java/org/icepdf/examples/ jsf/viewer/servlet/PdfRenderer.java

于 2018-05-21T20:33:28.327 回答