【问题标题】:How to show and deploy a PDF document from Java using WebStart如何使用 WebStart 从 Java 显示和部署 PDF 文档
【发布时间】:2010-05-10 20:32:56
【问题描述】:

我想以独立于系统的方式显示来自 Java (Swing) 应用程序的 PDF 文档(前提是目标系统上正确安装了 PDF 查看器)。

我还想使用 Java WebStart 部署此 PDF 文档。

您能告诉我实现这一目标的“标准”方式吗? (我承认,我懒惰/忙于查找细节......)谢谢!

【问题讨论】:

    标签: java pdf java-web-start


    【解决方案1】:

    我假设您的意思是您希望将 PDF 与 Java Web Start 应用程序一起部署?如果是这样,您只需将 PDF 与您的 webstart 应用程序打包。当您的应用程序下载并运行时,PDF 也将出现,您的代码可以使用 getClass().getResource("/where/is/my.pdf") 类型的查找来定位 PDF,然后对其进行操作展示。您可能还需要获取代码以从资源中读取 PDF 并将其保存在临时文件 (File.createTempFile()) 中,以便 PDF 查看器可以看到它。

    粗略的想法:

      // Find the PDF in the Webstart App download
      InputStream in = getClass().getResourceAsStream("/where/is/my.pdf");
    
      // create a temp file to copy the pdf to
      File tmpFile = File.createTempFile("my", "pdf");
      OutputStream out = new FileOutputStream(tmpFile);
    
      // stream the file from in to out ... heaps of examples on the net for doing this ("copy files")
    
      // display the file
      Desktop.getDesktop().open(tmpFile);
    
      // ideally clean the tmp file up at some point.
    

    【讨论】:

    • 谢谢。但在这种情况下,清理临时文件正是棘手的部分,因为我不知道用户何时会关闭外部查看器。但是只要我没有找到直接部署PDF文件的方法(即不作为资源),我就会先走这条路
    • 我不会太担心在每个客户端请求的基础上将临时文件留在客户端计算机上。如果您在下载 PDF 时查看 IE 行为,它会将其保留在 temp 中。如果您的平台不是 Windows,即使正在查看文件,您也可能会删除该文件(稍后会发布)。在 Windows 上,如果您的应用程序挂起一段时间(例如应用程序终止时 - 也请参见 File.deleteOnExit()),您可以稍后尝试删除文件。
    【解决方案2】:

    您可以使用Java 6 Desktop systemDesktop.open() 为您的文档(在本例中为PDF 文件)打开相关的桌面应用程序。

    【讨论】:

    • 正是我在寻找问题的第一部分!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多