gpt4 book ai didi

java - 点数 -> 像素 iText (im)precision

转载 作者:行者123 更新时间:2023-12-04 04:46:36 27 4
gpt4 key购买 nike

好的,这是一些代码( pdfDocumentcom.itextpdf.text.Document ):

PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
cell.setFixedHeight(3f);
for (int i = 1; i < 100; i++)
{
table.addCell(cell);
}

pdfDocument.add(table);

根据我的计算(像素 = 点数/0.75f)3f 点在 96dpi(我的是)的屏幕上应该正好是 4 个像素。但是,当我使用上面的代码创建表格时,我会得到单元格 4 - 3 - 4 - 3 - 4 - 3 等的交替高度...

为什么会发生这种情况?我会理解我输入的值是缩放到 x.6 像素的值,所以每隔一段时间就会出现一个比其他单元高一个像素的单元格。

例如:

如果我将值减小到 2f,大多数单元格将高 2 个像素,但每 10 到 15 将是 3 像素高。

如果我将值增加到 4f,所有单元格都将是 5 个像素高,但每三个边框将厚一个像素。

另外,如果我确实使用 x.6 作为值,该值是否会四舍五入 (5.99 -> 6) 或舍入 (5.99 -> 5) 为整数?

由于 iText 只适用于点,我猜这是一个内部 PDF 的东西,。但我还是想知道。

我现在需要确切地知道一个单元格将被赋予多高的浮点值,以便我可以精确地预测整个表格或对象的高度,然后我可以将其计算到整个页面的组成中。如果我不可靠地知道,我就不可能做到。

有没有一种可靠的方法可以让我准确计算 pdf 版本的浮点值应该是多少 x 像素高?似乎我使用的公式不起作用,或者还有其他东西?

最佳答案

乍一看,表格行似乎有不同的高度:

Grid with 3f height at 100%

但是如果你放大,你会看到它们实际上具有相同的高度,例如1600% 时:

Grid with 3f height at 1600%

因此,您在 100% 处看到的效果只是 PDF 查看器的显示伪像。

如果您进一步查看页面内容,您会发现:

0.5 w
88.3 803 418.4 3 re
S
0.5 w
88.3 800 418.4 3 re
S
0.5 w
88.3 797 418.4 3 re
S
0.5 w
88.3 794 418.4 3 re
S
0.5 w
88.3 791 418.4 3 re
S
.
.
.
0.5 w
88.3 515 418.4 3 re
S
0.5 w
88.3 512 418.4 3 re
S
0.5 w
88.3 509 418.4 3 re
S

即 99 个矩形,每个高度为 3,垂直距离也为 3,线宽为 0.5。此外,没有转换或用户空间单位定义,因此这些维度的单位是 1/72"。

因此,本质上,PDF 内容准确地描述了您想要的内容,即每行高度为 3/72"的行表。

因此,任何显示不准确都是由于 PDF 查看器、显示设备或任何其他相关组件(例如图形驱动程序、操作系统显示抽象等)的限制造成的

关于java - 点数 -> 像素 iText (im)precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18078590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com