使用iTextSharp进行标签打印

时间:2016-04-06 02:38:28

标签: pdf c#-4.0 itextsharp

我有一个逻辑来导出avery标签pdf。逻辑正确导出pdf标签,但是当我打印pdf时,我通过的页面大小测量(页面属性)与打印页面不匹配。

页面属性

multiprocessing

在应用之前,上述属性值首先等同于Width="48.5" Height="25.4" HorizontalGapWidth="0" VerticalGapHeight="0" PageMarginTop="21" PageMarginBottom="21" PageMarginLeft="8" PageMarginRight="8" PageSize="A4" LabelsPerRow="4" LabelRowsPerPage="10" 值。

转换为

point

逻辑

    private float mmToPoint(double mm)
    {
        return (float)((mm / 25.4) * 72);
    }

1 个答案:

答案 0 :(得分:2)

PDF文档可能具有非常准确的测量结果,但随后在打印过程中缩放页面会使这些测量结果变得紧张。这是一个常见问题:当您使用不同的打印机打印文档时,不同的打印机将使用不同的缩放因子和不同的结果。

如何避免这种情况?

在Adobe Reader的打印对话框中,您可以选择打印机的行为方式:

enter image description here

默认情况下,打印机会尝试“适应”页面上的内容,但由于并非每台打印机都可以物理使用整页大小(由于硬件限制),因此打印机很可能会缩小页面大小如果你使用“Fit”。

最好选择“实际尺寸”选项。使用此选项的缺点是某些内容可能会丢失,因为它太靠近打印机无法访问的区域中的页面边框,但优点是测量将被保留。

您可以通过告知文档不应缩放来以编程方式在文档中设置此选项:

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

有关观众偏好的详情,请参阅How to set initial view properties?