Skip to content
Snippets Groups Projects
Commit fc9843d3 authored by Tobias Fuhlroth's avatar Tobias Fuhlroth Committed by Fred Chasen
Browse files

Feature/force transparent background

parent e55a27ad
No related branches found
No related tags found
No related merge requests found
...@@ -18,6 +18,7 @@ program ...@@ -18,6 +18,7 @@ program
.option("-s, --page-size [size]", "Print to Page Size [size]") .option("-s, --page-size [size]", "Print to Page Size [size]")
.option("-w, --width [size]", "Print to Page Width [width] in MM") .option("-w, --width [size]", "Print to Page Width [width] in MM")
.option("-h --height [size]", "Print to Page Height [weight] in MM") .option("-h --height [size]", "Print to Page Height [weight] in MM")
.option("--forceTransparentBackground", "Print with transparent background")
// .option("-m, --page-margin [margin]", "Print with margin [margin]") // .option("-m, --page-margin [margin]", "Print with margin [margin]")
// .option("-n, --hyphenate [lang]", "Hyphenate with language [language], defaults to "en-us"") // .option("-n, --hyphenate [lang]", "Hyphenate with language [language], defaults to "en-us"")
// .option("-hi, --hypher_ignore [str]", "Ignore passed element selectors, such as ".class_to_ignore, h1"") // .option("-hi, --hypher_ignore [str]", "Ignore passed element selectors, such as ".class_to_ignore, h1"")
...@@ -107,14 +108,20 @@ if (typeof input === "string") { ...@@ -107,14 +108,20 @@ if (typeof input === "string") {
} }
(async () => { (async () => {
let printer = new Printer({ const printerOptions = {
headless: headless, headless: headless,
allowLocal: allowLocal, allowLocal: allowLocal,
allowRemote: !program.blockRemote, allowRemote: !program.blockRemote,
allowedPaths: program.allowedPaths, allowedPaths: program.allowedPaths,
allowedDomains: program.allowedDomains, allowedDomains: program.allowedDomains,
additionalScripts: program.additionalScript, additionalScripts: program.additionalScript,
}); };
if (program.forceTransparentBackground) {
printerOptions.overrideDefaultBackgroundColor = { r: 0, g: 0, b: 0, a: 0 }; // Workaround to get a transparent background in the resulting PDF. See https://bugs.chromium.org/p/chromium/issues/detail?id=498892 for more information.
}
let printer = new Printer(printerOptions);
printer.on("page", (page) => { printer.on("page", (page) => {
if (page.position === 0) { if (page.position === 0) {
......
...@@ -25,6 +25,7 @@ class Printer extends EventEmitter { ...@@ -25,6 +25,7 @@ class Printer extends EventEmitter {
this.allowedDomains = options.allowedDomains || []; this.allowedDomains = options.allowedDomains || [];
this.ignoreHTTPSErrors = options.ignoreHTTPSErrors; this.ignoreHTTPSErrors = options.ignoreHTTPSErrors;
this.browserWSEndpoint = options.browserEndpoint; this.browserWSEndpoint = options.browserEndpoint;
this.overrideDefaultBackgroundColor = options.overrideDefaultBackgroundColor;
this.pages = []; this.pages = [];
} }
...@@ -34,7 +35,7 @@ class Printer extends EventEmitter { ...@@ -34,7 +35,7 @@ class Printer extends EventEmitter {
headless: this.headless, headless: this.headless,
args: ["--disable-dev-shm-usage"], args: ["--disable-dev-shm-usage"],
ignoreHTTPSErrors: this.ignoreHTTPSErrors ignoreHTTPSErrors: this.ignoreHTTPSErrors
} };
if (this.allowLocal) { if (this.allowLocal) {
puppeteerOptions.args.push("--allow-file-access-from-files"); puppeteerOptions.args.push("--allow-file-access-from-files");
...@@ -63,6 +64,10 @@ class Printer extends EventEmitter { ...@@ -63,6 +64,10 @@ class Printer extends EventEmitter {
const page = await this.browser.newPage(); const page = await this.browser.newPage();
if (this.overrideDefaultBackgroundColor) {
page._client.send('Emulation.setDefaultBackgroundColorOverride', { color: this.overrideDefaultBackgroundColor });
}
let uri, url, relativePath, html; let uri, url, relativePath, html;
if (typeof input === "string") { if (typeof input === "string") {
try { try {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment