正确地将pdf转换为ps,反之亦然

And*_*i F 5 pdf postscript file-conversion ghostscript

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

  1. 转换有什么问题?也许如果我使用"pdftops"和"ps2pdf",是否有一些需要更改的选项?
  2. 如果我创建.xml输出,有没有办法从.xml文件创建.pdf文件?

编辑:输出"pdffonts original.pdf" pdffonts_output_originalpdf

输出"roundtripped.pdf" pdffonts_output_roundtrippedpdf

Kur*_*fle 5

我只是介绍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)