【问题标题】:How to calculate font size from pdf in php如何在php中从pdf计算字体大小
【发布时间】:2012-03-08 22:32:04
【问题描述】:

我有相同的代码

q
0 0 283.465 170.079 re
W n
BT
1 0 0 0 k
/GS0 gs
/C2_0 1 Tf
10 0 0 10 143.4331 134.0855 Tm
<01F60218020B020802150210020F0208021E02100227>Tj
ET 
Q

如何计算 /C2_0 1 Tf 的字体大小?

如果可能,我需要示例。 我的英语不好,如果有问题,请见谅。

【问题讨论】:

标签: php pdf


【解决方案1】:

1.

/C2_0 1 Tf

此命令将字体设置为 1 pt。

2.

10 0 0 10 143.4331 134.0855 Tm

此命令将当前变换矩阵在 x 方向缩放 10 倍,在 y 方向缩放 10 倍,并将原点平移/移动到 x = 141,4331, y = 132.0855。所以基本上你的字体被缩放到在 (141,4331,132.0855) 处绘制的 10 pt

这是来自页面底部附近http://www.mactech.com/articles/mactech/Vol.15/15.09/PDFIntro/index.html 的示例。

3 0 obj
<<
/Length 168
>>
stream
BT
/F4 1 Tf
12 0 0 12 50.64 731.52 Tm
0 0 0 rg
BX /GS2 gs EX
0 Tc
0 Tw
[(This is 12-point )10(T)41(imes. )
    18(This sentence will appear near 
    the top of page one.)]TJ
ET
endstream
endobj

“流对象(长度为 168 字节)由 BT 和 ET 运算符括起来,用于开始文本和结束文本。Tf 命令选择我们的字体及其在用户空间单位中的大小,即 1。 “但我们不是使用 12 点类型吗?”你可能想知道。是的,我们是。这在下一行中指定,以 Tm 结尾(这是 set-text-matrix 运算符)。出于篇幅原因,我们坐标系变换和矩阵在这里就不多说了,但是如果你熟悉 PostScript 中矩阵的使用,同样的规则也适用于 PDF。变换矩阵由六个数字组成的数组给出,第一个和第四个其中分别决定 x 和 y 的缩放。我们在文本矩阵中看到,缩放因子是 12。这意味着我们将使用 12 点类型。矩阵中的最后两个数字(50.64 和 731.52)指定平移,以用户空间为单位。翻译的效果是将我们的文本放在页面上大约 10.1 英寸高,左边距为 0.7 英寸。”

【讨论】:

  • 是的,我正在考虑这个选项。但我对我们在用户空间中执行的所有计算这一事实感到困惑。文档说他仍然必须使用矩阵 cm 转换设备空间中的所有计算值,甚至原始 postscript 的所有示例的文档。我们只描述从用户空间到设备空间的坐标变换公式
  • 我认为是真的吗? :我们不需要将字体大小从用户空间转换为设备空间。因为我们使用以点 (pt) 为单位的字体大小值。总计:公式为:scaled matrx [Sx 0 0 Sy 0 0] = [1 0 0 1 0 0] * Tm [abcdef] realFontSize = fontSizeScaledFactor * Scaledy
  • 但是如何计算设备空间中字体大小的值呢?
  • 设置文本矩阵命令 (Tm) 将您的字体在两个方向上缩放 12 倍。所以你计算你需要使用'scaled matrx [Sx 0 0 Sy 0 0] = [1 0 0 1 0 0] * Tm [abcdef] realFontSize = fontSizeScaledFactor * Scaledy'等式的字体高度 - 没有其他方法.你可以在这里找到更多信息 - partners.adobe.com/public/developer/en/pdf/PDFReference.pdf
【解决方案2】:

你是这个意思吗?

font - /F1 12 Tf:应用 Tf 运算符,设置字体名称和字体大小。字体为资源中定义的 F1,大小为 12。

Introduction to PDF

【讨论】:

  • 这是我的 pdf 文档中的真实示例:/C2_0 1 Tf。字体大小=1??
  • 是的,这个数字是用于字体大小的。尝试增加它,字体会更大
  • 我想为设备空间找到真正的字体大小
  • 一切正常。我正在寻找这个问题的答案已经是第二周了。
  • 你读过这个讨论吗? stackoverflow.com/questions/4509613/…
猜你喜欢
  • 2021-03-07
  • 1970-01-01
  • 2014-12-06
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多