mirror of
https://github.com/astefanutti/decktape.git
synced 2024-10-05 18:38:17 +03:00
Feature http headers (#276)
Implement feature flag to pass headers to Puppeteer via "headers" option. Also, add feature flag to set headless mode via "headless" option. Update headless behavior to sync with puppeteer API change. See: https://developer.chrome.com/articles/new-headless/#new-headless-in-puppeteer
This commit is contained in:
parent
382b7e4f14
commit
21a8d2687b
26
decktape.js
26
decktape.js
@ -102,6 +102,16 @@ parser.script('decktape').options({
|
||||
transform : parseRange,
|
||||
help : 'Range of slides to be exported, a combination of slide indexes and ranges (e.g. \'1-3,5,8\')',
|
||||
},
|
||||
headless : {
|
||||
default : 'new', // false to enable headed mode and true to enable old puppeteer headless. See: https://developer.chrome.com/articles/new-headless/#new-headless-in-puppeteer
|
||||
help : 'Control headless mode puppeteer.',
|
||||
},
|
||||
headers : {
|
||||
type : 'string',
|
||||
callback : parseHeaders,
|
||||
transform : parseHeaders,
|
||||
help : 'Add headers to puppetter page instance. Comma deliminated list of strings. <header>,<value>. E.g. -headers "Authorization,\'Bearer ASDJASLKJALKSJDL\'"',
|
||||
},
|
||||
// Chrome options
|
||||
chromePath : {
|
||||
full : 'chrome-path',
|
||||
@ -137,6 +147,18 @@ parser.script('decktape').options({
|
||||
},
|
||||
});
|
||||
|
||||
function parseHeaders(headerString) {
|
||||
const h = headerString.split(",")
|
||||
if ((h.length % 2) != 0) {
|
||||
return 'header flag must be a comma delimited key value pairing and should always have an even number of kv pairs'
|
||||
}
|
||||
let headers = {}
|
||||
for (let i = 0; i < h.length; i += 2) {
|
||||
headers[h[i]] = h[i+1]
|
||||
}
|
||||
return headers
|
||||
}
|
||||
|
||||
function parseSize(size) {
|
||||
// we may want to support height and width labeled with units
|
||||
// /^(\d+(?:px)?|\d+(?:\.\d+)?(?:in|cm|mm)?)\s?x\s?(\d+(?:px)?|\d+(?:\.\d+)?(?:in|cm|mm)?)$/
|
||||
@ -230,13 +252,15 @@ process.on('unhandledRejection', error => {
|
||||
const options = parser.parse(process.argv.slice(2));
|
||||
|
||||
const browser = await puppeteer.launch({
|
||||
headless : 'new',
|
||||
headless : options.headless,
|
||||
// TODO: add a verbose option
|
||||
// dumpio : true,
|
||||
executablePath : options.chromePath,
|
||||
args : options.chromeArgs,
|
||||
});
|
||||
const page = await browser.newPage();
|
||||
if (options.headers)
|
||||
page.setExtraHTTPHeaders(options.headers)
|
||||
await page.emulateMediaType('screen');
|
||||
const pdf = await PDFDocument.create();
|
||||
pdf.setCreator('Decktape');
|
||||
|
Loading…
Reference in New Issue
Block a user