使用预定布局在纸上打印pdf文档

时间:2017-07-14 14:14:32

标签: pdf printing itext

我们需要在页面上打印一个pdf文档,其上有预定义的字段,基本上是一个公式,需要填写哪些字段。

我们正在使用iTextSharp来创建pdfs,我们使用absoulte定位基于公式字段定位的元素。例如,如果磁场从左边开始20毫米,从顶部开始20毫米,我将把数据从左边开始21毫米,从顶部开始21毫米,这样它就适合在那个场内。它在我的打印机上运行良好。

但我的问题是,不同的打印机会因为不同的边距,字体大小等而导致定位混乱......也许它会是相同的,我不知道不同的打印机会带来什么差异。

用户在打印pdf时选择实际尺寸选项是否很重要?

我需要知道我可以期待哪些困难,现在更好地了解它,然后等待客户在生产时致电。

1 个答案:

答案 0 :(得分:1)

您预期的问题存在。通过设置观众偏好可以避免这种情况。

请参阅How to prevent the resizing of pages in PDF?

您必须将打印比例设置为无:

writer.addViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);

如果您使用iText 5,那就是您需要的线路(writerPdfWriter的实例)。如果您使用的是iText 7,则可以像这样定义查看器首选项:

PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfViewerPreferences preferences = new PdfViewerPreferences();
preferences.setPrintScaling(PdfViewerPreferencesConstants.NONE);
pdf.getCatalog().setViewerPreferences(preferences);

请参阅Handling events; setting viewer preferences and printer properties

当然,最终用户总是可以否决他们的PDF查看器中的打印缩放比例,但这是他们的责任,而不是你的责任。