Code Monkey home page Code Monkey logo

html2pdfmake's Introduction

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({
  // everything else
  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({
  // everything else
  content,
  images,
  patterns
})
</script>

Config

Pass the config as the second parameter in parse function.

// parse('<div></div>', config);
export type Config = {
  globalStyles?: CssStyles, // custom global styles
  styles: CssStyles, // additional styles merged that overwrites globals styles
  nodeRule?: NodeRule // set the custom node rule. Return undefined if pre-defined rules should be applied.
  styleRule?: StyleRule // set the custom style rule. Return false if pre-defined rules should be applied.
  collapseMargin: true, // Enable/Disable margin collapse
  collapseWhitespace: true, // Enable/Disable witespace collapse
  render: (e, data) => e, // set render function for header/footer
  document: () => window.document, // set the global document object
  parseCss: (style: NodeListOf<HTMLStyleElement>) => {}, // define <style> parser
  defaultFont: 'Roboto', // set the default font
  fonts?: TFontDictionary // pass the fonts that you are using for pdfmake to filter unsupported fonts.
}

nodeRule example

const config = {
  nodeRule: (el) => {
    if (el.nodeName === '#text') {
      return {
        text: 'My Custom text'
      };
    }

    return undefined; // use pre-defined rules
  }
}

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
# open new terminal
http-server .
# open localhost:8080

html2pdfmake's People

Contributors

dantio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.