为什么尺寸打印错误?

Why are the dimensions printed the wrong size?

我想要一个 6 厘米(60 毫米)宽的矩形。

据我所知,iText 以点为单位工作,所以我将 60 毫米转换为点,得到 170 点。 (link to converter)

然而,当我在 A4 纸上打印出来并用尺子测量时,矩形的宽度为 5.7 厘米(57 毫米)。这是为什么?

下面是我使用的代码:

    private static byte[] CreateRectangle()
    {
        var stream = new MemoryStream();
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(stream));
        PdfCanvas canvas = new PdfCanvas(pdfDoc.AddNewPage());
        Color greenColor = new DeviceCmyk(1f, 0f, 1f, 0.176f);
        canvas.SetFillColor(greenColor);
        canvas.Rectangle(150, 600, 170, 56); /* 170 width, 56 height */
        canvas.FillStroke();
        pdfDoc.Close();

        return stream.ToArray();
    }

你的计算是正确的,6厘米大约是170分。

您的代码是正确的。

我用你的代码生成了 PDF。当我使用测量工具时,6 厘米被确认:

我打印了那个 PDF 并测量了打印输出,又是 6 厘米。

因此,要么你的尺子错了(我对此表示怀疑),要么你的打印位置不在 "Actual size",而是可能在 "Fit" 或 "Shrink oversized pages"(这里都对应于 96 %).