Jak dowiedzieć się, GDZIE w dokumencie PDF użyto określonej czcionki

20

W przypadku danego pliku PDF, który korzysta z wielu czcionek (np. W programie Acrobat Reader, używane czcionki można zobaczyć po wybraniu opcji Pliki> Właściwości> Czcionki), w jaki sposób mogę dowiedzieć się, gdzie w dokumencie jest używana określona czcionka (używając Adobe Acrobat 7 , Reader lub bezpłatne narzędzie PDF)

Żeby było jasne: nie chcę znaleźć czcionki używanej w danym fragmencie tekstu (wiem, jak to zrobić za pomocą programu Acrobat 9 Professional, zobacz to pytanie superużytkownika ). Zamiast tego chcę dowiedzieć się, gdzie jest używana konkretna czcionka.

Rabarberski
źródło
Czy możesz odpowiedzieć na powyższy komentarz @ Arjan?
Mehper C. Palavuzlar,
1
@Arjan & Mehper: Gotowe
Rabarberski

Odpowiedzi:

15

To pytanie jest już trochę stare, ale przyszedłem tutaj przez Google i ktoś inny też może. Moim rozwiązaniem było utworzenie profilu inspekcji wstępnej (Acrobat 9 Pro), który nie zgadzał się z informacjami o czcionce. Kliknięcie nazwy czcionki w wynikach powoduje przejście do strony i wyróżnienie tekstu. Minusem jest to, że masz listę wszystkich czcionek na wszystkich stronach uporządkowanych według strony, a nie według nazwy czcionki, ale było to dla mnie rozwiązanie.

1) Utwórz nowy Niestandardowy profil inspekcji wstępnej Zaawansowane | Inspekcja wstępna | Opcje | Utwórz nowy profil inspekcji wstępnej

2) Nadaj profilowi ​​nazwę (powiedzmy Fontfinder)

3) W lewym oknie okna dialogowego kliknij „Kontrola niestandardowa”

4) W prawym oknie okna dialogowego poniżej pustego pola kliknij symbol plus, aby utworzyć nowy czek i dołączyć do bieżącego profilu

5) Kliknij „tekst” w grupie, dolna właściwość to „Rozmiar tekstu”. Wybierz to i kliknij „Dodaj”

6) Panel poniżej ma teraz więcej opcji. Kliknij opcje rozwijane prawdopodobnie oznaczone jako „równe” i wybierz „mniej niż”

7) Wprowadź dużą wartość w polu Liczba. Weszłam 500

8) U góry po lewej stronie okna dialogowego, gdy sprawdzanie pożarów zgłasza jako ... i wpisz tekst o wielkości 500 pt lub mniejszej i kliknij OK. W okienku powinno być nowe niestandardowe sprawdzenie z czerwonym krzyżem obok. Jeśli krzyżyk nie jest czerwony, kliknij etykietę wyboru i wybierz „błąd” pod oknem

Powtórz powyższe kroki, aby wykonać kolejną kontrolę błędów, ale zmieniając opcję 500 na „większą niż lub równą”, a raport Sprawdź pożary jako Tekst 500 pt lub większy

9) Kliknij OK w oknie dialogowym Edytuj profil

10) Uruchom profil na swoim pliku PDF

Ustawiłem czcionkę na błąd o dużym rozmiarze, aby wszystkie błędy były raportowane w grupie. Drugim sprawdzeniem jest po prostu złapanie dowolnej większej czcionki. Przypuszczam, że można sprawdzić rozmiar pt 50000 i uzyskać ten sam wynik.

użytkownik164577
źródło
5
Ta odpowiedź bardzo pomogła. Jednak w kroku 5 zamiast wybierać Textgrupę, wybierz Fontgrupę, a następnie Base Font Namewpisz nazwę czcionki, która działa o wiele ładniej.
Jesse Good
6

Oto sposób, aby dowiedzieć się, dla każdej strony, jaki zestaw czcionek jest na niej używany. (Przykro mi, nie znam sposobu, aby uczynić rozpoznawanie lokalizacji pod kątem użycia czcionek bardziej konkretnym niż w przypadku stron, bez uciekania się do rozbudowanego oprogramowania komercyjnego, takiego jak pdfToolbox4 callassoftware.com lub PitStop firmy Enfocus .)

Ta metoda korzysta z pdffonts.exenarzędzia XPDF , wolnego oprogramowania na licencji GPL:

  1. Przejdź do: http://www.foolabs.com/xpdf/download.html i pobierz: ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4-win32.zip .
  2. Wyodrębnij plik * .zip do jakiegoś katalogu i zlokalizuj zawarte w nim różne narzędzia * .exe.
  3. Teraz, aby wyświetlić wszystkie czcionki użyte na stronie 22 dokumentu, uruchom:

    pdffonts.exe -f 22 -l 22 c:\path\to\some\pdf.pdf
    
  4. Aby zobaczyć wszystkie czcionki użyte w całym dokumencie, po prostu uruchom:

    pdffonts.exe c:\path\to\some\pdf.pdf
    
  5. Aby uzyskać listę czcionek używanych na każdej stronie 22-stronicowego pliku PDF, wystarczy użyć:

    for /l %i in (1,1,22) do ^
          (echo.PAGE %i & pdffonts -f %i -l %i c:\path\to\some\pdf.pdf)
    
Kurt Pfeifle
źródło
4
Ta metoda działa również w systemie Linux / Mac, z tym wyjątkiem, że plik binarny jest wywoływany pdffontszamiast, pdffonts.exea ścieżka użyłaby ukośników do przodu.
ShreevatsaR
1

W raporcie utworzonym przez Acrobax X Preflight kliknij przycisk „Pokaż w Snap” w lewym dolnym rogu okna raportu, a następnie na liście okien kliknij + Przegląd i + Strony, Każda strona pdf jest wyświetlana , kliknij na przykład + Strona: 1, na przykład kliknij + Czcionki, czcionki na stronie zostaną wyświetlone, kliknij czcionkę, a tekst, który jest używany, wyświetli się w oknie Snap View View. Jeśli musisz, możesz znaleźć w programie acrobat, aby znaleźć tekst. Odkryłem, że nie zawsze jest to zgłaszana strona, ale widok przyciągania dokładnie pokazuje, w jakim tekście używana jest dana czcionka, stąd potrzeba użycia zwykłego wyszukiwania tekstu.

Greg
źródło
0

Być może nie jest to dla Ciebie istotne, jeśli plik PDF nie został pierwotnie utworzony w programie Word, ale jeśli tak, możesz znaleźć czcionki w programie Word przy użyciu wyszukiwania zaawansowanego, jak opisano tutaj .

W skrócie:

  1. Odnaleźć
  2. Zaawansowane...
  3. Format -> Czcionka

itd. Możesz wypracować resztę.

Shaul mówi, że popieram Monikę
źródło
0

Poniżej znajduje się skrypt, który osiąga to w systemie Linux lub podobnym systemie operacyjnym, używając tylko oprogramowania typu open source (qpdf i 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
Ben Crowell
źródło
-1

Gdzieś w Internecie znalazłem inną metodę, która działa, jeśli masz Adobe Acrobat (myślę, że działa po 7).

Znajdź narzędzia> Edytuj tekst dokumentu (czytam z mojego programu Acrobat 10X, może być inny w twojej wersji, ale powinieneś być w stanie znaleźć to, o czym mówię)

Po zaznaczeniu pola tekstowego kliknij prawym przyciskiem myszy i sprawdź właściwości. Tam powiesz użytą czcionkę.

edytowane: znalazłem link do mojej referencji: http://www.deepbluesky.com/blog/-/extracting-font-information-from-pdf-files_35/

newyuppie
źródło
Jak konkretnie stwierdzono w moim pytaniu, problem, który rozwiązujesz, nie jest moim pytaniem.
Rabarberski