npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

trailpack-pdf

v1.0.0

Published

Trailpack to generate PDF/IMAGE from routes or templates for Trails.js project

Downloads

9

Readme

trailpack-pdf

:package: Trailpack to generate PDF from routes or templates for Trails.js project

NPM version Build status Dependency Status Code Climate

This Trailpack is based on phantomjs and phantomjs-node to generate PDF.

It can also generate page into image (png, jpeg) instead of PDF.

Install

With yo :

npm install -g yo generator-trails
yo trails:trailpack trailpack-pdf

With npm (you will have to create config file manually) :

npm install --save trailpack-pdf

Configure

Load the trailpack to the main config

// config/main.js
module.exports = {
  packs: [
    // ... other trailpacks
    require('trailpack-pdf')
  ]
}
// config/pdf.js
module.exports = {
  /**
   * Phantom launch options, default to empty
   */
  options: ['--ignore-ssl-errors=yes', '--load-images=no'],

  /**
   * Global page settings, default to empty
   * Example : javascriptEnabled to enable/disable javascript support on the page, userAgent...
   */
  pageSettings: {javascriptEnabled:true},

  /**
   * Global page properties, default to empty
   * Example : page size, header, footer...
   */
  pageProperties: {
    paperSize: (phantom) => {
      return {
        format: 'A4',
        header: {
          height: '1.5cm',
          contents: phantom.callback(function (pageNum, numPages) {
            return '<h1>Header <span style=\'float:right\'>' + pageNum + ' / ' + numPages + '</span></h1>'
          })
        },
        footer: {
          height: '1.5cm',
          contents: phantom.callback(function (pageNum, numPages) {
            return '<h1>Footer <span style=\'float:right\'>' + pageNum + ' / ' + numPages + '</span></h1>'
          })
        }
      }
    }
  }
}

Usage

This Trailpack expose a service to generate PDF, you can call it like this under controller/services/policies :

From route

/** 
 * Generate PDF from a Trails route, or route path
 * You can override global page settings and properties, these params are optional
**/
this.app.services.PdfService.generateFromRoute('/', '/path/to/my/file.pdf', {javascriptEnabled: true}, {pageSize: {format: 'A4'})
.then(() => {
  //pdf generated
})
.catch(err => this.log.error(err))

From URL

/** 
 * Generate PDF from an URL
 * You can override global page settings and properties, these params are optional
**/
this.app.services.PdfService.generateFromUrl('http://google.fr', '/path/to/my/file.pdf', {javascriptEnabled: true}, {pageSize: {format: 'A4'})
.then(() => {
  //pdf generated
})
.catch(err => this.log.error(err))

From HTML or Template engine (jade, ejs...)

const path = 'html.pdf'
const template = 'index.jade'
const fn = jade.compile(fs.readFileSync(template))
this.app.services.PdfService.generateFromHtml(fn(), path).then(status => {
  //pdf generated
}).catch(err => done(err))

Generate image instead of PDF

Use same code as above but change the extension to .png or .jpeg

Contributing

We love contributions! In order to be able to review your code efficiently, please keep the following in mind:

  1. Pull Requests (PRs) must include new and/or updated tests, and all tests must pass.
  2. Use eslint! See the eslintConfig in package.json.
  3. Please reference the relevant issue in your Pull Request.

License

MIT