Code Monkey home page Code Monkey logo

Comments (2)

PanMan avatar PanMan commented on June 27, 2024

+1!

from node-html-pdf.

SKGrimes avatar SKGrimes commented on June 27, 2024

Page counts can be used with css3. It is 4am right now but I had to use this for a ton of stuff so I am going to ask author if I can contribute docs for some issues everyone seems to have, this being one of them:

Mozilla Link for docs on CSS 3 page counter

I pass that metadata obj to html-pdf, it is my options object. it is exported in node as a js file, but you can see from the code how it works, it has sloppy 1999 level's of   but they don't render. You may have to put a span tag in and give it a large margin.

working example:

options.js

 metadata: {
        doctype: doctype,
        company: normalizedCompany,
        directory: outbox + '/' + normalizedCompany,
        html: outbox + '/' + normalizedCompany + '/' + normalizedCompany + '.html',
        logo: outbox + '/' + normalizedCompany + '/' + normalizedCompany + '-logo.png',
        pdf: outbox + '/' + normalizedCompany + '/' + normalizedCompany + '-' + doctype + '.pdf',
        options: {
          height: '11in',
          width: '8.5in',
          border: {
            top: "0.1in",
            right: "0.25in",
            bottom: "0.1in",
            left: "0.25in"
          },
          header: {
            height: "1.5in",
            contents: '<header><section class="row" style="border-bottom: 2.8px solid black; display: block;"><div class="six columns"><img src="' + 'file://' + outbox + '/' + normalizedCompany + '/' + normalizedCompany + '-logo.png' + '" style="height: 64px; width: auto; margin-bottom:2px!important;" alt="' + req.body.companyInfo.name + '"></div><div class="six columns" style="padding-top: 8px;height: inherit;"><h1 class="repeating-doctype" style="text-align: right;"><b style="text-transform: capitalize;">' + doctype + '&nbsp;</b>&nbsp;' + req.body.jobInfo.referenceNumber + '</h1></div></section><section class="row" style=" border-bottom: 2px solid #E1E1E1; margin-bottom: 1rem;"><div class="twelve columns"><h1><b>' + req.body.jobInfo.host + '</b>&nbsp;<span style="margin: 0; color: gray;">' + req.body.jobInfo.name + '</span></h1></div></section></header>'
          },
          footer: {
            height: "0.5in",
            contents: '<footer><p class="page" style="font-size: 12.5px">&nbsp;' + req.body.companyInfo.name + '&nbsp;&ndash;&nbsp;' + req.body.companyInfo.city + '&nbsp;&ndash;&nbsp;' + req.body.companyInfo.email + '&nbsp;&ndash;&nbsp;' + req.body.companyInfo.website.replace(/.*?:\/\//g, "") + '<span style="margin: 0 20px 0 0">&nbsp;</span> ' + '    Page </p></footer>'
          }
        }
      },

main.css

body {
  counter-reset: pagecounter;
}
.page {
  counter-increment: pagecounter;
}
.page:after {
  content: counter(pagecounter);
}

You can attach external css sheets with tag1: 'file://' + basepath + '/app/themes/reset.css',
that syntax. That code is passed to handlebars and renders as something like (note that it is an absolute root path so there are actually 3 slashes when handlebars calls it`, you can put this in the head of your document :

file:///Users/you/Desktop/style/style.css

In testing I loaded 4 external sheets, however if possible, I would suggest compiling/minifying it and including it.

Base64 images render like shit.

also, if you need an image in the header include it with similar syntax to above in the body with a display: none, the header will recognize the external file and render it.

from node-html-pdf.

Related Issues (20)

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.