UNPKG

node-pdfbox

Version:

Bridge module to library Apache PDFBox

169 lines (132 loc) 3.67 kB
'use strict'; const JavaObject = require('./java-object'); const Page = require('./pdf-page'); const java = require('./java').getJavaInstance(); const when = require('when'); class PDFDocument extends JavaObject { pagesCountSync() { return this.javaObject.pagesCountSync(); } getPageSync(i) { return new Page(this.javaObject.getPageSync(i)); } getInfoSync(key) { return this.javaObject.getInformationSync(key); } getTitleSync() { return this.getInfoSync('Title'); } getAuthorSync() { return this.getInfoSync('Author'); } getSubjectSync() { return this.getInfoSync('Subject'); } getKeywordsSync() { return this.getInfoSync('Keywords'); } addPagesSync() { if(arguments.length > 0 && arguments[0].constructor.name == 'PDFDocument') { arguments[0] = arguments[0].getDocument(); } this.javaObject.addPagesSync.apply(this.javaObject, arguments); } addPageSync() { if(arguments.length > 0 && arguments[0].constructor.name == 'PDFPage') { arguments[0] = arguments[0].getPage(); } this.javaObject.addPageSync.apply(this.javaObject, arguments); } saveSync() { this.javaObject.saveSync.apply(this.javaObject, arguments); } getPathSync() { return this.javaObject.getPathSync(); } getDocument() { return this.javaObject; } static loadSync(path) { const PDFDocumentJava = java.import('br.com.appmania.PDFDocument'); return new PDFDocument(PDFDocumentJava.loadSync(path)); } /* asynchronous operations */ static load(path) { return when.promise(function(resolve, reject) { const PDFDocumentJava = java.import('br.com.appmania.PDFDocument'); PDFDocumentJava.loadPromise(path) .then(function(doc) { resolve(new PDFDocument(doc)); }) .catch(reject); }); } getInfo(key) { return this.javaObject.getInformationPromise(key); } getTitle() { return this.getInfo('Title'); } getAuthor() { return this.getInfo('Author'); } getSubject() { return this.getInfo('Subject'); } getKeywords() { return this.getInfo('Keywords'); } pagesCount() { return this.javaObject.pagesCountPromise(); } getPage(i) { const that = this; return when.promise(function(resolve, reject) { that.javaObject.getPagePromise(i) .then(function(page) { resolve(new Page(page)); }) .catch(reject); }); } addPages() { if(arguments.length > 0 && arguments[0].constructor.name == 'PDFDocument') { arguments[0] = arguments[0].getDocument(); } return this.javaObject.addPagesPromise.apply(this.javaObject, arguments); } addPage() { if(arguments.length > 0 && arguments[0].constructor.name == 'PDFPage') { arguments[0] = arguments[0].getPage(); } return this.javaObject.addPagePromise.apply(this.javaObject, arguments); } save() { return this.javaObject.savePromise.apply(this.javaObject, arguments); } getPath() { return this.javaObject.getPathPromise(); } getForm() { return this.javaObject.getDocumentSync().getDocumentCatalogSync().getAcroFormPromise(); } getFormSync() { return this.javaObject.getDocumentSync().getDocumentCatalogSync().getAcroFormSync(); } close() { let call = this.javaObject.getDocumentSync().closePromise; this.javaObject = null; return call(); } closeSync() { this.javaObject.getDocumentSync().closeSync(); this.javaObject = null; } flattenSync() { this.javaObject.flattenSync(); } flatten() { this.javaObject.flattenPromise(); } } module.exports = PDFDocument;