pdfmake
Version:
Client/server side PDF printing in pure JavaScript
56 lines (48 loc) • 1.33 kB
JavaScript
import pdfmakeBase from '../base';
import OutputDocumentBrowser from './OutputDocumentBrowser';
import URLBrowserResolver from './URLBrowserResolver';
import fs from 'fs';
import configurator from 'core-js/configurator';
// core-js: Polyfills will be used only if natives completely unavailable.
configurator({
useNative: ['Promise']
});
let defaultClientFonts = {
Roboto: {
normal: 'Roboto-Regular.ttf',
bold: 'Roboto-Medium.ttf',
italics: 'Roboto-Italic.ttf',
bolditalics: 'Roboto-MediumItalic.ttf'
}
};
class pdfmake extends pdfmakeBase {
constructor() {
super();
this.urlResolver = new URLBrowserResolver(this.virtualfs);
this.fonts = defaultClientFonts;
}
addFontContainer(fontContainer) {
this.addVirtualFileSystem(fontContainer.vfs);
this.addFonts(fontContainer.fonts);
}
addVirtualFileSystem(vfs) {
for (let key in vfs) {
if (vfs.hasOwnProperty(key)) {
let data;
let encoding;
if (typeof vfs[key] === 'object') {
data = vfs[key].data;
encoding = vfs[key].encoding || 'base64';
} else {
data = vfs[key];
encoding = 'base64';
}
fs.writeFileSync(key, data, encoding);
}
}
}
_transformToDocument(doc) {
return new OutputDocumentBrowser(doc);
}
}
export default new pdfmake();