0

这是 iText5 函数的一部分,首先获取页面高度和宽度,然后与输入参数进行比较。

Rectangle rectangle = page.getPageSize();
float pageHeight    = com.itextpdf.text.Utilities.pointsToInches(rectangle.getHeight());
float pageWidth     = com.itextpdf.text.Utilities.pointsToInches(rectangle.getWidth());

我通读了 iText7 API,找不到 pointsToInches 或类似的函数。看起来很简单,我不确定我是否错过了它或者它在 iText7 中掉线了。任何人都知道函数或如何将点转换为英寸。任何帮助表示赞赏。

4

1 回答 1

3

我知道这很旧,但除了@mkl 对这个问题的评论之外没有其他答案。默认的 UserUnit 是每英寸 72 个,但可以在 Page Dictionary 的 /UserUnit 条目中更改。

看来他们确实放弃了 inchesToPoints 方法,但直接实现是微不足道的:float points = inches * 72f;. Bruno 在 iText 5 here中解决了使用页面的 UserUnit 值的实现。将其适应 iText 7 是微不足道的,因为 PdfDictionary 在两者中具有相似的语法。

public static float inchesToPoints(float inches, PdfPage page) {
    PdfNumber userUnit = page.getPdfObject().getAsNumber(PdfName.USERUNIT);
    float userUnitValue = userUnits == null ? 72f : userUnits.floatValue();
    return inches * userUnitValue;
}

编辑:它确实说inches / userUnitValue,但它应该是inches * userUnitValue

于 2018-03-13T01:24:28.473 回答