如何计算自动字体大小PDF字段的实际字体大小?

如何计算自动字体大小PDF字段的实际字体大小?,pdf,itext,pdfsharp,Pdf,Itext,Pdfsharp,我试图弄清楚,当PDF acro字段的字体大小设置为0(自动)时,如何计算该字段使用的实际字体大小。例如,“/ZaDb 0 Tf” 目前,我正在使用ActivePDF工具包解析PDF,但我希望从该工具包转移到iTextSharp LGPL 4.1.6或PdfSharp。我需要移植的最后一个剩余功能是自动大小字段的计算字体大小。ActivePDF方便地使用自动大小字段的计算大小填充FieldInfo.FontSize属性,但到目前为止,我还没有弄清楚ActivePDF工具包如何准确地为这些类型的字

我试图弄清楚,当PDF acro字段的字体大小设置为0(自动)时,如何计算该字段使用的实际字体大小。例如,“/ZaDb 0 Tf”

目前,我正在使用ActivePDF工具包解析PDF,但我希望从该工具包转移到iTextSharp LGPL 4.1.6或PdfSharp。我需要移植的最后一个剩余功能是自动大小字段的计算字体大小。ActivePDF方便地使用自动大小字段的计算大小填充FieldInfo.FontSize属性,但到目前为止,我还没有弄清楚ActivePDF工具包如何准确地为这些类型的字段执行计算

根据PDF规范,“大小的零值意味着字体应自动调整大小:其大小 应作为注释矩形高度的函数计算。”这是我几天来一直试图弄清楚的这句话的后半部分。我已经尝试使用规范中所述的注释矩形的大小,使用与字段的外观状态关联的边界框,以及我所能想到的介于两者之间的所有其他内容。有时我会得到与ActivePDF相同的结果,但有时我不会


如果您对此有任何指导,我们将不胜感激!我正试图让它适用于所有交互字段类型(按钮、文本、选项、签名)。

根据@mkl的回答,这个问题没有一个正确的答案。字体大小只能是近似值


对于遇到此问题的其他人,我建议查看iTextSharp LGPL 4.1.6代码库以了解此类逻辑(特别是可以在BaseField类上找到的GetAppearance方法)。

根据@mkl的回答,这个问题没有一个正确的答案。字体大小只能是近似值


对于遇到此问题的其他人,我建议查看iTextSharp LGPL 4.1.6代码库以了解此类逻辑(具体而言,可以在BaseField类上找到的GetAppearance方法)。

我不知道zapfdingbats是否是最好的示例(因为它用于复选框的复选标记)


我们实现了自己的PDF编辑器,对于文本字段,我们使用了如下内容:将表单字段的尺寸减去一些填充(例如2-5像素),然后使用表单字段中指定的字体并增加高度,直到它“击中”表单字段坐标的边界(-padding)。我们将此值“向下”舍入到下一个整数。然后我们使用这个字体大小来显示文本。(注意:这是简化版…

我不知道zapfdingbats是否是最好的示例(因为它用于复选框的复选标记)


我们实现了自己的PDF编辑器,对于文本字段,我们使用了如下内容:将表单字段的尺寸减去一些填充(例如2-5像素),然后使用表单字段中指定的字体并增加高度,直到它“击中”表单字段坐标的边界(-padding)。我们将此值“向下”舍入到下一个整数。然后我们使用这个字体大小来显示文本。(注意:这是简化版…

正如您自己发现的,这里的规范不是特别清楚。因此,没有单一正确的方法来计算尺寸。许多库试图在AdobeReader中模拟计算,要做到这一点,需要进行一些反复试验。@mkl-ah!非常有趣!这让我非常恼火,我可以发誓我在规格中遗漏了一些东西。如果是这样的话,那就更有意义了!非常感谢您抽出时间回复!!你救了我无数个小时的挣扎!正如您自己发现的,这里的规范不是特别清楚。因此,没有单一正确的方法来计算尺寸。许多库试图在AdobeReader中模拟计算,要做到这一点,需要进行一些反复试验。@mkl-ah!非常有趣!这让我非常恼火,我可以发誓我在规格中遗漏了一些东西。如果是这样的话,那就更有意义了!非常感谢您抽出时间回复!!你救了我无数个小时的挣扎!