如何使用pdfbox获取字体大小

时间:2014-12-03 11:58:56

标签: pdfbox

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

1 个答案:

答案 0 :(得分:1)

  

有没有人知道TextPosition中的方法getFontSize是否总是返回一个

并不总是返回一个。

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

  • 字体选择运算符的字体大小参数 Tf
  • 由运营商 Tm ;
  • 设置的文字矩阵
  • 操作员设置的当前转换矩阵 cm ;
  • PDF页面的 UserUnit 设置。

最终文本大小是文本矩阵缩放的第一个值,再次由变换矩阵缩放,再按用户单位值缩放。

(实际上甚至还有一些因素。例如,如果一个人使用渲染模式2,填充和中风,对于一个虚假的粗体效果,这也会略微增加尺寸。)

TextPosition.getFontSize仅返回第一个值。

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

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

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

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

  

getFontSizeInPt有时会为相同大小的文本返回不同的值(我在相同段落中以相同的大小返回12和11的文本。

您可以与该问题分享PDF示例吗?如上所述,乍一看似乎还有其他可能不正确的影响。但是你的PDF也可能有些特别。