如何查找PDF文档中使用的特定字体


20

对于使用了一些字体的给定PDF我怎么能找到(例如,在Acrobat Reader,使用的字体可以选择文件>属性>字体时看到的),其中某种字体在文档中使用(使用Adobe Acrobat 7 ,阅读器或免费的PDF工具)

只是要清楚一点:我不想找到某个文本上使用了哪种字体(我知道如何使用Acrobat 9 Professional做到这一点,请参阅此超级用户问题)。相反,我想找个地方使用特定的字体。


您能否回应@Arjan的上述评论?
Mehper C. Palavuzlar 2011年

1
@Arjan&Mehper:完成
Rabarberski

Answers:


15

现在这个问题有点老了,但我是通过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并得到相同的结果。


5
这个答案很有帮助。但是,在第5步中,而不是选择Text组,而是选择组,Font然后Base Font Name键入字体名称,效果更好。
杰西·古德

6

这是一种方法,可以为每个单独的页面找出使用了哪些字体集。(对不起,我不知道如何使字体使用的位置意识比逐页显示更具体,而又不借助诸如callassoftware.com的pdfToolbox4或Enfocus的PitStop之类的扩展商业软件。)

此方法使用XPDF的pdffonts.exe实用程序,这是GPL许可的免费软件:

  1. 转到:http : //www.foolabs.com/xpdf/download.html并下载:ftp : //ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4-win32.zip
  2. 将* .zip文件解压缩到某个目录,然后找到其中包含的各种* .exe实用程序。
  3. 现在,要显示文档第22页上使用的所有字体,请运行:

    pdffonts.exe -f 22 -l 22 c:\path\to\some\pdf.pdf
    
  4. 要查看完整文档中使用的所有字体,只需运行:

    pdffonts.exe c:\path\to\some\pdf.pdf
    
  5. 要获取22页PDF的每一页上使用的字体的列表,只需使用:

    for /l %i in (1,1,22) do ^
          (echo.PAGE %i & pdffonts -f %i -l %i c:\path\to\some\pdf.pdf)
    

4
此方法在Linux / Mac上也适用,但是当然会调用二进制pdffonts而不是pdffonts.exe,并且路径将使用正斜杠。
ShreevatsaR 2014年


1

在Acrobax X Preflight创建的报告中,单击报告窗口左下角的“在快照中显示”按钮,然后在列表窗口中单击+“概述”和+“页面”,列出pdf的每一页,单击+ Page:例如,单击+ Fonts,将列出该页面的字体,单击一种字体,然后在Preflight Snap View窗口中显示用于该字体的文本。如果需要,可以使用acrobat中的find来查找文本。我发现它并不总是出现在报告的页面上,但是快照视图确实可以准确显示使用特定字体的文本,因此需要使用常规文本查找。


0

也许你无关,如果PDF最初不是在Word中创建的,但如果是,你可以找到使用高级搜索Word中的字体,描述在这里

简而言之:

  1. 高级...
  2. 格式->字体

等等。您可以解决其余的问题。


0

以下是仅使用开源软件(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

-1

如果您使用Adobe Acrobat,我在互联网上的某个地方找到了另一种有效的方法(我认为7点后可以使用)。

查找工具>编辑文档文本(我正在从Acrobat 10X中阅读,您的版本可能有所不同,但是您应该能够找到我在说的内容)

选中文本框后,右键单击并查看属性。在那里,它将说出所使用的字体。

编辑:找到了我的参考链接:http : //www.deepbluesky.com/blog/-/extracting-font-information-from-pdf-files_35/


正如我的问题中明确指出的那样,您要解决的问题不是我的问题。
Rabarberski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.