如何解决如何在 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 字体,设置 fontsize 40.959999。
我有一个关于实际字体大小是否为 40.959999 的问题。因为字体40太大了,但是adobe arcrobat pro显示的文字不是那么大。
我通过调用 TextPosition.getFontSizeInPt()
(使用 PDFBOX)获取字体大小,它返回 40.96。
我认为这是不正确的。
谁能告诉我如何获得正确的字体大小?
我需要考虑 '0.750000 0.000000 0.000000 -0.750000 0.000000 841.920044 cm'
运算符吗?
how to get font size using pdfbox
TextPosition.getFontSize returns the first value only.
TextPosition.getFontSizeInPt returns something like the first value scaled by the matrices.
在this 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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。