additional options in Chrome headless print-to-pdf

I need help one more time. I am trying to print a page to pdf using headless feature of the chrome. However, header and footer is present in the pdf. I found that this option as been implemented in Devtools. https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF However, i can't find how can i use these options in CLI. Also is it possible to invoke the Devtools from selenium? Additionally how can i invoke Page.PrintToPDF in Dev tools. I tried to run the command in Console. It is showing Page is undefined.

user2580925 asked Sep 6, 2017 at 14:06 user2580925 user2580925 859 2 2 gold badges 8 8 silver badges 14 14 bronze badges

First off do are you using these two flags from the command line? --headless \ # Runs Chrome in headless mode. --disable-gpu \ # Temporarily needed for now.

Commented Dec 5, 2017 at 21:24

Today, I came across a similar problem and found that currently the only solution seems to be to make use of the chrome-debugging-protocol. For a different question I wrote an answer on how to do that from the CLI: stackoverflow.com/a/51431779/1149404

Commented Jul 19, 2018 at 21:22

6 Answers 6

Add this CSS to the page your creating into a PDF to remove Chrome Headless's implemented Header and Footer.

@media print < @page < margin: 0; >body < margin: 1.6cm; >> 

You should format your command like below to create the 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" 
C:\chrome-win/chrome --headless --disable-gpu --print-to-pdf=C:\user\fileName.pdf --no-margins C:\Projects\index.html 

You can also test this functionality by navigating in your command line to the folder containing Chrome executable file, and running this command:

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/ 
63.7k 26 26 gold badges 140 140 silver badges 189 189 bronze badges answered Dec 5, 2017 at 21:37 353 8 8 silver badges 17 17 bronze badges you're messing --print-to-pdf and --print-topdf Commented May 23, 2018 at 8:55

This doesn't correctly solve the issue on multi-page PDFs - it removes the bottom margin on all but the last page, and the top margin on all but the first. I suppose there's no way to do this without breaking multi-page margins unless you use the DevTools API.

Commented Jul 3, 2018 at 4:27

codermonkeyfuel, this has worked for me to create multi-page PDFs without the original margin on any page with both the Chrome Headless Windows and Linux Library. Create a new issue or post more info below. I will help you resolve this issue.

Commented Jul 3, 2018 at 17:34

would you please clarify how to add the css file using CLI? I do not understand how to do this if the url I want to save is a web page not a local html file

Commented Jul 25, 2018 at 1:14

In the past, I have used Phantomjs to modify existing pages before turning them into PDF's, but I have never used Chrome Headless to do the same. I believe that you can inject the CSS i have listed above with puppeteer: github.com/GoogleChrome/puppeteer

Commented Jul 26, 2018 at 17:22

"/path/to/google-chrome" : This is the path of Google Chrome.

'--headless ' : Chrome browser in a headless environment without the full browser UI

'--run-all-compositor-stages-before-draw' : It Prevents the Pdf Creation Before all the data is rendered(After all data is rendered the pdf will be created).

'--virtual-time-budget = x : It Delays the Process of creation of Pdf, here x will be the miliseconds.

'--print-to-pdf' : This Flag creates the pdf of the given Url.

URL : The url of webpage.

PDF Page Formatting (Using CSS) Adding this(to css files):

 @media print < @page < margin: 0mm 0mm 0mm 0mm; size:8in 9.5in; >> 

The Above CSS code has no effect on the Webpage Rendering,But effect on the formatting of page in PDF only.