Как узнать, ГДЕ конкретный шрифт используется в документе PDF

20

Для данного PDF, который использует несколько шрифтов (например, в Acrobat Reader, используемые шрифты можно увидеть, выбрав «Файлы»> «Свойства»> «Шрифты»), как узнать, где в документе используется определенный шрифт (с помощью Adobe Acrobat 7 , Reader или бесплатный инструмент PDF)

Просто чтобы прояснить: я не хочу выяснять, какой шрифт используется для определенного фрагмента текста (я знаю, как это сделать с помощью Acrobat 9 Professional, см. Этот вопрос для супер-пользователя ). Вместо этого я хочу найти, где используется определенный шрифт.

Rabarberski
источник
Не могли бы вы ответить на комментарий @ Arjan выше?
Мехпер С. Палавузлар
1
@Arjan & Mehper: Готово
Рабарберски,

Ответы:

15

Сейчас этот вопрос немного устарел, но я пришел сюда через Google, и кто-то еще мог бы. Мое решение состояло в том, чтобы создать профиль Preflight (Acrobat 9 Pro), который допустил ошибку в информации о шрифте. Нажав на имя шрифта в результатах, вы перейдете на страницу и выделите текст. Недостатком является то, что вы получаете список всех шрифтов на всех страницах, упорядоченный по странице, а не по имени шрифта, но это дало мне решение.

1) Создайте новый пользовательский профиль предварительной проверки Advanced | Preflight | Options | Create New Preflight Profile

2) Дайте профилю имя (скажем, Fontfinder)

3) В левом окне диалога нажмите «Пользовательские проверки»

4) В правом окне диалогового окна под пустым полем щелкните значок плюса, чтобы создать новую проверку и включить в текущий профиль.

5) Нажмите «текст» в группе, нижнее свойство «Размер текста». Выберите это и нажмите «Добавить»

6) Панель ниже теперь имеет больше опций. Нажмите на выпадающие опции, вероятно, с меткой «равно» и выберите «меньше чем»

7) Введите большое значение в поле Number. Я ввел 500

8) Слева вверху диалогового окна, когда отчет о проверке пожаров отображается как ... и введите что-то вроде размера текста 500 пт или меньше и нажмите OK. На панели должна быть новая пользовательская проверка с красным крестом рядом с ней. Если крестик не красный, нажмите на флажок и выберите «ошибка» под панелью

Повторите шаги, описанные выше, для другой проверки ошибок, но изменив параметр для 500 на «больше или равно», и отчет о проверке пожаров в виде текста 500 пт или более

9) Нажмите OK в диалоге редактирования профиля.

10) Запустите профиль в вашем PDF

Я установил для шрифта значение ошибки большого размера, чтобы все ошибки отображались в группе. Вторая проверка - просто перехватить любой шрифт большего размера. Я полагаю, вы можете проверить размер pt 50000 и получить тот же результат.

user164577
источник
5
Этот ответ очень помог. Однако на шаге 5 вместо выбора Textгруппы выберите Fontгруппу, а затем Base Font Nameвведите имя шрифта, что намного лучше.
Джесси Гуд
6

Вот способ, как узнать для каждой отдельной страницы, какой набор шрифтов используется на ней. (Извините, я не знаю способа сделать информацию о местонахождении для использования шрифтов более специфичной, чем постраничную, не прибегая к расширению коммерческого программного обеспечения, такого как pdfToolbox4 или Enfocus PitStop, от callassoftware.com .)

Этот метод использует утилиту 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
1

В отчете, созданном с помощью предварительной проверки Acrobax X, нажмите кнопку «Показать в оснастке» в левом нижнем углу окна отчета, затем в листинге окна нажмите «+ Обзор» и «+ страницы». Каждая страница pdf отображается в списке. нажмите + Page: 1, например, нажмите + Fonts, шрифты для страницы перечислены, щелкните шрифт, и текст, на котором он используется, отобразится в окне Preflight Snap View. Если вам нужно, вы можете использовать найти в acrobat, чтобы найти текст. Я обнаружил, что это не всегда на странице, о которой сообщают, но представление привязки точно показывает, на каком тексте используется определенный шрифт, отсюда необходимость использования обычного поиска текста.

Greg
источник
0

Возможно, это не относится к вам, если PDF изначально не был создан в Word, но если это было так, вы можете найти шрифты в Word с помощью расширенного поиска, как описано здесь .

Короче говоря:

  1. найти
  2. Дополнительно ...
  3. Формат -> Шрифт

и т.д. Вы можете решить все остальное.

Шауль говорит, что я поддерживаю Монику
источник
0

Ниже приведен скрипт, который выполняет это в Linux или аналогичных операционных системах, используя только программное обеспечение с открытым исходным кодом (qpdf и pdffonts).

#!/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/

newyuppie
источник
Как конкретно указано в моем вопросе, проблема, которую вы решаете, не мой вопрос.
Рабарберски