Warm tip: This article is reproduced from serverfault.com, please click

swing-在JFrame中显示在Java程序中生成的pdf文档的内容,而无需创建pdf文件

(swing - Show the contents of pdf Document generated in java program ,without creating pdf file, in JFrame)

发布于 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作为参数,并直接显示PDF文件的内容在JFrame的?

Questioner
svkvvenky
Viewed
0
mkl 2020-12-07 16:10:09

你的问题包含一个错误的假设:

它具有Document类,其实例包含要写入pdf文件的全部数据。

尽管itextDocument实例确实是对象,但你将所有内容添加到itext将为你布局的内容中,但该实例根本 包含该内容。相反,它立即将其转发到已注册的侦听器对象,后者又将其尽快PdfWriter写入实例,实例又将其尽快写入实例化的流。

因此,你的问题

是有这需要的实例的任何类文档类itextpdf-5.1.0.jar直接作为参数,并显示PDF文件的内容中的JFrame

显然必须回答:不,不可能有这样的课程。

但是,你可以做的是PdfWriter用aByteArrayOutputStream而不是a实例化FileOutputStream以在内存中生成pdf:在关闭你的文件后,Document你可以从中检索字节数组ByteArrayOutputStream,然后保存已完成的pdf。然后,你可以使用所选的pdf查看器组件尝试从内存中显示pdf,只要该查看器支持通过字节数组或输入流(通过ByteArrayInputStream)进行文档输入即可