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