好的,这是一些代码(pdfDocument
is a com.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),在 96dpi 的屏幕上(我的是),3f 点应该恰好是 4 个像素。但是,当我使用上面的代码创建表格时,我得到单元格 4 - 3 - 4 - 3 - 4 - 3 等的交替高度......
为什么会发生这种情况?我知道我输入的值是缩放到 x.6 像素的值,因此每隔一段时间就会出现一个比其他单元格高一个像素的单元格。
eg.:
如果我将值减小到 2f,则大多数单元格的高度将为 2 个像素,但每隔 10 个或 15 个单元格的高度将为 3 个像素。
如果我将值增加到 4f,所有单元格的高度将是 5 像素,但每三个边框将加厚 1 像素。
另外,如果我确实使用 x.6 作为值,该值是否会四舍五入 (5.99 -> 6) 或取整 (5.99 -> 5) 为整数?
由于 iText 只适用于点,我猜它是一个内部 PDF 的东西。但我还是想知道。
我现在需要确切地知道给定浮点值的单元格有多高,以便我可以精确预测整个表格或对象的高度,然后我可以将其计算到整个页面的组成中。如果我不可靠地知道,我就不可能做到。
有没有一种可靠的方法可以准确计算 pdf 版本的浮点值应该是多少,使其恰好为 x 像素高?看来我使用的公式不起作用,或者也许还有其他什么?