0% found this document useful (0 votes)
99 views

automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User

Uploaded by

kamarade
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User

Uploaded by

kamarade
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User

How to Print to Save as PDF from a command line with


Chrome or Chromium
Asked 11 years, 7 months ago Modified 3 years, 1 month ago Viewed 123k times

Can I print to destination "Save as PDF" from a command line with Chrome or Chromium? I'd
like to be able to automatically convert html files to PDF with Chrome's built-in functionality.
78
google-chrome automation chromium print-to-pdf

Share Improve this question Follow asked May 8, 2013 at 8:50


ipavlic
1,507 1 14 19

@golimar It is not a virtual printer. Chrome has a built-in option to export to pdf. – ipavlic May 8,
2013 at 19:23

1 I don't see any built-in Chrome switches for saving as PDF. – Karan May 10, 2013 at 1:07

@Karan When you go to Print there should be a Save to PDF destination available for you to
choose. It's also clearly stated on Google's support page: support.google.com/chrome/bin/… – ipavlic
May 10, 2013 at 8:56

2 Perhaps my previous comment wasn't clear. You wanted to know how to do this from the command
line, and what I wanted to say was that Chrome/Chromium seem to have no command-line
switches/params to do this, although I know you can do it from the UI. You'll need to find some way of
triggering the Save As option, perhaps by sending mouse clicks or key strokes. – Karan May 10, 2013 at
14:36

7 Answers Sorted by: Highest score (default)

Instead of calling up an entire web-browser, why not use the HTML rendering engine only to
do the work? Use wkhtmltopdf to perform the conversion.
4

https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 1/6
05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User

You can also convert an existing website to PDF

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

Note: technically Google Chrome's rendering engine is Blink, which is a fork of Webkit. There
is >90% of common code between Blink and Webkit, so you should get a similar result.

Share Improve this answer Follow answered Apr 4, 2014 at 8:07


hanxue
3,096 6 31 54

Note from having tried this and getting subtle things missing or broken: wkhtmltopdf's source
contains QtWebkit patches that enable important features such as clickable links. Your distribution's
package is likely to be missing such features if it lists your distribution's usual qtwebkit package as a
dependency. Installing wkhtmltopdf from source takes 3.7GiB of disk and some hours. – Anko Sep 18,
2015 at 10:41

64 -1 This answer does not correspond to the question, wkhtmltox is a great tool but it does not perform
as well as chrome or firefox on exporting to PDF. – Carlos C Soto Jun 16, 2016 at 0:25

11 can't recommend it either, if you have sophisticated CSS wkhtmltopdf is useless. – MushyPeas Mar 18,
2018 at 19:24

3 SVGs are not rendered. – Marco Sulla Mar 31, 2019 at 13:42

2 -1 wkhtmltopdf is severely lacking for CSS3 documents – arielnmz Mar 18, 2020 at 4:58

Chrome has started headless program.

With that, we can create a pdf. e.g. for windows navigate your commandline to
78
C:\Users\{{your_username}}\AppData\Local\Google\Chrome SxS\Application>

Then hit the command:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com

https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 2/6
05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User

Share Improve this answer Follow answered May 22, 2017 at 11:32
Vikas
964 1 7 7

Just a heads up, if you have any existing instance of Chrome running on Windows the command won't
work. Kill all Chrome processes first, then it will work. There might be a flag to work around this
inconvenience. – John Leidegren Feb 8, 2018 at 17:17

2 @JohnLeidegren (at least) as of Chrome for Windows Version 66.0.3359.139 (Official Build) (64-bit), this
works without killing any Chrome processes. – naitsirhc May 16, 2018 at 18:50

7 Note that you can use --user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User


Data to run under your user's Chrome profile. This is useful, for example, for exporting content from a
website that requires users to be logged in, since session cookies are available. – naitsirhc May 16, 2018
at 18:54

@naitsirhc FYI, I've found puppeteer to be a really good alternative to the command line stuff, if you
trying to do something more elaborate. It has a nice API to remote chromium to do various tasks, it
also manages versions for you. Very nice. – John Leidegren May 17, 2018 at 7:39

SVGs are rendered incorrectly – Marco Sulla Mar 31, 2019 at 13:42

You must be using Google Chrome / Chromium 59 or later version & it’s only available for
MAC OS and Linux users.
26
* Windows users still have to wait for some time till Version 60 *

Command :

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

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

EDIT : Google Chrome / Chromium 60 has been rolled out for windows users.

Command usage in CMD :

C:\Program Files\Google\Chrome\Application> chrome.exe --headless --disable-gpu --


print-to-pdf=file1.pdf http://www.example.com/

Your pdf file naming file1.pdf will be save in

"C:\Program Files or (x86)\Google\Chrome\Application\60.0.3112.113 (chrome-


version)\file1.pdf"

Share Improve this answer Follow edited Jan 4, 2019 at 14:25 answered Jul 13, 2017 at 6:50

https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 3/6
05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User
Rahul_Dange
439 1 5 10

1 --disable-gpu should not be necessary anymore in most recent versions. – Déjà vu Sep 11, 2017 at
6:47

1 this creates a MUCH better/consistent output than wkhtmltopdf or weasyprint – ierdna Oct 12, 2017 at
14:53

https://github.com/fraserxu/electron-pdf was designed exactly for this purpose.

The CLI looks like this: $ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf


4
Share Improve this answer Follow answered Apr 13, 2017 at 13:38
Nate Good
141 1

I installed it, it hangs indefinitively without any output. I tried electron-pdf http://fraserxu.me
test.pdf as suggested in the help, but I tried gooogle.com too – Marco Sulla Mar 31, 2019 at 14:19

I opened issue github.com/electron/electron/issues/17631#issue-427405049 – Marco Sulla Mar 31,


2019 at 14:59

See bugs github.com/electron/electron/issues/20634 github.com/electron/electron/issues/20634 - any


app using Electron since version 6.1 (which you have to use to print untrusted HTML) will hang if page
contains an <iframe> with cross-domain src attribute. The electron-pdf would be the correct
choice if its quality were better. – Mikko Rantalainen Dec 4, 2020 at 18:22

I wrote a little wrapper script for Chrome{,ium} headless, called html2pdf.


Ghostscript is in there to reduce the file size, and to select a range of pages:
3
#!/bin/sh -eu
in=$1 out=$2 page0=${3:-} page1=${4:-$page0}
${CHROME:-chromium} --headless --disable-gpu \
--run-all-compositor-stages-before-draw --print-to-pdf-no-header \
--print-to-pdf="$out" "$in"
GS_ARGS=
if [ -n "$page0" ]; then
GS_ARGS="-dFirstPage=$page0 -dLastPage=$page1"
fi
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH $GS_ARGS -sOutputFile="$2.tmp" "$2"
mv "$2.tmp" "$2"

Example usage:

html2pdf https://ucm.dev/resume.html ucm.pdf 1

Share Improve this answer Follow answered May 4, 2021 at 20:01

https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 4/6
05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User
Sam Watkins
928 10 15

1 Thanks for the --print-to-pdf-no-header , that's one parameter I still missed. Is there is list
somewhere with the other parameters we know from the print dialog (like Margins, Scale, Paper size)?
– mbx Jun 3, 2021 at 12:21

2 From looking at headless_shell_switches.cc and chrome_switches.cc it seems like those parameters


aren't (yet?) mapped. For non-trivial scenraios puppeteer seems the way to go. – mbx Jun 3, 2021 at
12:48

1 @mbx, the switches are indeed documented. First, for the original/classic chrome headless, they're at
developer.chrome.com/blog/headless-chrome/…. For the "new" engine (since 2021, accessed with --
headless=new ), they're at developer.chrome.com/articles/new-headless/…. – charlie arehart Mar 25,
2023 at 18:19

Successfully did a batch conversion of local html files to PDF -- sharing the approach.

Navigate to a folder containing a batch of html files you want to convert...


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

Note -- must use forward slash to avoid negating the %f in the file path.

Share Improve this answer Follow answered Jun 26, 2019 at 15:28
Zac
11 1

Can use this simple library from nuget package

For .Net Framework https://www.nuget.org/packages/Sats.HTMLtoPdf


0
For Core 3.1 https://www.nuget.org/packages/Sats.Core.HTMLToPdf

Usage#

var url = @"d:\convert.html";


var chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";

var output = new ChromeOptions().AddOptions(b =>


{
b.Headless();
b.DisableGPU();
b.WithoutHeader();

}).ToPdf(new ChromeDetails()
{
ChromePath = chromePath,
HtmlPath = url,
DeleteOutputFile = true, //optional
https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 5/6
05/12/2024 09:21 automation - How to Print to Save as PDF from a command line with Chrome or Chromium - Super User
// OutputPath = @"d:\print.pdf" // (add if
Environment.CurrentDirectory does not have access rights)
});

File.WriteAllBytes(@"d:\print.pdf", output.FileDetails.File);

For web application Set Process Model to LocalSystem

Share Improve this answer Follow answered Oct 7, 2021 at 9:35


Satish Patil
101 1

https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium 6/6

You might also like