有没有办法在 IText 中精确微调 PDF 在页面上的打印位置?
这是我的问题:看起来,由于打印机制造商或打印机使用年限等的不同,打印 PDF 文档时自然会出现微小的变化。这些差异通常非常小,但对于 2 台示例打印机(均为激光打印机且型号和制造商相同),打印机之间的文本位置差异可达 1-2 毫米以上。这对于大多数正常打印来说是没问题的,但是对于此任务,这超出了可接受的容差。
我对此的直觉 react 是提供一些能力来对打印发生的位置进行微调,从而能够解释打印机本身的任何变化。然而,发送到一台打印机的所有作业的打印看起来确实是一致的。
目前,我在 Adobe 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/