pdfbox - 如何使用pdfbox获取字体大小

标签 pdfbox

有谁知道 TextPosition 中的 getFontSize 方法是否总是返回 1,我应该只使用 getFontSizeInPt 来获取字体大小吗? 我遇到的问题是 getFontSizeInPt 有时会为相同大小的文本返回不同的值(对于同一段落中具有相同大小的文本,我得到 12 和 11 返回值。

最佳答案

Does anyone know if the method getFontSize in TextPosition always returns one

它并不总是返回一个。

请注意,在 PDF 页面内容描述中,有几个设置都会影响最终的文本大小:

  • 字体选择算子Tf的字体大小参数:
  • 由运算符Tm设置的文本矩阵;
  • 算子cm设置的当前变换矩阵;
  • PDF 页面的UserUnit 设置。

最终的文本大小是通过文本矩阵缩放的第一个值,通过转换矩阵再次缩放,然后通过用户单位值再次缩放。

(实际上甚至还有更多因素。例如,如果使用渲染模式 2、填充和描边,以获得人造粗体效果,这也会稍微增加尺寸。)

TextPosition.getFontSize 仅返回第一个值。

TextPosition.getFontSizeInPt 返回类似于矩阵缩放的第一个值。 (类似,因为乍一看似乎还有另一种影响。)

不同的 PDF 创建者以不同的方式利用这些影响:

  • 一些 PDF 创建者仅使用第一个值来设置字体大小,并且仅将矩阵用于不更改有效字体大小的操作,例如轮换。
  • 一些 PDF 创建者将第一个值设置为 1 并使用矩阵进行缩放。
  • 一些 PDF 创建者介于两者之间,同时使用第一个值和缩放操作。

因此,您的 PDF 似乎是由软件使用第二种方式创建的。

getFontSizeInPt sometimes returns different values for the same sized text (I got 12 and 11 return for text in the same paragraph with the same size.

您能否分享有关该问题的 PDF 示例?如上所述,乍一看似乎存在其他可能不正确的影响。但您的 PDF 也可能有一些特别之处。

关于pdfbox - 如何使用pdfbox获取字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27271240/

相关文章:

java - Lucene for Java 与 PDFBox 出现空指针异常

java - 将 pdf 内容放在 Apache PDFBox 中 Canvas 的中心

java - 将 PDFBox 迁移到 2.x 时出现 GetPages 错误

java - 提取嵌入在 pdf 中的图像的名称

java - 如何使用 PDFBOX 生成动态页数

java - 如何在 pdf 文件内容中搜索并附加到电子邮件

java - 如何在PDFBOX中绘制填充多边形?

java - PDFbox 预检 PDF/A-1b 检查在 java 版本 1.8 中无法正常工作

java - 为什么将页面大小调整为 7.31 x 11 尺寸后,某些内容会被裁剪掉?

Java:使用 PDFBox 将国家字符写入 PDF