我正在寻找一种方法来'概述' PDF文件中的所有文字/字体,即将它们转换为曲线。
我更愿意这样做而无需将PDF转换为PostScript并返回。另外,我想使用可以从命令行自动执行的免费轻量级跨平台工具,例如Ghostscript或MuPDF。
答案 0 :(得分:26)
是的,你可以使用Ghostscript来实现你想要的目标。
您需要完成两个步骤:
将PDF转换为PostScript文件,但使用相对未知参数的副作用:它被称为-dNOCACHE
。这会将所有使用的字体转换为轮廓形状:
gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf
将PS转换回PDF(并且可能再次删除中间PS):
gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps
rm somepdf.ps
此方法长期不可靠,因为Ghostscript开发人员声明-dNOCACHE
可能在将来的版本中不存在。
注意: 生成的PDF很可能比原始PDF大。此外,如果没有其他命令行参数,原始PDF中的所有图像都可能会根据Ghostscript内置默认值进行处理。这可能导致不必要的副作用。通过添加更多命令行参数可以避免这些副作用。
Ghostscript版本9。15(2014年9月发布)支持新的命令行参数:
-dNoOutputFonts
这会导致输出设备pdfwrite
,ps2write
和eps2write
“将'变平'字形转换为'基本'标记操作(而不是将字体写入输出) “
这意味着:可以避免为9.15之前版本描述的两个步骤。只需一个命令就可以实现所需的结果:
gs -o file-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite file.pdf
注意: 同样的警告是正确的,如第一部分所述。如果您的PDF包含图像,可能会有简单的副作用上面的命令行。要避免这些,您需要添加更多特定参数。
答案 1 :(得分:7)
这个commit向Ghostscript pdfwrite和ps2write设备添加了一个新的开关-dNoOutputFonts
,它将生成一个PDF文件(或PostScript,取决于所选设备),其中所有字形都已创建为矢量而不是文字。
至少需要9.15版Ghostscript才能获得此功能。请注意,PDF文件几乎肯定会更大,复制/粘贴/搜索(显然)不起作用。
答案 2 :(得分:0)
我找到了一种方法,可以在首次安装和正确配置 Ghostscript 后,将所有字体完美地保留为矢量,而不会出现任何视觉错误,并且只需两个打印步骤。
(注意!您必须将 Ghostscript bin-/ 和 lib-文件夹添加到 Windows PATH 中才能让 Ghostscript 执行任何操作) Instructions here
使用 Acrobat Reader 并使用 Microsoft PS Class Driver 将包含基于矢量的字体或其他矢量元素的 PDF 文件打印到 YourFile.prn
文件。 (要安装此驱动程序——控制面板——设备——打印机和扫描仪——添加打印机或扫描仪——首先让 Windows 寻找连接的打印机,当它停止时选择一个选项——我想要的打印机未列出 - 添加手动设置的本地打印机或网络打印机 - 下一步 - 使用现有端口:> 文件:(打印到文件) - 下一步 - Microsoft:Microsoft PS 类驱动程序 - 下一步)
打开命令提示符,导航到 YourFile.prn
文件所在的文件夹并输入:"C:\Program Files\gs\gs9.54.0\bin\gswin64c.exe" -dNOPAUSE -dNOCACHE -dBATCH -sDEVICE=eps2write -sOutputFile=YourFile.eps YourFile.prn
如果您经常需要这样做,您还可以创建包含以下内容的 prn2eps.bat
文件:
"C:\Program Files\gs\gs9.54.0\bin\gswin64c.exe" -dNOPAUSE -dNOCACHE -dBATCH -sDEVICE=eps2write -sOutputFile=%1.eps %1.prn
要使用该 bat 文件,您只需键入:prn2eps YourFile
。
(注意!bat文件和Yourfile.prn必须在同一个目录下)
由于某种原因,最新的 Ghostscript ps2epsi
函数在 Windows 10 中不起作用,而 Adobe 制作了 PDF:s,例如当我将它们作为 PDF:s 导入到非 Adobe 设计软件中时,某些字体字符中存在轻微但一致的错误。多年来,我发现当矢量必须从一个软件保存到另一个软件时,EPS 文件格式是最可靠的格式之一。很多时候,仅使用另一个打印机驱动程序将 PDF 再次打印为 PDF 可能就足够了,或者使用 Ghostscript 更改单个文件格式,但并非总是如此。