Chaldeas
Chaldeas is a library that can automatically launch Chrome as Headless mode and Provide Devtools Protocol API at node.js
Dependency
- Node 6.10.3 or later
- GoogleChrome Version59 later or Canary
- babel-runtime 6.23.0 or later
- chrome-remote-interface 0.22.0 or later
- lighthouse 1.6.5 or later
- chrome-remote-interface-flowtype 0.1.2 or later
Architecture
- AsyncAwait Support (babel-preset-es2017)
- flowtype Support
- eslint
API Document
Example
Print Page PDF
$ yarn add --dev chaldeas
import { writeFile } from 'fs';import Chaldeas from 'chaldeas'; async function main() { const chaldeas = Chaldeas.new(); try { const protocol = await chaldeas.fetchProtocol(); const { Page, Network } = protocol; await Promise.all([ Page.enable(), Network.enable(), ]); await Page.navigate({ url: 'https://github.com' }); await Page.loadEventFired(async () => { const result = await Page.printToPDF(); const fileName = (new Date()).getTime(); const buffer = Buffer.from(result.data, 'base64'); writeFile(`${fileName}.pdf`, buffer, (e) => { if (e) { throw e; } }); await chaldeas.terminate(); }); } catch (error) { await chaldeas.terminate(); console.error(error); }} main();
Development
- install npm modules
-
$ yarn
-
- Docker
-
$ yarn chrome:launch // alias of `yarn build; docker run -it -d --rm --name chaldeas --shm-size=1024m --cap-add=SYS_ADMIN -v `pwd`:/data teitei/chaldeas;`$ docker attach chaldeasroot@ebcb835b0fcc:/data# ./node_modules/.bin/babel-node example/printPdf.jsroot@ebcb835b0fcc:/data# ls1497018362340.pdf LICENSE example node_modules src yarn.lockDockerfile README.md lib package.json yarn-error.log
Contributing
Bug reports and pull requests are welcome :) on GitHub at https://github.com/teitei-tk/Chaldeas.
Reference
- https://developers.google.com/web/updates/2017/04/headless-chrome
- https://chromedevtools.github.io/devtools-protocol/tot/
LICENSE
Apache License 2.0