html2pdfmake
Advanced HTML to PDFMake DocDefinition parser.
Parse HTML/DOM to pdfmake.
Install
npm i html2pdfmake
yarn add html2pdfmake
Quick Usage
Module
<div id="template">
<p>Text</p>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.3.0-beta.2/pdfmake.min.js"></script>
<script type="module">
import {parse} from 'https://cdn.jsdelivr.net/npm/html2pdfmake/dist/html2pdfmake.mjs';
const {content, images, patterns} = parse(document.getElementById('template'));
pdfMake.createPdf({
content,
images,
patterns
})
</script>
UMD
<div id="template">
<p>Text</p>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.3.0-beta.2/pdfmake.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/html2pdfmake/lib/html2pdfmake.min.js"></script>
<script>
const {content, images, patterns} = html2pdfmake.parse(document.getElementById('template'));
pdfMake.createPdf({
content,
images,
patterns
})
</script>
Config
Pass the config as the second parameter in parse
function.
export type Config = {
globalStyles?: CssStyles,
styles: CssStyles,
nodeRule?: NodeRule
styleRule?: StyleRule
collapseMargin: true,
collapseWhitespace: true,
render: (e, data) => e,
document: () => window.document,
parseCss: (style: NodeListOf<HTMLStyleElement>) => {},
defaultFont: 'Roboto',
fonts?: TFontDictionary
}
nodeRule example
const config = {
nodeRule: (el) => {
if (el.nodeName === '#text') {
return {
text: 'My Custom text'
};
}
return undefined;
}
}
styleRule example
const config = {
styleRule: (directive, value, props) => {
if (directive === 'color') {
props.color = 'red';
return true;
}
return false;
}
}
NodeJS
Install a HTML parser like JSDOM.
Run examples
npm i http-server -g
npm i
npm run watch
http-server .