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