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