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

时间:2012-05-28 08:32:35

标签: pdf ghostscript postscript file-conversion

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

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

    “roundtripped.pdf”的输出 pdffonts_output_roundtrippedpdf

1 个答案:

答案 0 :(得分:4)

我只是在报道PS-> PDF转换...(我假设您的反之亦然的短语并不意味着指向'圆形 - 对同一文件[PDF-> PS-> PDF]进行“”转换,但任何 PS文件的转换的一般方向。这是正确的吗?)

首先,很可能你的ps2pdf只是一个shellcript,它在内部使用带有一些默认参数的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