Як дізнатися, де в документі PDF використовується певний шрифт


20

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

Щоб було зрозуміло: я не хочу знайти, який шрифт використовується на певному фрагменті тексту (я знаю, як це зробити за допомогою Acrobat 9 Professional, див. Це питання щодо Super User ). Замість цього я хочу , щоб знайти , де використовується певний шрифт.


Не могли б ви відповісти на коментар @ Аряна вище?
Мехпер К. Палавузлар

1
@Arjan & Mehper: Готово
Рабарберські

Відповіді:


15

Зараз це питання давно, але я прийшов сюди через Google, і хтось ще може. Моє рішення полягало в тому, щоб створити профіль перед польотом (Acrobat 9 Pro), який помилявся в інформації про шрифт. Натискаючи на ім'я шрифту в результатах, потім переходить на сторінку та виділяє текст. Недоліком є ​​те, що ви отримуєте список усіх шрифтів на всіх сторінках, впорядкованих за сторінкою, а не за назвою шрифту, але це забезпечило для мене рішення.

1) Створіть новий спеціальний профіль перед польотом Розширений | Попередній політ | Опції | Створіть новий профіль перед польотом

2) Назвіть профіль імені (Fontfinder, скажімо)

3) У лівому вікні діалогового вікна натисніть "Спеціальні чеки"

4) У правому вікні діалогового вікна під порожнім полем натисніть символ плюс, щоб створити новий чек і включити його в поточний профіль

5) Клацніть «Текст» у групі, нижня властивість - «Розмір тексту». Виберіть це та натисніть "Додати"

6) У нижній частині області тепер є більше опцій. Клацніть на спадні параметри, ймовірно, позначені "рівним" та виберіть "менше"

7) Введіть велике значення в поле Число. Я вступив 500

8) У верхньому лівому куті діалогового вікна під час перевірки звітів про пожежі як ... та введіть щось на зразок тексту розміром 500 пт або менше та натисніть кнопку ОК. На панелі має бути нова спеціальна перевірка з червоним хрестом поруч. Якщо хрест не червоний, натисніть на галочку та виберіть "помилка" під панеллю

Повторіть описані вище кроки для іншої перевірки помилок, але змінивши параметр для 500 на "більший або рівний", і Звіт звітів про пожежі як текст 500 пт або більше

9) Клацніть OK у діалоговому вікні «Редагувати профіль»

10) Запустіть профіль у своєму PDF

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


5
Ця відповідь дуже допомогла. Однак на кроці 5 замість Textгрупи виберіть Fontгрупу, а потім Base Font Nameвведіть назву шрифту, що працює набагато приємніше.
Джессі Добрий

6

Ось спосіб дізнатися для кожної окремої сторінки, який набір шрифтів використовується на ній. (Вибачте, я не знаю, як зробити інформацію про розташування для використання шрифту більш специфічною, ніж на сторінках, не вдаючись до розширеного комерційного програмного забезпечення, наприклад, pdfToolbox4 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


1

У звіті, створеному програмою Acrobax X Preflight, натисніть кнопку "Показати в оснащенні" в нижньому лівому куті вікна звіту, потім у списку вікон натисніть + Огляд та + Сторінки, перелічена кожна сторінка pdf. , наприклад, натисніть + Сторінка: 1, наприклад, натисніть + Шрифти, шрифти для сторінки перераховані, натисніть на шрифт, і текст, на який він використовується, відобразиться у вікні попереднього огляду перед полетом. Якщо у вас є, ви можете використовувати find в акробаті, щоб знайти текст. Я виявив, що не завжди на сторінці повідомляється, але огляд оснащення точно показує, на якому тексті використовується певний шрифт, отже, необхідність використання звичайного пошуку тексту.


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/


Як конкретно сказано в моєму питанні, проблема, яку ви вирішуєте, - це не моє питання.
Рабарберські
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.