การแปลง HTML เป็น PDF โดยใช้ยูทิลิตี้แปลงใน Mac OS X


7

ฉันพยายามแปลงไฟล์ HTML เป็นไฟล์ PDF ฉันกำลังมองหาโซลูชันอัตโนมัติเพื่อที่ฉันจะได้ไม่ต้องเปิดไฟล์ HTML แยกทีละไฟล์และแปลงเป็น PDF ใน Mac OSX convertสามารถใช้ยูทิลิตีเพื่อแปลงไฟล์ HTML เป็น PDF ฉันกำลังเผชิญกับปัญหาสองอย่าง

  1. convert ยูทิลิตี้ไม่ได้ใช้สไตล์ CSS กับเนื้อหา PDF ที่สร้างขึ้น
  2. AppleScript ของฉันสำหรับการแปลงเป็นชุดไม่ทำงาน

นี่คือ AppleScript ของฉัน:

on open input_documents
    repeat with this_document in input_documents

        if this_document is not document file then
            set this_document_path to POSIX path of this_document
            do shell script "/System/Library/Printers/Libraries/convert -f " & quoted form of this_document_path & " -o " & quoted form of this_document_path & ".pdf"
        end if
    end repeat
end open

ฉันใช้สคริปต์นี้เพื่อสร้าง. app จากนั้นลากโฟลเดอร์เอกสารไปยังไฟล์. app ที่สร้างขึ้น โปรดทราบว่ารูปภาพทั้งหมดที่เกี่ยวข้องกับรูปภาพจะอยู่ในไดเรกทอรีย่อย / โฟลเดอร์ย่อย โครงสร้างเอกสารของฉันมีลักษณะเช่นนี้:

/HTML
/HTML/Images/
/HTML/a.html
/HTML/b.html

ข้อเสนอแนะใด ๆ


@Mustafa คุณควรหลีกเลี่ยงการโพสต์ข้อความข้าม - ขอให้ผู้ดำเนินรายการทำการโอนย้ายให้คุณ
ออสติน

ฉันเชื่อว่า stackoverflow มีทัศนวิสัยมากกว่า stackexchange การทำซ้ำจะไม่เจ็บมันอาจใช้ได้สำหรับฉัน
มุสตาฟา

2
คุณดูtextutilคำสั่งหรือไม่? นอกจากนี้ยังรองรับ HTML

1
@ankoff ฉันทำ ไม่รองรับการแปลงไฟล์ html เป็น pdf รองรับ: txt, html, rtf, rtfd, doc, docx, wordml, odt หรือ webarchive
มุสตาฟา

คำตอบ:


16

ดูที่wkhtmltopdf - ยูทิลิตี้บรรทัดคำสั่งที่ใช้เอ็นจิ้นการเรนเดอร์ WebKit เพื่อสร้าง PDF จาก HTML ฉันพบว่ามันให้ผลลัพธ์ที่ดีกว่า คุณไม่ควรมีปัญหาในการรวมเข้ากับสคริปต์ปัจจุบันของคุณ


เพิ่งวิ่ง./wkhtmltopdf *.html *.pdfและใช้งานได้ดีโดยมีข้อยกเว้น มันสร้างไฟล์ "* .pdf" แทนที่จะแยกไฟล์สำหรับแต่ละ html คุณรู้หรือไม่ว่ายูทิลิตี้นี้มีการสนับสนุนในการสร้างไฟล์แยกกันหรือไม่? ขอบคุณมาก.
มุสตาฟา

4
สวัสดี Mustafa ลองใช้สิ่งที่ต้องการ (ในไดเรกทอรีของไฟล์ HTML) for f in *.html; do wkhtmltopdf $f "$f.pdf"; doneเพื่อวนไฟล์ในไดเรกทอรี

3
ด้วยการดัดแปลงเล็กน้อยเช่นfor f in *.html; do ./wkhtmltopdf "$f" "$f.pdf"มันทำงานได้อย่างสวยงาม ขอบคุณมาก.
มุสตาฟา

1

คุณได้พิจารณาการเขียนสคริปต์ AppleScript เพื่อเปิดไฟล์ HTML แต่ละไฟล์ในเว็บเบราว์เซอร์สคริปต์ (เช่น Safari) แล้วใช้คำสั่งพิมพ์มาตรฐานของเบราว์เซอร์เพื่อพิมพ์เป็นไฟล์ PDF หรือไม่


อืมฉันไม่เก่งกับ AppleScript :) อันที่จริงฉันเพิ่งทำ Hello World เหมือนกับสิ่งที่อยู่ใน AppleScript
มุสตาฟา

คำสั่งพิมพ์หน้าจอของ Chrome ในบางเว็บไซต์ (เช่นไซต์นี้) ไม่ได้สร้างแบบจำลองที่แน่นอนของ html บนเว็บไซต์ ดังนั้นโซลูชัน wkhtmltopdf ที่แม่นยำยิ่งขึ้นอาจจำเป็นขึ้นอยู่กับความต้องการ
Clayton Stanley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.