wmjordan / PDFPatcher

PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等
https://pdfpatcher.cnblogs.com/
9.05k stars 1.24k forks source link

字体嵌入不完全 #228

Closed strnghrs closed 5 days ago

strnghrs commented 2 weeks ago

Extract Pages.pdf 请简要描述你遇到的问题 1、使用附件中的PDF文件,用PDF补丁丁嵌入字体。 2、第1页没有问题,第2、3页在Arobat中仍然报告缺少字体。

其它 这个PDF的字体有点复杂,没有挂上去的字体属于Form,该Form是Annotation的一部分,而Annotation是Page的一部分,所以不知道是漏了Annotation中的字体还是漏了Form中的字体。

strnghrs commented 2 weeks ago

不知道PDF补丁丁检查字体的时候,是漏了检查Annotation中的字体还是漏了检查Form中的字体。

wmjordan commented 2 weeks ago

感谢您提供的测试样例。

之前手头上没有这样复杂的文档,因此也没有写代码来处理批注里表单的字体。 下个版本应该可以把这些字体也处理掉。

strnghrs commented 2 weeks ago

查了一下xpdf的源代码,它在列出PDF文件所用字体列表的时候(相当于Acrobat中的文件->属性->字体),是用了两个并列的循环,第1个循环扫描各Page,顺便扫描每个Page的Anno;第2个循环扫描各Form。可见它把Page和Form看成是并列的实体,互不包含。xpdf的源代码下载链接见下面链接,见其中xpdf-4.05\xpdf\pdffonts.cc的第132-211行,供参考。 https://dl.xpdfreader.com/xpdf-4.05.tar.gz

wmjordan commented 1 week ago

要找到用过的字体并不困难。 比较麻烦的,是要重写表单的流中 Tj 或 TJ 操作符的参数。为此,需要改造一下程序的结构。 下个版本可以处理附件的文档。

wmjordan commented 1 week ago

请到下载空间下载新的测试版,已经修复了无法替换注释和表单内字体的问题。

strnghrs commented 1 week ago

目前测试结果正常,有问题再来反馈。辛苦了,谢谢!

wmjordan commented 5 days ago

好的,如有其它问题请反馈哈。