Java 点数->;像素iText(im)精度

Java 点数->;像素iText(im)精度,java,pdf,itext,pixels,points,Java,Pdf,Itext,Pixels,Points,好的,这里有一些代码(pdfDocument是一个com.itextpdf.text.Document): PdfPTable表=新的PdfPTable(1); PdfPCell cell=新的PdfPCell(); 单元设置固定高度(3f); 对于(int i=1;i6)还是四舍五入(5.99->5)为整数 由于iText只适用于点,我猜它是一个内部PDF的东西,。但我还是想知道 现在我需要精确地计算一个单元格的浮点值有多高,这样我就可以精确地预测整个表或对象的高度,这样我就可以将其计算到整个

好的,这里有一些代码(
pdfDocument
是一个
com.itextpdf.text.Document
):

PdfPTable表=新的PdfPTable(1);
PdfPCell cell=新的PdfPCell();
单元设置固定高度(3f);
对于(int i=1;i<100;i++)
{
表2.addCell(cell);
}
pdfDocument.add(表);
根据我的计算(像素=点/0.75f),屏幕上的3f点应该正好是4个像素,分辨率为96dpi(我就是这样)。然而,当我用上面的代码创建一个表时,我得到了单元格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像素高?我使用的公式似乎不起作用,或者可能还有其他原因?

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

但是如果你放大,你会看到它们实际上有相同的高度,例如,在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
i、 e.99个矩形,每个矩形的高度为3,垂直距离也为3,线宽为0.5。此外,没有转换或用户空间单位定义,因此这些维度的单位为1/72”

因此,本质上,PDF内容准确地描述了您想要的内容,一个包含行的表格,每个行的高度正好为3/72英寸


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

谢谢,似乎就是这样。。。然而,我需要调整很多相互依赖的高度,这让我很难。。。我不能正确地测量高度。。。你有什么想法或工具可以帮助我显示正确的高度吗?好吧,因为它似乎取决于显示PDF的计算机,所以很难说有正确的高度。基本上,我会根据理论创建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