web-dev-qa-db-ja.com

Chrome headless print-to-pdfの追加オプション

もう一度助けが必要です。クロムのヘッドレス機能を使用してページをPDFに印刷しようとしています。ただし、pdfにはヘッダーとフッターがあります。このオプションはDevtoolsに実装されていることがわかりました。

https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF

ただし、CLIでこれらのオプションを使用する方法を見つけることができません。また、SeleniumからDevtoolsを呼び出すことは可能ですか?

さらに、開発ツールでPage.PrintToPDFを呼び出すにはどうすればよいですか?コンソールでコマンドを実行しようとしました。ページが未定義であることを示しています。

19
user2580925

作成するページにこのCSSをPDFから削除してChrome Headlessの実装済みヘッダーとフッター。

CSS:

@media print {
  @page { margin: 0; }
  body { margin: 1.6cm; }
}

PDFを作成するには、以下のようにコマンドをフォーマットする必要があります。

"C:\PATH\TO\CHROME\EXECUTABLE\FILE", "--headless","--disable-gpu","--print-to-pdf=" + directory path to where you want the file to go followed by the desired file name/fileName.pdf,"--no-margins", "the path to the file you want turned into a pdf"

例1:

C:\chrome-win/chrome --headless --disable-gpu --print-to-pdf=C:\user\fileName.pdf --no-margins C:\Projects\index.html

例2:

コマンドラインでChrome実行可能ファイルを含むフォルダーに移動し、このコマンドを実行することにより、この機能をテストすることもできます。

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/

編集:タイプミスを修正

8
nuccio

"/path/to/google-chrome":これはGoogle Chromeのパスです。

'--headless ':Chrome完全なブラウザUIのない​​ヘッドレス環境のブラウザ

'--run-all-compositor-stages-before-draw':すべてのデータがレンダリングされる前にPDFの作成を防ぎます(すべてのデータがレンダリングされた後、pdfが作成されます)。

'--virtual-time-budget = x:Pdfの作成プロセスを遅らせます。ここで、xはミリ秒になります。

'--print-to-pdf':このフラグは、指定されたUrlのPDFを作成します。

URL:WebページのURL。

PDFページのフォーマット(CSSを使用)これを(CSSファイルに)追加:

 @media print {
            @page { margin: 0mm 0mm 0mm 0mm;
            size:8in 9.5in;
            }
            }

上記のCSSコードはWebページのレンダリングには影響しませんが、PDFのみのページのフォーマットに影響します。

1
Ayaz Ur Rashid