วิธีค้นหา WHERE แบบอักษรเฉพาะที่ใช้ในเอกสาร PDF


20

สำหรับรูปแบบไฟล์ PDF ได้รับซึ่งใช้จำนวนของตัวอักษร (เช่นใน Acrobat Reader แบบอักษรที่ใช้สามารถมองเห็นได้เมื่อมีการเลือกไฟล์> Properties> Fonts) วิธีการที่ฉันสามารถหาที่ตัวอักษรบางอย่างที่ใช้ในเอกสาร (ใช้โปรแกรม Adobe Acrobat 7 , Reader หรือเครื่องมือ PDF ฟรี)

เพื่อให้ชัดเจน: ฉันไม่ต้องการค้นหาแบบอักษรที่ใช้กับข้อความบางส่วน (ฉันรู้วิธีการใช้ Acrobat 9 Professional ดูคำถามผู้ใช้ขั้นสูง ) แต่ฉันต้องการค้นหาที่ใช้แบบอักษรเฉพาะ


คุณช่วยตอบความคิดเห็นด้านบนของ @ Arjan ได้ไหม?
Mehper C. Palavuzlar

1
@Arjan & Mehper: Done
Rabarberski

คำตอบ:


15

ตอนนี้คำถามนี้ค่อนข้างเก่า แต่ฉันมาที่นี่ผ่าน Google และอาจมีคนอื่นด้วย โซลูชันของฉันคือการสร้างโปรไฟล์ Preflight (Acrobat 9 Pro) ซึ่งมีข้อผิดพลาดในข้อมูลตัวอักษร คลิกที่ชื่อตัวอักษรในผลลัพธ์จากนั้นข้ามไปที่หน้าและเน้นข้อความ ข้อเสียคือคุณจะได้รับรายชื่อแบบอักษรทั้งหมดในทุกหน้าจัดเรียงตามหน้าแทนที่จะเป็นชื่อตัวอักษร แต่เป็นวิธีแก้ปัญหาสำหรับฉัน

1) สร้างโปรไฟล์ preflight ที่กำหนดเองใหม่ขั้นสูง | Preflight | ตัวเลือก | สร้างโปรไฟล์ Preflight ใหม่

2) ตั้งชื่อโปรไฟล์ (Fontfinder พูด)

3) ในหน้าต่างด้านซ้ายของกล่องโต้ตอบคลิก "ตรวจสอบที่กำหนดเอง"

4) ในหน้าต่างด้านขวาของกล่องโต้ตอบด้านล่างช่องว่างให้คลิกที่เครื่องหมายบวกเพื่อสร้างการตรวจสอบใหม่และรวมไว้ในโปรไฟล์ปัจจุบัน

5) คลิก "ข้อความ" ในกลุ่มคุณสมบัติด้านล่างคือ "ขนาดข้อความ" เลือกรายการนี้และคลิก "เพิ่ม"

6) บานหน้าต่างด้านล่างตอนนี้มีตัวเลือกเพิ่มเติม คลิกที่ตัวเลือกแบบหล่นลงอาจมีข้อความว่า "เท่ากับ" และเลือก "น้อยกว่า"

7) ป้อนค่ามากในฟิลด์หมายเลข ฉันป้อน 500

8) ด้านบนซ้ายของกล่องโต้ตอบเมื่อตรวจสอบการรายงาน fires เป็น ... และป้อนบางอย่างเช่นขนาดตัวอักษร 500 pt หรือน้อยกว่าและคลิกตกลง ควรมีการตรวจสอบที่กำหนดเองใหม่ในบานหน้าต่างที่มีกากบาทสีแดงอยู่ด้านข้าง หากกากบาทไม่ใช่สีแดงให้คลิกที่เครื่องหมายกำกับและเลือก "ข้อผิดพลาด" ใต้บานหน้าต่าง

ทำซ้ำขั้นตอนด้านบนเพื่อตรวจสอบข้อผิดพลาดอื่น แต่เปลี่ยนตัวเลือกสำหรับ 500 เป็น "มากกว่าหรือเท่ากับ" และตรวจสอบรายงานการยิงเป็นข้อความ 500 pt หรือสูงกว่า

9) คลิกตกลงในกล่องโต้ตอบแก้ไขโปรไฟล์

10) เรียกใช้โปรไฟล์บน PDF ของคุณ

ฉันตั้งค่าฟอนต์เป็นข้อผิดพลาดบนขนาดพอยต์ขนาดใหญ่เพื่อให้ข้อผิดพลาดทั้งหมดจะรายงานในกลุ่ม การตรวจสอบครั้งที่สองเป็นการจับตัวอักษรที่ใหญ่กว่านั้น ฉันคิดว่าคุณสามารถตรวจสอบขนาด pt 50000 และมีผลลัพธ์เดียวกัน


5
คำตอบนี้ช่วยได้มาก อย่างไรก็ตามในขั้นตอนที่ 5 แทนที่จะเลือกTextกลุ่มให้เลือกFontกลุ่มแล้วBase Font Nameพิมพ์ชื่อของแบบอักษรซึ่งใช้งานได้ดีกว่ามาก
Jesse Good

6

ต่อไปนี้เป็นวิธีการค้นหาแต่ละหน้าซึ่งใช้ชุดของแบบอักษร (ขออภัยผมไม่ทราบวิธีที่จะทำให้สถานที่การรับรู้สำหรับการใช้งานแบบอักษรที่เฉพาะเจาะจงมากขึ้นกว่าหน้าฉลาดโดยไม่ต้อง resorting ขยายตัวซอฟต์แวร์เชิงพาณิชย์เช่น callassoftware.com ของpdfToolbox4หรือ Enfocus' PitStop .)

วิธีนี้ใช้pdffonts.exeยูทิลิตี้ของ XPDF ซึ่งเป็นซอฟต์แวร์เสรีที่ได้รับอนุญาตจาก 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. เพื่อรับรายการฟอนต์ที่ใช้ในแต่ละหน้าของ PDF ขนาด 22 หน้าเพียงใช้:

    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 ให้คลิกที่ปุ่ม "แสดงใน Snap" ที่มุมล่างซ้ายของหน้าต่างรายงานจากนั้นในรายการหน้าต่างให้คลิกที่ + ภาพรวมและหน้า + แต่ละหน้าของ pdf จะแสดงรายการ คลิกที่ + หน้า: 1 ตัวอย่างเช่นคลิก + แบบอักษรแบบอักษรของหน้าเว็บคลิกที่แบบอักษรและข้อความที่ใช้จะปรากฏในหน้าต่าง Preflight Snap View หากคุณมีคุณสามารถใช้ค้นหาใน acrobat เพื่อค้นหาข้อความ ฉันพบว่ามันไม่ได้อยู่ในหน้ารายงานเสมอไป แต่มุมมองสแน็ปแสดงอย่างถูกต้องว่าข้อความใดที่ใช้แบบอักษรเฉพาะบนดังนั้นจึงจำเป็นต้องใช้การค้นหาข้อความปกติ


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/


ตามที่ระบุไว้โดยเฉพาะในคำถามของฉันปัญหาที่คุณกำลังแก้ไขไม่ใช่คำถามของฉัน
Rabarberski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.