【问题标题】:how to get font size using pdfbox如何使用pdfbox获取字体大小
【发布时间】:2014-12-04 00:47:55
【问题描述】:

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

【问题讨论】:

    标签: pdfbox


    【解决方案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 也可能有一些特别之处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2014-01-18
      • 1970-01-01
      • 2014-03-09
      • 2011-02-25
      相关资源
      最近更新 更多