【发布时间】:2016-04-01 18:17:14
【问题描述】:
我在一个文件中创建了一个 PDF 文档(带有 iText),并且可以在屏幕上显示它:
Document document = new Document();
PdfWriter.getInstance(document, filename);
document.open();
// ... write something to document
document.close();
Desktop.getDesktop().open(new File(filename)); // works fine :-)
但是在客户的机器上我的程序将无法访问文件系统,所以我尝试了这个:
Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document,baos);
document.open();
// ... write something to document
document.close();
这行得通,但是(当然)
Desktop.getDesktop().open(new File(baos)); //doesn't work :-(
无法使用Desktop.getDesktop().open 显示 PDF。
有没有办法显示存储在 ByteArrayOutputStream 中的 PDF?
【问题讨论】:
-
你可以播放 web 服务器,让一个 ServerSocket 监听端口 8080 和
Desktop.getDesktop.browse("http://localhost:8080/my.pdf")。您必须处理请求标题行,并发送您自己的标题行,但浏览器开发工具会显示示例数据。 -
web 服务器不会在客户机器上运行 :-(
-
你不能在一个端口上用java打开一个ServerSocket?我的意思是扮演网络服务器并让浏览器打开pdf。
-
@JoopEggen 仅供参考:您的提议违反了EULA of Adobe Reader DC,更具体地说,违反了条款 3.2 服务器使用:“本协议不允许您在计算机文件服务器上安装或使用该软件。”如果 OP 使用您的建议,他必须确保他的用户不使用 Adobe Reader。请参阅我的回答,了解 EULA 中为何包含该条款。
-
@BrunoLowagie 听到这个消息很难过,但如果有人是该领域的名人,那就是你。
标签: java pdf itext bytearrayoutputstream