【发布时间】:2022-01-22 18:20:05
【问题描述】:
我提取表单域的字体大小以获取有关其大小的信息(使用 iText)。这适用于大多数文档,但是对于某些文档,我的字体大小为 1,因为在外观上字体大小为 1。但是,如果我在几个不同的查看器中打开 PDF,则此文本字段的大小始终为 8。我想表单域应该根据其外观呈现?那么为什么 PDF 查看器使用默认外观而不是外观流中定义的字体大小?
更新:正如 MKL 提到的,我确实忘记考虑文本矩阵。 我确实为字体实现了自己的 RenderListener。有谁知道如何应用缩放?
public class PdfStreamFontExtractor implements RenderListener{
@Override
public void usedFont(DocumentFont font, float fontSize) {
this.font=font;
this.fontSize=fontSize;
}
@Override
public void renderText(TextRenderInfo renderInfo) {
//get scaling factor from textToUserSpaceTransformMatrix?
}
...
}
【问题讨论】:
-
关于您的更新 - 我们可以假设您使用哪个版本的 itext?
-
~2.1.7。 (几乎打开PDF ;-)
-
嗯,2.1.7 中没有
RenderListener;)。该类仅在 4.2.0 的添加中引入(即使它本身说@since 2.1.6)。我们可以假设您的parser包处于 4.2.0 的状态吗?当前的 OpenPdf 中不再存在RenderListener类... -
啊好吧不知道。是的,该课程确实存在。这有帮助吗?
-
好吧,看看我的答案的编辑... ;)
标签: pdf itext openpdf pdf-specification