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



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字体,设置字体大小为40.959999。

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

我通过调用TextPosition.getFontSizeInPt()(使用PDFBOX)获得字体大小,它返回40.96。

我认为这是不对的。

谁能告诉我如何得到正确的字体大小?

我是否需要考虑'0.750000 0.000000 0.000000 -0.750000 0.000000 841.920044 cm'操作符?

如何使用pdfbox获取字体大小

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

在这个pdf中没有意义

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;
}
}

最新更新