2014-12-03 351 views
1

有谁知道如果TextPosition中的getFontSize方法总是返回一个,我应该只使用getFontSizeInPt来获取字体的大小? 我的问题是,getFontSizeInPt有时相同大小的文本返回的值不同(我得到了12和在相同尺寸相同的段落文本11返回。如何使用pdfbox获取字体大小

回答

1

有谁知道,如果该方法getFontSize在TextPosition总是返回一个

它并不总是返回一个

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

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

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

(实际上甚至有一些更多的因素。例如,如果一个使用渲染模式2,填写&中风,对于仿粗体效果,这略微增加了大小了。)

TextPosition.getFontSize返回第一个值只。

TextPosition.getFontSizeInPt返回类似于由矩阵缩放的第一个值。 (因为乍看似乎是在它的另一个影响。)

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

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

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

getFontSizeInPt有时相同大小的文本(我得到的文本在同款同尺寸12和11返回返回的值不同。

你能分享这一问题的样本PDF?如上所述,乍一看似乎还有其他影响可能是不正确的。但是,您的PDF也可能有些特殊之处。