Skip to content
Snippets Groups Projects
Commit 51ed53fc authored by Fred Chasen's avatar Fred Chasen
Browse files

https support

parent aee3fc48
No related branches found
No related tags found
No related merge requests found
Pipeline #30135 failed with stages
in 2 seconds
node_modules node_modules
\ No newline at end of file output
{ {
"name": "pagedjs-cli", "name": "pagedjs-cli",
"version": "0.0.3", "version": "0.0.4",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
...@@ -58,11 +58,6 @@ ...@@ -58,11 +58,6 @@
"pako": "^1.0.6" "pako": "^1.0.6"
} }
}, },
"@types/node": {
"version": "11.13.8",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz",
"integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg=="
},
"accepts": { "accepts": {
"version": "1.3.5", "version": "1.3.5",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
...@@ -176,11 +171,6 @@ ...@@ -176,11 +171,6 @@
"type-is": "~1.6.16" "type-is": "~1.6.16"
} }
}, },
"boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
...@@ -222,19 +212,6 @@ ...@@ -222,19 +212,6 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true "dev": true
}, },
"cheerio": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz",
"integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==",
"requires": {
"css-select": "~1.2.0",
"dom-serializer": "~0.1.1",
"entities": "~1.1.1",
"htmlparser2": "^3.9.1",
"lodash": "^4.15.0",
"parse5": "^3.0.1"
}
},
"cli-cursor": { "cli-cursor": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
...@@ -336,17 +313,6 @@ ...@@ -336,17 +313,6 @@
"which": "^1.2.9" "which": "^1.2.9"
} }
}, },
"css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"requires": {
"boolbase": "~1.0.0",
"css-what": "2.1",
"domutils": "1.5.1",
"nth-check": "~1.0.1"
}
},
"css-tree": { "css-tree": {
"version": "1.0.0-alpha.29", "version": "1.0.0-alpha.29",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
...@@ -356,11 +322,6 @@ ...@@ -356,11 +322,6 @@
"source-map": "^0.5.3" "source-map": "^0.5.3"
} }
}, },
"css-what": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
},
"d": { "d": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz",
...@@ -410,37 +371,6 @@ ...@@ -410,37 +371,6 @@
"esutils": "^2.0.2" "esutils": "^2.0.2"
} }
}, },
"dom-serializer": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
"integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
"requires": {
"domelementtype": "^1.3.0",
"entities": "^1.1.1"
}
},
"domelementtype": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
},
"domhandler": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
"requires": {
"domelementtype": "1"
}
},
"domutils": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"requires": {
"dom-serializer": "0",
"domelementtype": "1"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -457,11 +387,6 @@ ...@@ -457,11 +387,6 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
}, },
"entities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
},
"es5-ext": { "es5-ext": {
"version": "0.10.49", "version": "0.10.49",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.49.tgz",
...@@ -848,31 +773,6 @@ ...@@ -848,31 +773,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
}, },
"htmlparser2": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
"integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
"requires": {
"domelementtype": "^1.3.1",
"domhandler": "^2.3.0",
"domutils": "^1.5.1",
"entities": "^1.1.1",
"inherits": "^2.0.1",
"readable-stream": "^3.1.1"
},
"dependencies": {
"readable-stream": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
"integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"http-errors": { "http-errors": {
"version": "1.6.3", "version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
...@@ -1184,13 +1084,10 @@ ...@@ -1184,13 +1084,10 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true "dev": true
}, },
"nth-check": { "node-fetch": {
"version": "1.0.2", "version": "2.4.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.4.1.tgz",
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "integrity": "sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw=="
"requires": {
"boolbase": "~1.0.0"
}
}, },
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.3.0",
...@@ -1290,14 +1187,6 @@ ...@@ -1290,14 +1187,6 @@
"callsites": "^3.0.0" "callsites": "^3.0.0"
} }
}, },
"parse5": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
"requires": {
"@types/node": "*"
}
},
"parseurl": { "parseurl": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
......
{ {
"name": "pagedjs-cli", "name": "pagedjs-cli",
"version": "0.0.3", "version": "0.0.5",
"author": "Fred Chasen", "author": "Fred Chasen",
"license": "MIT", "license": "MIT",
"homepage": "https://pagedmedia.org", "homepage": "https://pagedmedia.org",
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
"katex": "^0.10.1", "katex": "^0.10.1",
"lodash": "^4.17.11", "lodash": "^4.17.11",
"mathjax": "^2.7.5", "mathjax": "^2.7.5",
"node-fetch": "^2.4.1",
"ora": "^3.4.0", "ora": "^3.4.0",
"pagedjs": "^0.1.34", "pagedjs": "^0.1.34",
"pdf-lib": "^0.6.1", "pdf-lib": "^0.6.1",
......
...@@ -3,13 +3,16 @@ const EventEmitter = require('events'); ...@@ -3,13 +3,16 @@ const EventEmitter = require('events');
const puppeteer = require('puppeteer'); const puppeteer = require('puppeteer');
const util = require('util'); const util = require('util');
const fs = require('fs'); const fs = require('fs');
const readFile = util.promisify(fs.readFile); const fetch = require("node-fetch");
const path = require('path'); const path = require('path');
let dir = process.cwd(); let dir = process.cwd();
let scriptPath = path.resolve(dir, "./node_modules/pagedjs/dist/"); // Find top most pagedjs
let pagedjsLocation = require.resolve("pagedjs/dist/paged.polyfill.js");
let paths = pagedjsLocation.split("node_modules");
let scriptPath = paths[0] + "node_modules" + paths[paths.length-1];
const PostProcesser = require('./postprocesser'); const PostProcesser = require('./postprocesser');
...@@ -36,7 +39,8 @@ class Printer extends EventEmitter { ...@@ -36,7 +39,8 @@ class Printer extends EventEmitter {
async setup() { async setup() {
const browser = await puppeteer.launch({ const browser = await puppeteer.launch({
headless: this.headless, headless: this.headless,
args: this.allowLocal ? ['--allow-file-access-from-files'] : [] args: this.allowLocal ? ['--allow-file-access-from-files', '--disable-dev-shm-usage', '--no-sandbox'] : ['--disable-dev-shm-usage', '--no-sandbox'],
ignoreHTTPSErrors: true
}); });
return browser; return browser;
...@@ -54,10 +58,15 @@ class Printer extends EventEmitter { ...@@ -54,10 +58,15 @@ class Printer extends EventEmitter {
const page = await this.browser.newPage(); const page = await this.browser.newPage();
let url, html; let uri, url, html;
if (typeof input === "string") { if (typeof input === "string") {
try { try {
url = new URL(input); uri = new URL(input);
if (uri.protocol === "https:") {
html = await fetch(input)
.then(res => res.text())
}
url = input;
} catch { } catch {
let relativePath = path.resolve(dir, input); let relativePath = path.resolve(dir, input);
url = "file://" + relativePath; url = "file://" + relativePath;
...@@ -72,6 +81,18 @@ class Printer extends EventEmitter { ...@@ -72,6 +81,18 @@ class Printer extends EventEmitter {
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
}); });
if (url) {
await page.evaluate((url) => {
let base = document.querySelector("base");
if (!base) {
base = document.createElement("base");
document.querySelector("head").appendChild(base);
}
base.setAttribute("href", url);
}, url);
}
} else { } else {
await page.goto(url) await page.goto(url)
.catch((e) => { .catch((e) => {
...@@ -85,8 +106,10 @@ class Printer extends EventEmitter { ...@@ -85,8 +106,10 @@ class Printer extends EventEmitter {
} }
}); });
await page.addScriptTag({ await page.addScriptTag({
path: path.resolve(__dirname, "../node_modules/pagedjs/dist/paged.polyfill.js") path: scriptPath
}); });
// await page.exposeFunction('PuppeteerLogger', (msg) => { // await page.exposeFunction('PuppeteerLogger', (msg) => {
......
  • Boris Budini :shield: @kominoshja

    mentioned in merge request !2 (closed)

    By Fred Chasen on 2019-10-24T17:36:25 (imported from GitLab)

    ·

    mentioned in merge request !2 (closed)

    By Fred Chasen on 2019-10-24T17:36:25 (imported from GitLab)

    Toggle commit list
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