And*_*i F 5 pdf postscript file-conversion ghostscript
我正在使用"pdftops"将.pdf文件转换为.ps文件,然后使用"ps2pdf"转换为反向过程(poppler-utils).问题是,当从.ps文件创建.pdf文件时,文本看起来没问题,但是当我尝试复制它时,字符非常奇怪(就像它们被破坏一样).我在其他文件上使用这些工具很长一段时间,它工作正常.我还尝试了"pdftohtml -xml"来创建.xml文件,文本正常(字符被正确提取).
编辑:输出"pdffonts original.pdf"

输出"roundtripped.pdf"

我只是介绍PS-> PDF转换...(我假设您的反义词并不意味着指向同一文件的“往返”转换[PDF-> PS- > PDF],但是任何 PS文件的通用转换方向是正确的吗?)
首先,很可能您ps2pdf只是一个shellscript,它在内部使用Ghostscript命令和一些默认参数来完成实际工作。ps2pdf更容易使用。Ghostscript有更多选择,但学习起来更加困难。 ps2pdf如果您使用了Ghostscript,则可以消除很多潜在的控制权。(您可以使用ps2pdf- 调整一些参数,但是现在您已经可以运行真正的Ghostscript命令了……)
其次,在不完全了解PS输入文件的条件的情况下,很难向您提供良好的建议:您的PS是否嵌入了它使用的字体?它们是哪种字体?等等
第三,Ghostscript获得了很多额外的功能和控制,并且在过去几年中在输出PDF时消除了一些错误或弱点。那么,您的系统上安装了哪个版本的Ghostscript?(请记住,ps2pdf调用了Ghostscript,如果没有本地安装的gs可执行文件,它将无法工作。)
无法从PDF复制文本的可能原因之一可能是最终使用并嵌入到PDF文件中的字体类型(和编码)。您可以告诉我们哪些字体详细信息? (尝试pdffonts your.pdf找出-pdffonts也是您提到的Poppler 实用程序的一部分。)
您可以尝试使用此(完整)Ghostscript命令进行PS-> PDF转换,并检查将其带到何处:
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-dHaveTrueTypes=true \
-dEmbedAllFonts=true \
-dSubsetFonts=false \
-c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" \
-f input.ps
Run Code Online (Sandbox Code Playgroud)