Java PDF渲染器把我的PDF搞砸了?

Java PDF渲染器把我的PDF搞砸了?,java,pdf,printing,renderer,Java,Pdf,Printing,Renderer,我正在尝试从java应用程序(更具体地说是J2EE Web应用程序)中静默打印PDF文件 在这个应用程序中,我使用iText创建PDF文件。创建的文件是格式字母,每个字母只包含一页 为了渲染和打印这些PDF文件,我尝试使用PDF渲染器库。(见此处:) 我在上找到了一些有用的示例代码,事实上,不久我就可以从我的工作机器上打印出第一个文档 但现在有趣的是: 在打印完每个PDF文件后,不知何故都搞砸了。它仍然可读,但整个格式有点疯狂。行刹车在不应该的地方,包含的图像中的错误伪影,文本的卸载突然变长或变

我正在尝试从java应用程序(更具体地说是J2EE Web应用程序)中静默打印PDF文件

在这个应用程序中,我使用iText创建PDF文件。创建的文件是格式字母,每个字母只包含一页

为了渲染和打印这些PDF文件,我尝试使用PDF渲染器库。(见此处:)

我在上找到了一些有用的示例代码,事实上,不久我就可以从我的工作机器上打印出第一个文档

但现在有趣的是:

在打印完每个PDF文件后,不知何故都搞砸了。它仍然可读,但整个格式有点疯狂。行刹车在不应该的地方,包含的图像中的错误伪影,文本的卸载突然变长或变短

此外,印刷的也是这个“黑客”版本。。。所以我猜错误一定在渲染过程中的某个地方

这是负责整个渲染和打印过程的源代码:

File f = this.file; //This accesses the created PDF file

FileInputStream fis = new FileInputStream(f);

FileChannel fc = fis.getChannel();

ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page

PDFPrintPage pages = new PDFPrintPage(pdfFile);



// Create Print Job

PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

pjob.setJobName(f.getName());

Book book = new Book();

book.append(pages, pf, pdfFile.getNumPages());

pjob.setPageable(book);
另一个有趣的事实:PDF的混乱只发生在创建的iText PDF文档上。如果我尝试打印一些随机的其他PDF文件,它不会被损坏

你知道问题出在哪里吗?渲染会如何影响我的PDF?据我所知,这段代码的只读模式应该可以防止


编辑:我刚刚看到打印iText创建的PDF也会删除嵌入的字体。同样,在通过pdf渲染器进行渲染/打印之前,此操作非常有效。(字体也显示在PDF属性中,等等)

也许iText正在创建与渲染器不兼容的PDF文件?你检查过它创建的PDF版本了吗?也许可以指定一个旧版本?

我认为这不是问题所在。我试图打印的所有文件都有PDF-1.4版本。