添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在使用字体之前,在创建新内容流之后添加页面资源的getFonts调用:

PDPage page = (PDPage)allPages.get( i );

PDRectangle pageSize = page.findMediaBox();

PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true,true);

page.getResources().getFonts(); // <<<<<<<<

PDFont font = PDType1Font.TIMES_ROMAN;

float fontSize = 15.0f;

contentStream.beginText();

错误本身:

错误在PDResources.addFont方法中,该方法是从PDPageContentStream.setFont调用的:

public String addFont(PDFont font)

return addFont(font, MapUtil.getNextUniqueKey( fonts, "F" ));

它使用fonts成员变量的当前内容来确定手头页面上新字体资源的唯一名称.不幸的是,此成员变量在此时仍然可以(并且在您的情况下)未初始化.这导致MapUtil.getNextUniqueKey(字体,“F”)调用始终返回F0.

然后在稍后的addFont(PDFont,String)调用期间隐式初始化font变量.

因此,如果遗憾的是,该页面上已存在名为F0的字体,则它将替换为新字体.

经过您的PDF测试,这正是您的案例中发生的事情.由于现有字体F0使用一些自定义编码,而替换字体使用标准字体,因此最初使用F0编写的文本现在看起来像乱码.

上面提到的解决方法隐式初始化了该成员变量,因此阻止了字体替换.

如果您计划在生产中使用PDFBox执行此任务,则可能需要报告该错误.

PS:正如上面的评论中所提到的,在继承资源的上下文中还有另一个要观察的错误.它也应该引起PDFBox开发的关注.

PPS:手头的问题已经在PDFBox中针对版本1.8.3和2.0.0进行了修复,参见PDFBOX-1753.

基本上,您在当前版本1.8.2中遇到了PDFBox错误.解决方法:在使用字体之前,在创建新内容流之后添加页面资源的getFonts调用:PDPage page = (PDPage)allPages.get( i );PDRectangle pageSize = page.findMediaBox();PDPageContentStream contentStream = new PDPageCon...
pdf 标题 命令行工具 pdf title是 pdf title Xtract [1]论文的Python实现,主要 使用 结构布局分析。 到目前为止,Docear已经发布了开源工具 ,该工具的功能与该脚本大致相同。 不同之处在于: 用 Java 编写 用途 PDF 盒jPod代替 pdf tohtml Simplier启发式 [1] Joeran Beel,Bela Gipp,Ammar Shaker和Nick Friedrich 。 。 在M. Lalmas中,J。Jose,A。Rauber,F。Sebastiani和I. Frommholz,数字图书馆研究与先进技术编辑,第14届欧洲数字图书馆会议论文集(ECDL-10),第6273卷,施普林格,计算机科学讲义(LNCS),第413-416页,格拉斯哥(英国),2010年9月。 PDF 文章的 标题 通常在 文件 名中,但通常不在 文件 名中。 接下来是检查PD
可移植文档格式 ( PDF ) 是一种 文件 格式,有助于以独立于应用程序软件、硬件和操作系统的方式呈现数据。 每个 PDF 文件 都包含对固定布局平面文档的描述,包括文本、字体、图形和显示它所需的其他信息。 有几个库可用于通过程序创建和操作 PDF 文档,例如 - Adobe PDF Library- 该库以 C++、.NET 和 Java 等语言提供 API, 使用 它我们可以编辑、查看打印和从 PDF 文档中 提取 文本。 Formatting Objects Proce. 之前想学习 使用 Java 操作 pdf 的时候看过了IText的文档。确实IText的文档很全,也有一个官网可以很方便的查找信息。但IText的开源协议为AGPL, 使用 者必须传染性的开源代码,商业 使用 必须付费获取商业许可。所以有一些风险。所以转而来学习 使用 PDFBOX 。现在 pdfbox 的文档并不是很多,列出如下链接以做参考。 https://iowiki.com/ pdfbox / pdfbox _quick_guide.html 一.加载已有的 pdf 文件 注意: PDFBOX 依赖commons-logging,f
要用 Java 读取 PDF 文件 ,可以 使用 Apache PDFBox 库。 PDFBox 是一个开源的 Java 库,可以用于创建、操作和 提取 PDF 文件 中的文本和图像等。 以下是读取 PDF 文件 的示例代码: ``` java import java .io.File; import java .io.IOException; import org.apache. pdfbox .pdmodel.PDDocument; import org.apache. pdfbox .text. PDF TextStripper; public class Read PDF File { public static void main(String[] args) { try { // 读取 PDF 文件 PDDocument document = PDDocument.load(new File("example. pdf ")); // 获取 PDF 文件 的内容 PDF TextStripper pdf Stripper = new PDF TextStripper(); String text = pdf Stripper.getText(document); // 输出 PDF 文件 的内容 System.out.println(text); // 关闭 PDF 文件 document.close(); } catch (IOException e) { e.printStackTrace(); 运行该程序后,将输出 PDF 文件 的内容。