如何在PDF中将Type 3字体转换为Type 1字体

如何在PDF中将Type 3字体转换为Type 1字体,pdf,fonts,adobe,Pdf,Fonts,Adobe,我有一个嵌入3型字体的PDF。如何将此类型3字体转换为类型1字体?您可能无法;类型3字体可以包含任何PostScript;类型1字体只能包含一个受限子集。自提出此问题以来已经很多年了,但我为遇到此问题的任何其他人(如我)发帖。最好的解决方案是使用设置重新生成PDF,以避免输入3种字体。例如,如果使用matplotlib制作图形,则可以按照以下说明操作: 如果无法重新生成PDF或需要太多时间,我还发现使用convert(可在imagemagick中找到)会有所帮助。正如其他人所说,您可能会丢失信息

我有一个嵌入3型字体的PDF。如何将此类型3字体转换为类型1字体?

您可能无法;类型3字体可以包含任何PostScript;类型1字体只能包含一个受限子集。

自提出此问题以来已经很多年了,但我为遇到此问题的任何其他人(如我)发帖。最好的解决方案是使用设置重新生成PDF,以避免输入3种字体。例如,如果使用matplotlib制作图形,则可以按照以下说明操作:


如果无法重新生成PDF或需要太多时间,我还发现使用
convert
(可在
imagemagick
中找到)会有所帮助。正如其他人所说,您可能会丢失信息,但这在大多数情况下都有效:
convert example.pdf example.pdf

其他答案建议将源文件重新生成为输出类型1而不是类型3字体。如果可行,这可能是最好的解决方案,但在某些情况下可能是不可能的(例如,如果源文件或生成程序因任何原因不可用)。请允许我提供另一种方法

如何“转换”类型3字体

我可以通过在AdobeAcrobatPro中打开文件,然后将文件打印到AdobePDF(AdobeStiller提供的虚拟打印机,专业套件的一部分)来“转换”PDF图形中的Type3字体。我使用的是Adobe Pro suite版本11(ca 2012),但较新的版本大概也可以这样做。这个动作听起来是循环的,但实际上它让你有机会强制将字体呈现到一个新的PDF中

我的版本中的默认输出设置足以生成一个在视觉上与源PDF无法区分的PDF,但是所有类型3字体都直接呈现为矢量图形(即输出PDF不包含任何类型的字体使用)。Acrobat打印对话框(至少在我的Windows版本中)还具有“属性”和“高级”按钮,用户可以在其中对输出进行各种高度详细的调整。其中包括要嵌入的类型1字体列表(以及部分嵌入的设置)、输出兼容性(我使用的是Acrobat6/PDF 1.5)、可选的图像下采样等


注意:此过程可能会导致PDF输出文件大得多。在我的例子中,使用Type3字体的违规文本只有四分之一页上的几十个标签,在转换过程中,PDF文件大小增加了大约2倍;但是,绝对大小仍在50kB以下,因此扩展对我来说并不重要。对于较大的文档或使用类型3字体的文本较多的文档,扩展可能更明显,因此YMMV.

但是类型3字体在转换为swf时显示为图像。在转换为swf时,有没有办法将类型3转换为类型1字体?。谢天谢地,Illustrator确实可以将其视为字体,但每个字符都是独立的。最好是再生。对于遇到此问题的python matplotlib用户,请参阅