ChromeまたはChromiumを使用してコマンドラインからPDFとして保存するために印刷する方法


40

ChromeまたはChromiumを使用してコマンドラインから「PDFとして保存」を出力先に印刷できますか?Chromeの組み込み機能を使用して、htmlファイルをPDFに自動的に変換できるようにしたいと思います。


@golimarこれは仮想プリンターではありません。Chromeには、pdfにエクスポートする組み込みオプションがあります。
ipavlic

1
PDFとして保存するための組み込みのChromeスイッチが表示されません。
カラン

@Karanあなたが行くとき、あなたが選択できる目的地PrintがあるはずSave to PDFです。また、Googleのサポートページにも明記されています:support.google.com/chrome/bin/…–
ipavlic

2
おそらく、私の以前のコメントは明確ではありませんでした。あなたはコマンドラインからこれを行う方法を知りたいと思っていましたが、私が言いたいのは、Chrome / Chromiumにはこれを行うコマンドラインスイッチ/パラメータがないようだということですが、UIから行うことはできますが。おそらくマウスクリックまたはキーストロークを送信することにより、[名前を付けて保存]オプションをトリガーする方法を見つける必要があります。
カラン

回答:


11

Webブラウザ全体を呼び出すのではなく、作業を行うためだけにHTMLレンダリングエンジンを使用してみませんか?使用wkhtmltopdfを変換を実行します。

wktohtml

既存のWebサイトをPDFに変換することもできます

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

注:技術的には、Google ChromeのレンダリングエンジンはWeblinkのフォークであるBlinkです。BlinkとWebkitの共通コードは90%を超えるため、同様の結果が得られます。


これを試してみて、微妙なものがないか壊れていることに注意してください:wkhtmltopdfのソースには、クリック可能なリンクなどの重要な機能を有効にするQtWebkitパッチが含まれています。ディストリビューションの通常のqtwebkitパッケージが依存関係としてリストされている場合、ディストリビューションのパッケージにはこのような機能が欠けている可能性があります。ソースからwkhtmltopdfをインストールするには、3.7GiBのディスクと数時間かかります。
アンコ

32
-1この回答は質問に対応していません。wkhtmltoxは優れたツールですが、PDFへのエクスポートでchromeやfirefoxほどうまく機能しません。
カルロスCソト

@Ankoわかりません。ソースからwkhtmltopdfをビルドすることで何が期待できますか?
VH-NZZ

2
あなたが洗練されたCSSを持っている場合、wkhtmltopdfは役に立ちません。
MushyPeas

2
SVGはレンダリングされません。
マルコスッラ

36

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

Windowsで実行されているChromeの既存のインスタンスがある場合、このコマンドは機能しません。最初にすべてのChromeプロセスを終了してから、それが機能します。この不便を回避するためのフラグがあるかもしれません。
ジョンライデグレン

@JohnLeidegren(少なくとも)Chrome for Windowsバージョン66.0.3359.139(公式ビルド)(64ビット)の時点で、これはChromeプロセスを殺すことなく機能します。
naitsirhc

1
を使用--user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Dataして、ユーザーのChromeプロファイルで実行できることに注意してください。これは、たとえば、セッションCookieを使用できるため、ユーザーのログインが必要なWebサイトからコンテンツをエクスポートする場合に便利です。
naitsirhc

@naitsirhc参考までに、操り人形師は、もっと手の込んだことをしようとするなら、コマンドラインの代わりに本当に良い代替物であることがわかりました。リモートChromiumにさまざまなタスクを実行するための優れたAPIがあり、バージョンも管理します。非常に素晴らしい。
ジョンライデグレン

SVGが正しくレンダリングされない
Marco Sulla

16

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

編集: Windowsユーザー向けにGoogle Chrome / Chromium 60が公開されました。

CMDでのコマンドの使用:

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

file1.pdfという名前のpdfファイルが保存されます

「C:\ Program Filesまたは(x86)\ Google \ Chrome \ Application \ 60.0.3112.113(chrome-version)\ file1.pdf」


--disable-gpu最新バージョンではもう必要ないはずです。
リングØSep

これにより、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試してみました
マルコ・スッラ


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.