[英]Convert PDFBoxs PDFont into java.awt.Font
我必须阅读PDF文件并从中提取一些信息。 因此,我正在使用PDFBox。 现在我有一个问题,我想通过在JPanel上绘制结果来显示结果。 但是要做到这一点,我需要基础字符串的字体信息。
我现在的问题是,我找不到将PDFont
转换为java.awt.Font
好方法。 我想通过使用PDFont
的字符串表示形式创建一些映射,并从中提取相关信息,例如
Arial -> new Font("Arial", Font.PLAIN, size);
Arial,Bold -> new Font("Arial", Font.BOLD, size);
//and so on
但这不起作用,因为每种字体的字符串表示形式都不同,例如
Times-Roman -> new Font("Times-Roman", Font.PLAIN, size);
Times-Bold -> new Font("Times-Roman", Font.BOLD, size);
有更好的方法进行转换吗?
这是不可能的。
引用此答案 :
请注意,大多数PDF嵌入了字体后,都不会包含完整的完整字体。 通常,它们仅包括文档中使用的字形的子集。
确实, org.apache.pdfbox.pdfviewer.PageDrawer
使用它们自己的org.apache.pdfbox.rendering.Glyph2D
类,通过创建java.awt.geom.GeneralPath
类来充当PDFBox
和java awt
之间的桥梁。对java.awt.Shape
的转换,该转换可以由java.awt.Graphics2D
绘制。
在此过程中未使用java.awt.Font
,寻找它是没有用的。
虽然,如果您对PDF文件很“幸运”并且实际上里面嵌入了整个字体,那么您可以获取所有PDFont类并阅读PDFont -> FontDescriptor -> FontFile2
并将其流输出到扩展名为.ttf
的文件中。 (一旦拥有.ttf
流,您.ttf
拥有java.awt.Font
类。)
这是我在看到这个遗弃的问题几小时后收集的,希望它能对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.