我有一个 PDF 文档(未加密),其中包含可编辑的表单字段。但是,这些字段的字体有问题:缺少一些字形,因此当我输入文本时会出现一些空白。
我怎么能够修改 PDF 文档— 我无法访问用于创建它的源文档 —使用其他字体替换损坏的字体?
有问题的字体是 Adobe 的卡利班常规版,我可以看到它嵌入在文档中。显示空白的字形包括“i”、“T”、“V”;也许还有其他我还没有发现的。
我还有另一份使用 Caliban 的类似文档,做正确显示,包括上面列出的损坏的字形。如果有人能告诉我如何从一个 PDF 中取出字体并将其替换到现有 PDF 中,这将是一个解决方案。
我目前正在使用:
答案1
非常困难代替嵌入到 PDF 中的字体。我不知道有任何言论自由(GPL 许可)或啤酒免费(免费)软件可以大概执行此操作(先取消嵌入字体,然后重新嵌入替代字体)。我只知道两种商业产品可以做到这一点:callassoftware.com 的pdfToolbox4和 Enfocus'进站(当然,肯定还有其他公司,但我不知道,这两家是这里的市场领导者)。
以下是使用免费软件从 PDF 中提取嵌入字体的方法。请注意,只有在字体许可证不禁止的情况下,您才可以合法地这样做。Ghostscript 源代码存储库中有一个名为的 PostScript 程序实用程序,extractFonts.ps
它可以在这里提供帮助:
- 安装 Ghostscript。使用最新版本 8.71。
- 下载文件 http://svn.ghostscript.com/ghostscript/trunk/gs/toolbin/extractFonts.ps
- 您可能想要阅读下载文件中包含的评论。
在 DOS 框中运行以下命令(cmd.exe):
gswin32c.exe ^ -q ^ -dNODISPLAY ^ C:/path/to/extractFonts.ps ^ -c "(c:/path/to/your-pdf-file.pdf) extractFonts quit"
- 请仔细记下命令可能发出的任何警告或错误消息。
- 成功提取的字体现在将使用与 PDF 中相同的名称存储在当前目录中。
(意识到提取这里的字体并不意味着移除PDF 中的字体,而是创建嵌入到 PDF 中的字体副本的字体文件。)
这是另一个构建块可能贡献力量以实现您的目标。您可能希望解压缩 PDF 的所有压缩部分/流,以便更轻松地使用简单的文本编辑器编辑文件。(警告:编辑 PDF 不是一项简单、直接的任务 --- 您的编辑工作将需要相当丰富的知识和对 PDF 文件格式内部结构的了解。)
toolbin
此技巧还使用了 Ghostscript 的Subversion 子目录中的实用程序。
- 下载文件http://svn.ghostscript.com/ghostscript/trunk/gs/toolbin/pdfinflt.ps
- 您可能想要阅读下载文件中的评论。
在 DOS 框中运行以下命令(cmd.exe):
gswin32c.exe ^ -- ^ c:/path/to/pdfinflt.ps ^ c:/path/to/your-pdf-file.pdf ^ c:/path/to/your-pdf-file-decompressed.pdf
此命令将尝试解压缩所有‘扁平’-压缩流。(如果你运气不好,你的文件还会包含使用其他压缩方法的流(例如'压缩'),该命令将保持不变。