วิธีพิมพ์เพื่อบันทึกเป็น PDF จากบรรทัดคำสั่งด้วย Chrome หรือ Chromium


43

ฉันสามารถพิมพ์ไปยังปลายทาง "บันทึกเป็น PDF" จากบรรทัดคำสั่งด้วย Chrome หรือ Chromium ได้หรือไม่ ฉันต้องการแปลงไฟล์ html เป็น PDF โดยอัตโนมัติด้วยฟังก์ชันการทำงานในตัวของ Chrome


@golimar ไม่ใช่เครื่องพิมพ์เสมือน Chrome มีตัวเลือกในการส่งออกเป็น pdf
ipavlic

1
ฉันไม่เห็นสวิตช์ Chrome ในตัวสำหรับการบันทึกเป็น PDF
Karan

@ Karan เมื่อคุณไปที่Printนั่นควรจะมีSave to PDFปลายทางให้คุณเลือก มีการระบุไว้อย่างชัดเจนในหน้าสนับสนุนของ Google: support.google.com/chrome/bin/…
ipavlic

2
บางทีความคิดเห็นก่อนหน้าของฉันอาจไม่ชัดเจน คุณต้องการที่จะรู้วิธีการทำสิ่งนี้จากบรรทัดคำสั่งและสิ่งที่ฉันอยากจะบอกคือ Chrome / Chromium ดูเหมือนจะไม่มีสวิตช์บรรทัด / params บรรทัดคำสั่งทำเช่นนี้แม้ว่าฉันรู้ว่าคุณสามารถทำได้จาก UI คุณจะต้องหาวิธีในการทริกเกอร์ตัวเลือกบันทึกเป็นโดยการส่งการคลิกเมาส์หรือการกดแป้น
Karan

คำตอบ:


11

แทนที่จะเรียกทั้งเว็บเบราว์เซอร์ทำไมไม่ใช้เอ็นจินการเรนเดอร์ HTML เพื่อทำงานเท่านั้น ใช้wkhtmltopdfเพื่อทำการแปลง

wktohtml

คุณยังสามารถแปลงเว็บไซต์ที่มีอยู่เป็น PDF

$ wkhtmltopdf http://google.com google.pdf

หมายเหตุ: ในทางเทคนิคเอนจิ้นการแสดงผลของ Google Chrome คือ Blink ซึ่งเป็นส่วนหนึ่งของ Webkit มีรหัสทั่วไป> 90% ระหว่าง Blink และ Webkit ดังนั้นคุณควรได้รับผลลัพธ์ที่คล้ายกัน


หมายเหตุจากการลองทำสิ่งนี้และทำให้สิ่งต่าง ๆ หายไปหรือขาดหายไป: แหล่งที่มาของ wkhtmltopdf มีแพตช์ QtWebkit ที่เปิดใช้งานคุณสมบัติที่สำคัญเช่นลิงก์ที่คลิกได้ แพ็คเกจของการแจกจ่ายของคุณน่าจะหายไปจากคุณสมบัติดังกล่าวถ้ามันแสดงรายการแพคเกจ qtwebkit ปกติของคุณเป็นการอ้างอิง การติดตั้ง wkhtmltopdf จากแหล่งที่มาใช้เวลา 3.7GiB ของดิสก์และบางชั่วโมง
Anko

33
-1 คำตอบนี้ไม่ตรงกับคำถาม wkhtmltox เป็นเครื่องมือที่ยอดเยี่ยม แต่ไม่ทำงานเช่นเดียวกับโครเมี่ยมหรือ firefox ในการส่งออกเป็น PDF
Carlos C Soto

@Anko ไม่แน่ใจว่าฉันเข้าใจ สิ่งที่ฉันคาดหวังจากการสร้าง wkhtmltopdf จากแหล่งที่มา?
VH-NZZ

2
ไม่สามารถแนะนำได้เช่นกันหากคุณมี CSS ที่ซับซ้อน wkhtmltopdf นั้นไร้ประโยชน์
MushyPeas

2
SVG ไม่ได้ถูกเรนเดอร์
Marco Sulla

37

Chrome ได้เริ่มต้นโปรแกรมหัวขาด

ด้วยสิ่งนี้เราสามารถสร้างไฟล์ PDF ได้ เช่นสำหรับ windows นำทาง commandline ของคุณไป

C:\Users\{{your_username}}\AppData\Local\Google\Chrome SxS\Application>

จากนั้นกดคำสั่ง:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com

เพียงแค่หัวขึ้นหากคุณมีอินสแตนซ์ที่มีอยู่ของ Chrome ทำงานบน Windows คำสั่งจะไม่ทำงาน ฆ่ากระบวนการ Chrome ทั้งหมดก่อนจากนั้นจะทำงาน อาจมีการตั้งค่าสถานะเพื่อหลีกเลี่ยงความไม่สะดวกนี้
John Leidegren

1
@JohnLeidegren (อย่างน้อย) ในฐานะของ Chrome สำหรับ Windows รุ่น 66.0.3359.139 (รุ่นเป็นทางการ) (64 บิต) ซึ่งทำงานได้โดยไม่ต้องฆ่ากระบวนการ Chrome ใด ๆ
naitsirhc

2
โปรดทราบว่าคุณสามารถใช้--user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Dataเพื่อทำงานภายใต้โปรไฟล์ Chrome ของผู้ใช้ของคุณ สิ่งนี้มีประโยชน์ตัวอย่างเช่นสำหรับการส่งออกเนื้อหาจากเว็บไซต์ที่ต้องการให้ผู้ใช้ลงชื่อเข้าใช้เนื่องจากคุกกี้เซสชันจะพร้อมใช้งาน
naitsirhc

@naitsirhc FYI ฉันได้พบว่าผู้เชิดหุ่นเป็นทางเลือกที่ดีมากสำหรับสิ่งที่บรรทัดคำสั่งถ้าคุณพยายามทำอะไรที่ซับซ้อนกว่านี้ มันมี API ที่ดีสำหรับโครเมียมระยะไกลในการทำงานต่าง ๆ นอกจากนี้ยังจัดการรุ่นสำหรับคุณ ดีมาก.
John Leidegren

SVG แสดงผลไม่ถูกต้อง
Marco Sulla

17

คุณต้องใช้ Google Chrome / Chromium 59 หรือรุ่นที่ใหม่กว่า & ใช้ได้เฉพาะกับผู้ใช้ MAC OS และ Linux

* * * * ผู้ใช้ Windows ยังคงต้องรอจนถึงรุ่น 60 * * * *

คำสั่ง:

$ google-chrome --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

$ chromium-browser --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

การอ้างอิง: https://developers.google.com/web/updates/2017/04/headless-chrome

แก้ไข: Google Chrome / Chromium 60 ได้เปิดตัวสำหรับผู้ใช้ windows

การใช้คำสั่งใน CMD:

C:\Program Files\Google\Chrome\Application> chrome.exe --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

การตั้งชื่อไฟล์ pdf ของคุณfile1.pdfจะถูกบันทึกไว้

"C: \ Program ไฟล์หรือ (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (รุ่นโครเมียม) \ file1.pdf"


--disable-gpuไม่ควรจำเป็นอีกต่อไปในเวอร์ชันล่าสุด
แหวนØ

สิ่งนี้สร้างผลลัพธ์ที่ดีขึ้น / สม่ำเสมอมากขึ้นกว่า wkhtmltopdf หรือ weasyprint
ierdna

3

https://github.com/fraserxu/electron-pdfได้รับการออกแบบมาอย่างแม่นยำเพื่อจุดประสงค์นี้

CLI มีลักษณะดังนี้: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf


ฉันติดตั้งแล้วมันแฮงค์อย่างไม่มีกำหนด ฉันลองelectron-pdf http://fraserxu.me test.pdfตามที่แนะนำในความช่วยเหลือ แต่ฉันก็ลอง gooogle.com ด้วย
Marco Sulla


0

ประสบความสำเร็จในการแปลงแบทช์ไฟล์ html โลคัลเป็น PDF ได้สำเร็จ - แบ่งปันวิธีการ

นำทางไปยังโฟลเดอร์ที่มีไฟล์ html ที่คุณต้องการแปลง ...

for %f in (*.html) do (
start /wait chrome --headless --disable-gpu --print-to-pdf="C:/[DESTINATION FOLDER PATH]%f.pdf" "C:/[SOURCE HTML FILE FOLDER PATH -- ALSO CURRENT FOLDER]%f"
)

หมายเหตุ - ต้องใช้ฟอร์เวิร์ดสแลชเพื่อหลีกเลี่ยงการปฏิเสธ% f ในพา ธ ไฟล์

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