java - IText如何调整pdf页面

标签 java pdf printing itext

有没有办法在 IText 中精确微调 PDF 在页面上的打印位置?

这是我的问题:看起来,由于打印机制造商或打印机使用年限等的不同,打印 PDF 文档时自然会出现微小的变​​化。这些差异通常非常小,但对于 2 台示例打印机(均为激光打印机且型号和制造商相同),打印机之间的文本位置差异可达 1-2 毫米以上。这对于大多数正常打印来说是没问题的,但是对于此任务,这超出了可接受的容差。

我对此的直觉 react 是提供一些能力来对打印发生的位置进行微调,从而能够解释打印机本身的任何变化。然而,发送到一台打印机的所有作业的打印看起来确实是一致的。

目前,我在 Adob​​e Acrobat Pro X 中创建了一个 PDF,其中包含表单字段,然后由 java 应用程序填写并发送到打印机。

感谢您的任何建议

最佳答案

我解决此问题的第一次尝试是尝试更改打印机驱动程序的默认设置......以某种方式。但我无法就此提供任何有用的指示。

如果您想调整 PDF,您可能应该更改页面边界以移动内容。例如,对于只有 MediaBox 的简单 PDF,此代码将第一页的内容向下移动 50 个单位。

PdfReader reader = new PdfReader("in.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("out.pdf"));
PdfDictionary pagedict = reader.getPageN(1);
PdfArray mediabox = pagedict.getAsArray(PdfName.MEDIABOX);
mediabox.set(1, new PdfNumber(mediabox.getAsNumber(1).intValue()+50));
mediabox.set(3, new PdfNumber(mediabox.getAsNumber(3).intValue()+50));
stamper.close();

您必须相应地调整任何其他框(CropBox、BleedBox 等)。查看 PDF 规范,了解有关不同页面边界的信息。

关于java - IText如何调整pdf页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644790/

相关文章:

java - Spring Boot中的多模块依赖管理问题

java - Selenium Java 对元素执行的单击不起作用

java - 如何在 map reduce 程序中解析 PDF 文件?

macos - cocoa 打印

java - 如何打印包含大量组件的 Java Swing UI?

printing - ZEBRA 打印机有时会打印空白页

java - 如何为 t :commandSortHeader in JSF? 应用样式类

android - 在 webview 中加载 PDF 文件

r - 删除R中制作的PDF文件

java - dynamoDB 中 putItemRequest 中预期的工作原理