通过将它们转换为轮廓形状来替换 PDF 中的所有字体字形
Replace all font glyphs in a PDF by converting them to outline shapes
我正在寻找一种方法将 'outline' 全部 text/fonts 放入 PDF 文件中,即将它们转换为曲线。
我更愿意这样做,而不必将 PDF 转换为 PostScript 来回转换。另外,我想使用可以从命令行自动执行的免费轻量级跨平台工具,例如 Ghostscript 或 MuPDF。
此 commit 向 Ghostscript pdfwrite 和 ps2write 设备添加了一个新开关 -dNoOutputFonts
,这将生成一个 PDF 文件(或 PostScript,取决于所选设备),其中已创建所有字形作为矢量,而不是文本。
您至少需要 9.15 版的 Ghostscript 才能获得此功能。请注意,PDF 文件几乎肯定会更大,并且 copy/paste/search 将(显然)不起作用。
是的,您可以使用 Ghostscript 来实现您想要的。
我。对于 9.14
以下的 Ghostscript 版本
您需要完成 2 个步骤:
将 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 中的所有图像也可能会根据 Ghostscript 内置默认值进行处理。这可能会导致不需要的副作用。可以通过添加更多命令行参数来避免这些副作用。
二. Ghostscript 版本 9.15 或更高版本
Ghostscript 9.15 版(2014 年 9 月发布)支持新的命令行参数:
-dNoOutputFonts
这将导致输出设备 pdfwrite
、ps2write
和 eps2write
"to 'flatten' glyphs into 'basic' marking operations (rather than writing fonts to the output)".
这意味着:可以避免为 9.15 GS 之前的版本描述的两个步骤。只需一条命令即可获得所需的结果:
gs -o file-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite file.pdf
注意: 与第一部分中所述相同的警告是正确的。如果您的 PDF 包含图像,上面的简单命令行可能会引入不需要的副作用。为了避免这些,您需要添加更具体的参数。
三。 Ghostscript 版本 9.54.0 (Windows 10)
我找到了一种方法,可以将所有字体完美地保留为矢量,没有任何视觉错误,并且只需两个打印步骤,在首次安装和正确配置 Ghostscript 之后。
(注意!您必须将 Ghostscript bin-/ 和 lib-文件夹添加到您的 windows PATH 才能让 Ghostscript 执行任何操作)
Instructions here
使用 Acrobat Reader 并使用 Microsoft PS Class 驱动程序打印包含矢量字体或其他矢量元素的 PDF 文件 到 YourFile.prn
文件。 (要安装此驱动程序 - 控制面板 - 设备 - 打印机和扫描仪 - 添加打印机或扫描仪 - 首先让 Windows 查找已连接的打印机,当它停止时select 一个选项 -- 我想要的打印机未列出 - 使用手动设置添加本地打印机或网络打印机 - 下一步 - 使用现有端口:> 文件:(打印到文件) - 下一步 - Microsoft:Microsoft PS Class 驱动程序 - 下一个)
打开命令提示符,导航到 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 具有例如当我在非 Adobe 设计软件中将它们导入为 PDF:s 时,一些字体字符出现了轻微但一致的错误。这些年来,我发现当矢量必须从一个软件保存到另一个软件时,EPS-文件格式是最可靠的格式之一。很多时候,使用另一个打印机驱动程序将 PDF 再次打印为 PDF 可能就足够了,或者使用 Ghostscript 更改单个文件格式,但并非总是如此。
我正在寻找一种方法将 'outline' 全部 text/fonts 放入 PDF 文件中,即将它们转换为曲线。
我更愿意这样做,而不必将 PDF 转换为 PostScript 来回转换。另外,我想使用可以从命令行自动执行的免费轻量级跨平台工具,例如 Ghostscript 或 MuPDF。
此 commit 向 Ghostscript pdfwrite 和 ps2write 设备添加了一个新开关 -dNoOutputFonts
,这将生成一个 PDF 文件(或 PostScript,取决于所选设备),其中已创建所有字形作为矢量,而不是文本。
您至少需要 9.15 版的 Ghostscript 才能获得此功能。请注意,PDF 文件几乎肯定会更大,并且 copy/paste/search 将(显然)不起作用。
是的,您可以使用 Ghostscript 来实现您想要的。
我。对于 9.14
以下的 Ghostscript 版本您需要完成 2 个步骤:
将 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 中的所有图像也可能会根据 Ghostscript 内置默认值进行处理。这可能会导致不需要的副作用。可以通过添加更多命令行参数来避免这些副作用。
二. Ghostscript 版本 9.15 或更高版本
Ghostscript 9.15 版(2014 年 9 月发布)支持新的命令行参数:
-dNoOutputFonts
这将导致输出设备 pdfwrite
、ps2write
和 eps2write
"to 'flatten' glyphs into 'basic' marking operations (rather than writing fonts to the output)".
这意味着:可以避免为 9.15 GS 之前的版本描述的两个步骤。只需一条命令即可获得所需的结果:
gs -o file-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite file.pdf
注意: 与第一部分中所述相同的警告是正确的。如果您的 PDF 包含图像,上面的简单命令行可能会引入不需要的副作用。为了避免这些,您需要添加更具体的参数。
三。 Ghostscript 版本 9.54.0 (Windows 10)
我找到了一种方法,可以将所有字体完美地保留为矢量,没有任何视觉错误,并且只需两个打印步骤,在首次安装和正确配置 Ghostscript 之后。
(注意!您必须将 Ghostscript bin-/ 和 lib-文件夹添加到您的 windows PATH 才能让 Ghostscript 执行任何操作) Instructions here
使用 Acrobat Reader 并使用 Microsoft PS Class 驱动程序打印包含矢量字体或其他矢量元素的 PDF 文件 到
YourFile.prn
文件。 (要安装此驱动程序 - 控制面板 - 设备 - 打印机和扫描仪 - 添加打印机或扫描仪 - 首先让 Windows 查找已连接的打印机,当它停止时select 一个选项 -- 我想要的打印机未列出 - 使用手动设置添加本地打印机或网络打印机 - 下一步 - 使用现有端口:> 文件:(打印到文件) - 下一步 - Microsoft:Microsoft PS Class 驱动程序 - 下一个)打开命令提示符,导航到
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 具有例如当我在非 Adobe 设计软件中将它们导入为 PDF:s 时,一些字体字符出现了轻微但一致的错误。这些年来,我发现当矢量必须从一个软件保存到另一个软件时,EPS-文件格式是最可靠的格式之一。很多时候,使用另一个打印机驱动程序将 PDF 再次打印为 PDF 可能就足够了,或者使用 Ghostscript 更改单个文件格式,但并非总是如此。