【问题标题】:Show the contents of pdf Document generated in java program ,without creating pdf file, in JFrame在 JFrame 中显示 java 程序中生成的 pdf 文档的内容,无需创建 pdf 文件
【发布时间】:2020-12-07 05:20:18
【问题描述】:
我正在使用 itextpdf-5.1.0.jar 文件从 java 程序创建一个 pdf 文件。
它有 Document 类,其实例包含要写入 pdf 文件的全部数据。
创建 pdf 文件并将其保存在我们的任何系统驱动器中后,可以使用 icepdf-viewer-6.2.2.jar 中的类在我的 java 程序中查看相同的内容。
除了在系统驱动器中创建文件并在 java 应用程序中重新加载该文件之外,是否有任何类采用 itextpdf-5.1.0.jar 的 Document 类 的实例strong>作为参数直接在Jframe中显示pdf文件的内容?
【问题讨论】:
标签:
java
swing
file
pdf
itext
【解决方案1】:
您的问题包含不正确的假设:
它有 Document 类,其实例包含要写入 pdf 文件的全部数据。
虽然 itext Document 实例确实是您将所有内容添加到该 itext 应为您布局的对象,但该实例完全不 包含该内容.相反,它会立即将其转发到已注册的侦听器对象,这些侦听器对象会尽快将其写入PdfWriter 实例,而PdfWriter 实例又会尽快将其写入为其实例化的流。
所以,你的问题
是否有任何类以 itextpdf-5.1.0.jar 的 Document 类 的实例为参数,并在 Jframe 中直接显示 pdf 文件的内容
显然必须回答:不,不可能有这样的课程。
不过,您可以做的是用ByteArrayOutputStream 而不是FileOutputStream 实例化PdfWriter 以在内存中生成pdf:关闭Document 后,您可以从@987654327 检索字节数组@ 然后保存完成的pdf。然后,您可以尝试使用您选择的 pdf 查看器组件从内存中显示 pdf,只要该查看器支持通过字节数组或输入流(通过 ByteArrayInputStream)进行文档输入。