当前位置: 首页 > 知识库问答 >
问题:

如何在PDFBOX中获得正确的字体大小

斜博超
2023-03-14

PDF内容流

0.750000 0.000000 0.000000 -0.750000 0.000000 841.920044 cm
q
0.367090 0.000000 0.000000 0.367090 0.000000 0.000000 cm
0.000000 0.000000 0.000000 rg
0.000000 0.000000 0.000000 RG
0.410 w
BT
2 Tr
/F1 40.959999 Tf
1 0 0.000000 -1 847.679993 158.720001 Tm
[<3581>-10.000000<043B>-10.000000<18C5>-20.000000<4374>-10.000000<3635><084D>-20.000000<2195>-10.000000<477D>-10.000000<0B5E>-10.000000<1C3E>-10.000000<34F6>-10.000000<3E98>-20.000000<0003>] TJ
ET

/F1 40.959999 tf表示pdf使用F1字体,设置fontsize 40.959999。

我有一个关于实际字体大小是否为40.959999的问题。因为字体大小40太大了,但是在adobe arcrobat pro中显示的文本没有那么大。

TextPosition.getFontSize returns the first value only.

TextPosition.getFontSizeInPt returns something like the first value scaled by the matrices.

在此pdf中没有意义

共有1个答案

冉伯寅
2023-03-14
public class PDFCustomTextStripper extends PDFTextStripper{
   /**
     * textPositon - pdraphicsstate
   */
    private final Map<TextPosition, PDGraphicsState> textPositionPDGraphicsStates = new HashMap<>();

    @Override
    protected void processTextPosition(TextPosition text) {
        textPositionPDGraphicsStates.put(text, getGraphicsState());
     ......
    }
} 
 public float getActualFontSize() {
        final float fontSizeInPt = getTextPosition().getFontSizeInPt();
        try {
            return Math.min(Math.abs(getPdGraphicsState().getCurrentTransformationMatrix().getScaleX() * fontSizeInPt),Math.abs(getPdGraphicsState().getCurrentTransformationMatrix().getScaleY() * fontSizeInPt));
        } catch (Exception e) {
            return fontSizeInPt;
        }

    }

 类似资料:
  • 如果你需要更多的背景,我在下面补充了整个故事: 我试图替换PDF中的一些字符串。这将成功(只要所有文本都存储在一个令牌中)。为了保持格式,我喜欢重新居中的文本。据我所知,我可以通过得到新旧字符串的宽度,做一些琐碎的计算,并设置新的位置来做到这一点。 我在stackoverflow上找到了一些灵感,用来替换https://stackoverflow.com/a/36404377(是的,它有一些问题,

  • 问题内容: 我正在尝试使用pdfbox从pdf中提取包含所有信息的文本。我获得了我想要的所有信息,除了颜色。我尝试了多种获取fontcolor的方法(包括使用PDFBox获取文本颜色)。但是没有用。现在,我从pdfBox的PageDrawer类复制了代码。但是,RGB值也不正确。 我正在使用上面的代码。得到的值是r = 0,g = 0,b = 0,内部cosp对象值为[0.0],内部pd对象数组=

  • 我正在合并多个PDF与PDFBox的。 除了一个细节外,这一切都很好。在一些PDF查看器(Firefox、SumatraPDF、Chrome)中,页码显示不正确。对于exmaple,如果我合并三个文档,每个文档有三页,则生成的页码为: 而不是 受影响的查看者似乎是从PDF中的某些元数据中提取页码信息,而不是自己计算。 有没有办法用PDFBox解决这个问题?

  • 问题内容: 我在这里阅读一个问题,试图获取文本的字体大小。他们给出的答案是使用测量方法获得像素大小。我想要做的就是获取字体大小值,以便我可以更改它。 例如: 尽管这两个都可以,但此示例不起作用 唯一的问题是它仅更改一次大小。 问题答案: 仅抓住一个元素可能不起作用。如果由样式表定义,则将报告(空字符串)。 您应该使用window.getComputedStyle。

  • PDFBox的字体类PDFont中有一个名为getFontHeight的方法,听起来很简单。然而,我不太理解文档和参数代表什么。 这将获得字符的字体宽度。 参数: c-要获取宽度的字符代码。 偏移量-数组中的偏移量。长度 数据的长度。 返回:宽度为1000个文本空间单位,即333或777 在PDFBox中,这个方法是用来获取角色高度的正确方法吗?如果是的话,如何获取?字体高度和字体大小之间是否存在

  • 我没有得到线性回归问题的输出。这是一个简单的单变量线性回归问题。我使用了Kaggle的线性回归数据集, 从这里开始:随机数据集上的线性回归 它没有给出期望的输出。它给出了权重和偏差的值 它给出了输出: 权重和偏差得到nan值。