Jak wydrukować, aby zapisać jako plik PDF z wiersza polecenia w Chrome lub Chromium

43

Czy mogę drukować do miejsca docelowego „Zapisz jako PDF” z wiersza poleceń za pomocą Chrome lub Chromium? Chciałbym móc automatycznie konwertować pliki HTML do formatu PDF dzięki wbudowanej funkcjonalności Chrome.

ipavlic
źródło
@golimar To nie jest wirtualna drukarka. Chrome ma wbudowaną opcję eksportu do formatu pdf.
ipavlic
1
Nie widzę żadnych wbudowanych przełączników Chrome do zapisywania w formacie PDF.
Karan
@Karan Po przejściu na Printmiejsce powinno być Save to PDFdostępne miejsce docelowe do wyboru. Jest to również wyraźnie określone na stronie pomocy Google: support.google.com/chrome/bin/…
ipavlic
2
Być może mój poprzedni komentarz nie był jasny. Chciałeś wiedzieć, jak to zrobić z wiersza polecenia, a ja chciałem powiedzieć, że Chrome / Chromium wydaje się nie mieć przełączników / parametrów wiersza polecenia, aby to zrobić, chociaż wiem, że możesz to zrobić z interfejsu użytkownika. Musisz znaleźć sposób, aby uruchomić opcję Zapisz jako, być może wysyłając kliknięcia myszy lub naciśnięcia klawiszy.
Karan

Odpowiedzi:

11

Zamiast wywoływać całą przeglądarkę internetową, dlaczego nie użyć silnika renderującego HTML tylko do pracy? Użyj wkhtmltopdf, aby wykonać konwersję.

wktohtml

Możesz także przekonwertować istniejącą stronę internetową do formatu PDF

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

Uwaga: technicznie mechanizmem renderującym Google Chrome jest Blink, który jest rozwidleniem pakietu Webkit. Istnieje> 90% wspólnego kodu między Blink i Webkit, więc powinieneś uzyskać podobny wynik.

Hanxue
źródło
Uwaga: po wypróbowaniu tego i brakowaniu lub łamaniu subtelnych rzeczy: źródło wkhtmltopdf zawiera łatki QtWebkit, które umożliwiają ważne funkcje, takie jak klikalne linki. W pakiecie dystrybucji prawdopodobnie brakuje takich funkcji, jeśli podana jest zwykła paczka qtwebkit dystrybucji jako zależność. Instalacja wkhtmltopdf ze źródła zajmuje 3,7 GB dysku i kilka godzin.
Anko
34
-1 Ta odpowiedź nie odpowiada na pytanie, wkhtmltox jest świetnym narzędziem, ale nie działa tak dobrze jak chrome lub firefox przy eksportowaniu do PDF.
Carlos C Soto
@ Anko Nie jestem pewien, czy zrozumiałem. Czego mogę się spodziewać, budując wkhtmltopdf ze źródła?
VH-NZZ
2
też nie mogę go polecić, jeśli masz wyrafinowany CSS, wkhtmltopdf jest bezużyteczny.
MushyPeas
2
Pliki SVG nie są renderowane.
Marco Sulla
38

Chrome uruchomił program bezgłowy .

Dzięki temu możemy stworzyć pdf. np. w systemie Windows przejdź do linii poleceń

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

Następnie naciśnij polecenie:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com
Vikas
źródło
Tylko jedna głowa, jeśli masz jakieś wystąpienie Chrome działające w systemie Windows, polecenie nie będzie działać. Najpierw zabij wszystkie procesy Chrome, a potem zadziała. Może być flaga do obejścia tej niedogodności.
John Leidegren,
1
@JohnLeidegren (przynajmniej) od wersji Chrome dla systemu Windows w wersji 66.0.3359.139 (kompilacja oficjalna) (wersja 64-bitowa), działa to bez przerywania procesów Chrome.
naitsirhc
2
Pamiętaj, że możesz używać go --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Datado uruchamiania w profilu Chrome użytkownika. Jest to przydatne na przykład do eksportowania treści ze strony internetowej, która wymaga zalogowania użytkowników, ponieważ dostępne są sesyjne pliki cookie.
naitsirhc
@naitsirhc FYI, uważam, że lalkarz jest naprawdę dobrą alternatywą dla wiersza poleceń, jeśli próbujesz zrobić coś bardziej skomplikowanego. Ma ładny interfejs API do zdalnego chromowania do wykonywania różnych zadań, a także zarządza wersjami dla Ciebie. Bardzo dobrze.
John Leidegren,
Pliki SVG są renderowane niepoprawnie
Marco Sulla
17

Musisz używać Google Chrome / Chromium 59 lub nowszej wersji i jest dostępny tylko dla użytkowników MAC OS i Linux.

* Użytkownicy systemu Windows nadal muszą czekać przez pewien czas do wersji 60 *

Dowództwo :

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

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

EDYCJA: Google Chrome / Chromium 60 został wprowadzony dla użytkowników systemu Windows.

Użycie polecenia w CMD:

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

Twój plik z nazwą pliku pdf1.pdf zostanie zapisany w

„C: \ Program Files lub (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (wersja chrome) \ file1.pdf”

Rahul_Dange
źródło
--disable-gpunie powinno być już konieczne w najnowszych wersjach.
Pierścień Ø
tworzy to DUŻO lepsze / spójne wyjście niż wkhtmltopdf lub weasyprint
ierdna
4

https://github.com/fraserxu/electron-pdf został zaprojektowany właśnie do tego celu.

Interfejs CLI wygląda następująco: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf

Nate Good
źródło
Zainstalowałem go, zawiesza się bez końca. Próbowałem electron-pdf http://fraserxu.me test.pdfzgodnie z sugestią zawartą w pomocy, ale próbowałem też gooogle.com
Marco Sulla
0

Pomyślnie wykonano konwersję wsadową lokalnych plików HTML do formatu PDF - dzieląc się tym podejściem.

Przejdź do folderu zawierającego partię plików HTML, które chcesz przekonwertować ...

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

Uwaga - należy użyć ukośnika, aby uniknąć zanegowania% f na ścieżce pliku.

Zac
źródło