为什么尺寸打印错误?
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 %).
我想要一个 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 %).