pdfdir icon indicating copy to clipboard operation
pdfdir copied to clipboard

还有打开会失败退出的pdf类型

Open vincentaxhe opened this issue 1 year ago • 3 comments

链接: https://pan.baidu.com/s/1JHQJhhiE109cG4I5GIjPMg?pwd=tm9q 提取码: tm9q

vincentaxhe avatar Jun 25 '24 00:06 vincentaxhe

试了下确实会退出,似乎还不是简单的读取类型报错,只能周末有空再看了

chroming avatar Jun 25 '24 14:06 chroming

我安装pdf.tocgen,用pdftocio -H perl-cookbook.pdf是能读取出来的,它用mupdf库,可以参考下,可能也能加印刷页,mupdf可能功能更全面些。但用它制作pdf大纲不太容易,有三个命令通过管道互传的,没你的工具直观。

vincentaxhe avatar Jun 26 '24 02:06 vincentaxhe

我使用了新的,读取不出来目录但没有失败,但写入时会失败。用'gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -o out.pdf perl-cookbook.pdf' 输出1.5标准的pdf,就能读取出目录也能写入,用pdfinfo -rawdates perl-cookbook.pdf看了下转换前的pdf是1.3标准的,看来操作pdf的库适应的pdf标准是有下限的,可以测试下适应标准的范围,当失败时提供类似'pdf标准不满足1.5'之类的信息,或者做得更多,内部把它转换成更新的pdf标准。

vincentaxhe avatar Jun 30 '24 15:06 vincentaxhe

感谢反馈以及提供建议,最新版本确实还没修复这个问题,只是读取失败不会退出了

需要时间研究下怎么修复

chroming avatar Jul 01 '24 14:07 chroming

目前发现的兼容性问题:pypdf在处理这个文件的annotations时未考虑ByteStringObject类型导致合并annotations失败 不过即使我改了这部分代码能正常导出了,但pdf本身图片却丢失了...

还需要研究下转换格式为什么能修复这个问题

chroming avatar Jul 01 '24 14:07 chroming

好了,能读取,能输出,也不用限制pdf版本,厉害了

vincentaxhe avatar Jul 15 '24 10:07 vincentaxhe

感谢反馈~

这个问题应该是某些pdf的annotations存在编码问题,pypdf库没有处理这种读取失败的情况导致拷贝pdf失败,我用桌面端pdf阅读软件也同样读取不了这些annotations。 现在的解决方法是如果遇到拷贝失败就fallback成不拷贝annotations的方法,避免这个问题。 至于为什么转换pdf版本之后可以了,我猜测是软件转换版本之后丢弃了这些存在问题的annotations,就可以正常处理了。

chroming avatar Jul 15 '24 13:07 chroming