cordova-pdf-generator
Simple plugin to generate (offline) pdf. the plugin basically transform HTML to PDF and also provide the mechanism to share the pdf to other apps like Mail, etc. For now works in iOS and Android, if you want to add other platform feel free contribute.
The iOS HTML to PDF transformation is based in this work BNHtmlPdfKit, I just add a new method to allow transformation between plain HTML to PDF.
Features
- Generates a PDF document using a URL or HTML.
- Open-with menu, open the context menu and (push to cloud, print, save, mail, etc...).
- Return generated PDF in Base64 format.
Supported Platforms
Installing the easy way (Cordova CLI)
cordova plugin add cordova-pdf-generator
Installing using Plugman
cordova platform add ios
plugman install --platform ios --project platforms/ios --plugin cordova-pdf-generator
Installing using NPM
npm install cordova-pdf-generator
cordova plugins add node_modules/cordova-pdf-generator
Installing the hard way.
Clone the plugin
$ git clone https://github.com/cesarvr/pdf-generator
Create a new Cordova Project
$ cordova create hello com.example.helloapp Hello
Install the plugin
$ cd hello
$ cordova plugin add ../pdf-generator
Example:
This generates a pdf from a URL, it convert HTML to PDF and returns the file representation in base64.
document.addEventListener('deviceready', function() {
pdf.htmlToPDF({
url: "http://www.google.es",
documentSize: "A4",
landscape: "portrait",
type: "base64"
}, this.success, this.failure);
});
The same but giving HTML without URL.
document.addEventListener('deviceready', function() {
pdf.htmlToPDF({
data: "<html> <h1> Hello World </h1> </html>",
documentSize: "A4",
landscape: "portrait",
type: "base64"
}, this.success, this.failure);
});
Opening the pdf with other app menu.
document.addEventListener('deviceready', function() {
pdf.htmlToPDF({
data: "<html> <h1> Hello World </h1> </html>",
documentSize: "A4",
landscape: "portrait",
type: "share"
}, this.success, this.failure);
});
Ionic/Angular 2 Example:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
declare var cordova:any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController) {
const before = Date.now();
document.addEventListener('deviceready', () => {
console.log('DEVICE READY FIRED AFTER', (Date.now() - before), 'ms');
cordova.plugins.pdf.htmlToPDF({
data: "<html> <h1> Hello World </h1> </html>",
},
(sucess) => console.log('sucess: ', sucess),
(error) => console.log('error:', error));
});
}
}
Demo
API reference
PDF
Due to the different way each platform generates the PDF, options not supported in the platform are just silently ignored.
Install iOS or Android platform
cordova platform add ios
cordova platform add android
Run the code
cordova run ios
cordova run android
More Info
For more information on setting up Cordova see the documentation
For more info on plugins see the Plugin Development Guide