对于使用了一些字体的给定PDF我怎么能找到(例如,在Acrobat Reader,使用的字体可以选择文件>属性>字体时看到的),其中某种字体在文档中使用(使用Adobe Acrobat 7 ,阅读器或免费的PDF工具)
只是要清楚一点:我不想找到某个文本上使用了哪种字体(我知道如何使用Acrobat 9 Professional做到这一点,请参阅此超级用户问题)。相反,我想找个地方使用特定的字体。
对于使用了一些字体的给定PDF我怎么能找到(例如,在Acrobat Reader,使用的字体可以选择文件>属性>字体时看到的),其中某种字体在文档中使用(使用Adobe Acrobat 7 ,阅读器或免费的PDF工具)
只是要清楚一点:我不想找到某个文本上使用了哪种字体(我知道如何使用Acrobat 9 Professional做到这一点,请参阅此超级用户问题)。相反,我想找个地方使用特定的字体。
Answers:
现在这个问题有点老了,但我是通过Google来到这里的,也许还有其他人。我的解决方案是创建一个错误显示字体信息的Preflight配置文件(Acrobat 9 Pro)。单击结果中的字体名称,然后跳到页面并突出显示文本。缺点是您获得了按页面而不是按字体名称组织的所有页面上所有字体的列表,但这为我提供了解决方案。
1)创建一个新的自定义预检规范,高级|预反射|选项|创建新的预检规范
2)给个人资料起个名字(例如,Fontfinder)
3)在对话框的左侧窗口中,单击“自定义检查”
4)在空白框下方对话框的右窗口中,单击加号以创建新的检查并包括在当前配置文件中
5)在组中单击“文本”,底部属性为“文本大小”。选择它,然后单击“添加”
6)现在下面的窗格具有更多选项。单击可能标记为“等于”的下拉选项,然后选择“小于”
7)在数字字段中输入一个较大的值。我输入了500
8)当选中“将报表触发为...”时,在对话框的左上角,输入“文本大小为500 pt或更小”,然后单击“确定”。窗格中应该有一个新的自定义检查,旁边有一个红叉。如果十字不是红色,请单击检查标签,然后在窗格下方选择“错误”
重复上述步骤进行另一次错误检查,但将500的选项更改为“大于或等于”,并检查触发报告为文本500 pt或更大
9)在“编辑配置文件”对话框中单击“确定”
10)在您的PDF上运行配置文件
我将字体设置为大字体时出错,以便所有错误均会在一个组中报告。第二个检查只是捕获大于该字体的字体。我想您可以检查pt大小50000并得到相同的结果。
Text
组,而是选择组,Font
然后Base Font Name
键入字体名称,效果更好。
这是一种方法,可以为每个单独的页面找出使用了哪些字体集。(对不起,我不知道如何使字体使用的位置意识比逐页显示更具体,而又不借助诸如callassoftware.com的pdfToolbox4或Enfocus的PitStop之类的扩展商业软件。)
此方法使用XPDF的pdffonts.exe
实用程序,这是GPL许可的免费软件:
现在,要显示文档第22页上使用的所有字体,请运行:
pdffonts.exe -f 22 -l 22 c:\path\to\some\pdf.pdf
要查看完整文档中使用的所有字体,只需运行:
pdffonts.exe c:\path\to\some\pdf.pdf
要获取22页PDF的每一页上使用的字体的列表,只需使用:
for /l %i in (1,1,22) do ^
(echo.PAGE %i & pdffonts -f %i -l %i c:\path\to\some\pdf.pdf)
pdffonts
而不是pdffonts.exe
,并且路径将使用正斜杠。
我已经为此使用了Enfocus的Pitstop Pro插件,但这并不便宜。
以下是仅使用开源软件(qpdf和pdffonts)在Linux或类似操作系统上完成此操作的脚本。
#!/usr/bin/ruby
# usage:
# find_page_where_font_is_used.rb file.pdf Nimbus
# Finds the first page in file.pdf where a font with a name containing Nimbus is used.
# Font names are matched in a case-insensitive way.
# Requires pdffonts, qpdf.
def die(message)
$stderr.print "error in find_page_where_font_is_used.rb: #{message}\n"
exit(-1)
end
def shell_out(command)
output = `#{command}`
result = $?
if !(result.success?) then
die("error in command #{command}")
end
return output.strip
end
def is_used_in_page_range(font,pdf,from,to)
table = shell_out("pdffonts -f #{from} -l #{to} #{pdf}")
if table=~/^[a-zA-Z0-9\+\-]*#{font}/i then
return true
else
return false
end
end
def search_for_font(font,pdf,from,to)
print "Searching pages #{from}-#{to}.\n"
if from==to then
return from
else
mid = (from+to)/2
if mid==to then mid=to-1 end
if is_used_in_page_range(font,pdf,from,mid) then
return search_for_font(font,pdf,from,mid)
else
return search_for_font(font,pdf,mid+1,to)
end
end
end
def main
pdf = ARGV[0]
font = ARGV[1] # can be a substring, e.g., Deja or Nimbus
n = shell_out("qpdf --show-npages #{pdf}").to_i
print "total pages = #{n}\n"
if !is_used_in_page_range(font,pdf,1,n) then
print "No font in #{pdf} has a name containing the string #{font} (case-insensitive).\n"
exit(0)
end
p = search_for_font(font,pdf,1,n)
print "The font first occurs on page #{p}.\nOutput of pdffonts for this page:\n"
print shell_out("pdffonts -f #{p} -l #{p} #{pdf}")+"\n"
end
main
如果您使用Adobe Acrobat,我在互联网上的某个地方找到了另一种有效的方法(我认为7点后可以使用)。
查找工具>编辑文档文本(我正在从Acrobat 10X中阅读,您的版本可能有所不同,但是您应该能够找到我在说的内容)
选中文本框后,右键单击并查看属性。在那里,它将说出所使用的字体。
编辑:找到了我的参考链接:http : //www.deepbluesky.com/blog/-/extracting-font-information-from-pdf-files_35/