Як надрукувати, щоб зберегти як PDF з командного рядка з Chrome або Chromium


43

Чи можна друкувати до пункту призначення "Зберегти як PDF" з командного рядка з Chrome або Chromium? Я хотів би мати можливість автоматично перетворювати HTML-файли у PDF із вбудованою функціональністю Chrome.


@golimar Це не віртуальний принтер. У Chrome є вбудована опція експорту в PDF.
ipavlic

1
Я не бачу вбудованих перемикачів Chrome для збереження у форматі PDF.
Каран

@Karan Коли ви їдете Printтуди, вам має бути обраний Save to PDFпункт призначення. Це також чітко зазначено на сторінці підтримки Google: support.google.com/chrome/bin/…
ipavlic

2
Можливо, мій попередній коментар був не зрозумілий. Ви хотіли знати, як це зробити з командного рядка, і те, що я хотів сказати, це те, що Chrome / Chromium, здається, не має комутаторів / парам командного рядка для цього, хоча я знаю, що ви можете це зробити з інтерфейсу користувача. Вам потрібно буде знайти певний спосіб запустити параметр «Зберегти як», можливо, надіславши клацання миші або натискання клавіш.
Каран

Відповіді:


11

Замість того, щоб викликати цілий веб-браузер, чому б не використовувати механізм візуалізації HTML лише для виконання роботи? Використовуйте wkhtmltopdf для здійснення перетворення.

wktohtml

Ви також можете конвертувати існуючий веб-сайт у PDF

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

Примітка: технічно механізм візуалізації Google Chrome - це Blink, що є роздрібною частиною Webkit. Існує> 90% загального коду між Blink та Webkit, тому ви повинні отримати аналогічний результат.


Зверніть увагу на те, що спробувавши це і отримати тонкі речі відсутні або зламані: джерело wkhtmltopdf містить патчі QtWebkit, які дозволяють отримати важливі функції, такі як посилання, що можна натискати. У пакеті вашого дистрибутиву, ймовірно, відсутні такі функції, якщо він вказує звичайний пакет вашого qtwebkit як залежність. Встановлення wkhtmltopdf з джерела займає 3,7 Гбіт диска і кілька годин.
Анко

34
-1 Ця відповідь не відповідає на запитання, wkhtmltox - це чудовий інструмент, але він не працює так добре, як хром або firefox при експорті в PDF.
Карлос Сото

@Anko Не впевнений, що я зрозумів. Що я очікую, будуючи wkhtmltopdf з джерела?
VH-NZZ

2
Не можу також рекомендувати його, якщо у вас складний CSS wkhtmltopdf марний.
MushyPeas

2
SVG-файли не надаються.
Марко Сулла

38

Chrome запустив програму без голови .

За допомогою цього ми можемо створити PDF-файл. наприклад, для Windows перейдіть по командному рядку до

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, тоді це спрацює. Можливо, є прапор, щоб подолати цю незручність.
Джон Лейдегрен

1
@JohnLeidegren (принаймні), як для Chrome для Windows Версія 66.0.3359.139 (Офіційна збірка) (64-розрядна), це працює, не вбиваючи жодних процесів Chrome.
naitsirhc

2
Зауважте, що ви можете використовувати --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Dataдля запуску під профілем Chrome свого користувача. Це корисно, наприклад, для експорту вмісту з веб-сайту, який вимагає входу користувачів, оскільки доступні файли cookie сеансу.
naitsirhc

@naitsirhc FYI, я виявив, що ляльковик є дійсно хорошою альтернативою матеріалу командного рядка, якщо ви намагаєтесь зробити щось більш досконале. Він має приємний API для віддаленого хромування для виконання різних завдань, він також управляє версіями для вас. Дуже хороша.
Джон Лейдегрен

SVG надані неправильно
Marco Sulla

17

Ви повинні використовувати Google Chrome / Chromium 59 або новішу версію & доступний лише для користувачів ОС MAC та 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

EDIT: 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 Files або (x86) \ Google \ Chrome \ Application \ 60.0.3112.113 (хром-версія) \ file1.pdf"


--disable-gpuв останніх версіях більше не потрібно.
Кільце Ø

це створює набагато кращий / послідовний вихід, ніж wkhtmltopdf або weasyprint
ierdna

4

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 у шляху файлу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.