Pdf 确定postscript(.ps)文件中使用的字体

Pdf 确定postscript(.ps)文件中使用的字体,pdf,fonts,postscript,Pdf,Fonts,Postscript,给定具有以下标头的postscript文件 %!PS-Adobe-3.0 我想列出文件中使用的所有字体。输出不必是完美的,但我需要确保我得到了所有使用的字体的引用。我知道有不同类型的字体,postscript文件中可能嵌入字体,也可能不嵌入字体 我目前最好的办法是不敏感地grep/搜索单词的字体大小写,然后从那里开始 这会给我所有的字体参考吗 有没有更好的方法来实现这一点 我倾向于使用.NET/C进行开发,但任何解决方案都值得赞赏 谢谢 伯纳德 更新: lhf的回答解决了这个问题,由于格式

给定具有以下标头的postscript文件

%!PS-Adobe-3.0
我想列出文件中使用的所有字体。输出不必是完美的,但我需要确保我得到了所有使用的字体的引用。我知道有不同类型的字体,postscript文件中可能嵌入字体,也可能不嵌入字体

我目前最好的办法是不敏感地grep/搜索单词的字体大小写,然后从那里开始

  • 这会给我所有的字体参考吗
  • 有没有更好的方法来实现这一点
我倾向于使用.NET/C进行开发,但任何解决方案都值得赞赏

谢谢

伯纳德

更新: lhf的回答解决了这个问题,由于格式和长度限制,我根据他的建议添加了一个工作用法示例。

可以保存为.cmd文件并从命令提示符运行的Windows批处理文件:

REM Prerequisites: 
REM - GPL Ghostscript 8.64 @ http://pages.cs.wisc.edu/~ghost/doc/GPL/gpl864.htm
REM - pdffonts @ 3.02pl4 win32 download @ http://www.foolabs.com/xpdf/download.html

REM Add directories to path, contains ps2pdf and its dependency gswin32c.exe
SET PATH=%PATH%;C:\Program Files\gs\gs8.64\lib;C:\Program Files\gs\gs8.64\bin
REM Add pdffonts directory to path
SET PATH=%PATH%;c:\temp\path-toxpdf-3.02pl4-win32

REM Convert postscript file to pdf file
call ps2pdf input.ps temp.pdf

REM list pdf file fonts
call pdffonts temp.pdf
样本输出:

name                                 type              emb sub uni object ID 
------------------------------------ ----------------- --- --- --- ---------
DQRDAA+BCC128Medium-Identity-H       CID TrueType      yes yes no      21  0
MIAVUG+Verdana-Identity-H            CID TrueType      yes yes no      13  0
BKNKQN+Verdana-Identity-H            CID TrueType      yes yes no      10  0

将文件转换为pdf格式,然后使用pdf格式(如果有的话)


如果您对PS编程感兴趣,您可以运行模拟PS intepreter(在PS中),它会忽略除findfont之外的大多数内容。

如果PostScript文件符合,您可以查找以字符串开头的PostScript注释:

%%DocumentNeededResources:
%%DocumentSuppliedResources:
%%DocumentFonts:
%%DocumentNeededFonts:
%%DocumentSuppliedFonts:

请尝试以下正则表达式:

@“/.*?\sfindfont”


它会给你一些额外的东西,但你可以在那里玩。

谢谢。根据您的回答,我在问题描述中添加了我的解决方案。