Cara Mencetak untuk Menyimpan sebagai PDF dari baris perintah dengan Chrome atau Chromium

43

Dapatkah saya mencetak ke tujuan "Simpan sebagai PDF" dari baris perintah dengan Chrome atau Chromium? Saya ingin dapat secara otomatis mengonversi file html ke PDF dengan fungsi bawaan Chrome.

ipavlic
sumber
@ Galimar Ini bukan printer virtual. Chrome memiliki opsi bawaan untuk mengekspor ke pdf.
ipavlic
1
Saya tidak melihat sakelar Chrome bawaan untuk menyimpan sebagai PDF.
Karan
@Karan Ketika Anda pergi ke Printsana harus ada Save to PDFtujuan yang tersedia untuk Anda pilih. Ini juga dinyatakan dengan jelas di halaman dukungan Google: support.google.com/chrome/bin/…
ipavlic
2
Mungkin komentar saya sebelumnya tidak jelas. Anda ingin tahu cara melakukan ini dari baris perintah, dan apa yang ingin saya katakan adalah bahwa Chrome / Chromium tampaknya tidak memiliki sakelar / baris-baris perintah untuk melakukan ini, walaupun saya tahu Anda dapat melakukannya dari UI. Anda harus menemukan beberapa cara untuk memicu opsi Simpan Sebagai, mungkin dengan mengirimkan klik mouse atau pukulan tombol.
Karan

Jawaban:

11

Alih-alih memanggil seluruh browser web, mengapa tidak menggunakan mesin rendering HTML hanya untuk melakukan pekerjaan? Gunakan wkhtmltopdf untuk melakukan konversi.

wktohtml

Anda juga dapat mengonversi situs web yang ada ke PDF

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

Catatan: secara teknis mesin rendering Google Chrome adalah Blink, yang merupakan fork dari Webkit. Ada> 90% kode umum antara Blink dan Webkit, jadi Anda harus mendapatkan hasil yang serupa.

hanxue
sumber
Catatan dari mencoba ini dan mendapatkan hal-hal halus yang hilang atau rusak: Sumber wkhtmltopdf berisi tambalan QtWebkit yang memungkinkan fitur-fitur penting seperti tautan yang dapat diklik. Paket distribusi Anda kemungkinan tidak memiliki fitur-fitur seperti itu jika mencantumkan paket qtwebkit biasa dari distribusi Anda sebagai ketergantungan. Menginstal wkhtmltopdf dari sumber membutuhkan 3,7GiB disk dan beberapa jam.
Anko
34
-1 Jawaban ini tidak sesuai dengan pertanyaan, wkhtmltox adalah alat yang hebat tetapi tidak berkinerja sebaik krom atau firefox saat mengekspor ke PDF.
Carlos C Soto
@Anko Tidak yakin saya mengerti. Apa yang saya harapkan dengan membangun wkhtmltopdf dari sumber?
VH-NZZ
2
juga tidak dapat merekomendasikannya, jika Anda memiliki CSS canggih, wkhtmltopdf tidak berguna.
MushyPeas
2
SVG tidak dirender.
Marco Sulla
38

Chrome telah memulai program tanpa kepala .

Dengan itu, kita bisa membuat pdf. misal untuk windows arahkan perintah Anda ke

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

Kemudian tekan perintah:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com
Vara
sumber
Hanya kepala saja, jika Anda memiliki instance Chrome yang ada yang berjalan di Windows perintah tidak akan berfungsi. Bunuh semua proses Chrome terlebih dahulu, maka itu akan berhasil. Mungkin ada bendera untuk mengatasi ketidaknyamanan ini.
John Leidegren
1
@JohnLeidegren (setidaknya) pada Chrome untuk Windows Versi 66.0.3359.139 (Build Resmi) (64-bit), ini berfungsi tanpa membunuh proses Chrome.
naitsirhc
2
Perhatikan bahwa Anda dapat menggunakan --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Datauntuk berjalan di bawah profil Chrome pengguna Anda. Ini berguna, misalnya, untuk mengekspor konten dari situs web yang mengharuskan pengguna untuk masuk, karena cookie sesi tersedia.
naitsirhc
@naitsirhc FYI, saya telah menemukan dalang menjadi alternatif yang sangat bagus untuk hal-hal baris perintah, jika Anda mencoba melakukan sesuatu yang lebih rumit. Ini memiliki API yang bagus untuk chromium jarak jauh untuk melakukan berbagai tugas, juga mengelola versi untuk Anda. Sangat bagus.
John Leidegren
SVG dibuat secara tidak benar
Marco Sulla
17

Anda harus menggunakan Google Chrome / Chromium 59 atau versi yang lebih baru & Ini hanya tersedia untuk pengguna MAC OS dan Linux.

* Pengguna Windows masih harus menunggu beberapa saat hingga Versi 60 *

Perintah:

$ 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/

Referensi: https://developers.google.com/web/updates/2017/04/headless-chrome

EDIT: Google Chrome / Chromium 60 telah diluncurkan untuk pengguna windows.

Perintah penggunaan dalam CMD:

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

Penamaan file pdf Anda file1.pdf akan disimpan

"C: \ Program Files atau (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (versi chrome) \ file1.pdf"

Rahul_Dange
sumber
--disable-gpuseharusnya tidak diperlukan lagi di sebagian besar versi terbaru.
Dering Ø
ini menciptakan output yang JAUH lebih baik / konsisten daripada wkhtmltopdf atau weasyprint
ierdna
4

https://github.com/fraserxu/electron-pdf dirancang persis untuk tujuan ini.

CLI terlihat seperti ini: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf

Nate Bagus
sumber
Saya menginstalnya, hang tanpa batas tanpa output. Saya mencoba electron-pdf http://fraserxu.me test.pdfseperti yang disarankan dalam bantuan, tetapi saya juga mencoba gooogle.com
Marco Sulla
0

Berhasil melakukan konversi batch file html lokal ke PDF - berbagi pendekatan.

Arahkan ke folder yang berisi kumpulan file html yang ingin Anda konversi ...

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"
)

Catatan - harus menggunakan forward slash untuk menghindari meniadakan% f di jalur file.

Zac
sumber