gpt4 book ai didi

java - 将 PDFBoxs PDFont 转换为 java.awt.Font

转载 作者:行者123 更新时间:2023-11-30 11:20:16 24 4
gpt4 key购买 nike

我必须阅读 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);

有没有更好的方法来进行转换?

最佳答案

这是不可能的。

引自 this answer :

be aware that most PDFs do not include to full, complete fontface when they have a font embedded. Mostly they include just the subset of glyphs used in the document.

事实上,org.apache.pdfbox.pdfviewer.PageDrawer 使用他们自己的 org.apache.pdfbox.rendering.Glyph2D 类作为 之间的桥梁PDFBoxjava awt 通过创建一个 java.awt.geom.GeneralPath 类可以通过转换转换为 java.awt.Shape 又可以由 java.awt.Graphics2D 绘制。

过程中没有使用java.awt.Font,找也没用。

尽管如此,如果您对 PDF 文件“幸运”并且实际上嵌入了整个字体,那么您可以 grab all PDFont classes并读取 PDFont -> FontDescriptor -> FontFile2 并将该流输出到扩展名为 .ttf 的文件中。 (一旦你有了 .ttf 流,你就有了 java.awt.Font 类。)


这就是我在看到这个被遗弃的问题后几个小时内收集到的内容,希望它能对某人有所帮助。

关于java - 将 PDFBoxs PDFont 转换为 java.awt.Font,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22839206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com