Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
30e4b4665c | |||
74a0a27fc1 | |||
59eed53644 | |||
473aaa004a | |||
ecfd4115a1 | |||
0fbbfaac7c | |||
86d2fc2c5b | |||
f97866fe82 |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartpdf",
|
"name": "@pushrocks/smartpdf",
|
||||||
"version": "1.0.13",
|
"version": "1.0.17",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartpdf",
|
"name": "@pushrocks/smartpdf",
|
||||||
"version": "1.0.13",
|
"version": "1.0.17",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "create pdfs on the fly",
|
"description": "create pdfs on the fly",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
@ -5,27 +5,34 @@ import { PdfCandidate } from './smartpdf.classes.pdfcandidate';
|
|||||||
|
|
||||||
declare const document;
|
declare const document;
|
||||||
|
|
||||||
import { IPdfResult } from './interfaces';
|
import * as interfaces from './interfaces';
|
||||||
|
|
||||||
export class SmartPdf {
|
export class SmartPdf {
|
||||||
htmlServerInstance: Server;
|
htmlServerInstance: Server;
|
||||||
serverPort: number;
|
serverPort: number;
|
||||||
headlessBrowser: plugins.puppeteer.Browser;
|
headlessBrowser: plugins.puppeteer.Browser;
|
||||||
externalBrowser: boolean = false;
|
externalBrowserBool: boolean = false;
|
||||||
private _readyDeferred: plugins.smartpromise.Deferred<void>;
|
private _readyDeferred: plugins.smartpromise.Deferred<void>;
|
||||||
private _candidates: { [key: string]: PdfCandidate } = {};
|
private _candidates: { [key: string]: PdfCandidate } = {};
|
||||||
|
|
||||||
constructor(headlessBrowserArg?) {
|
constructor() {
|
||||||
this.headlessBrowser = headlessBrowserArg
|
|
||||||
this._readyDeferred = new plugins.smartpromise.Deferred();
|
this._readyDeferred = new plugins.smartpromise.Deferred();
|
||||||
}
|
}
|
||||||
|
|
||||||
async start() {
|
async start(headlessBrowserArg?) {
|
||||||
|
// lets set the external browser in case one is provided
|
||||||
|
this.headlessBrowser = headlessBrowserArg
|
||||||
// setup puppeteer
|
// setup puppeteer
|
||||||
if (!this.headlessBrowser) {
|
if (this.headlessBrowser) {
|
||||||
this.headlessBrowser = await plugins.puppeteer.launch();
|
this.externalBrowserBool = true;
|
||||||
} else {
|
} else {
|
||||||
this.externalBrowser = true;
|
let chromeArgs: string[] = [];
|
||||||
|
if(process.env.CI) {
|
||||||
|
chromeArgs = chromeArgs.concat(['--no-sandbox', '--disable-setuid-sandbox'])
|
||||||
|
}
|
||||||
|
this.headlessBrowser = await plugins.puppeteer.launch({
|
||||||
|
args: chromeArgs
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup server
|
// setup server
|
||||||
@ -43,13 +50,14 @@ export class SmartPdf {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stop
|
||||||
async stop() {
|
async stop() {
|
||||||
const done = plugins.smartpromise.defer<void>();
|
const done = plugins.smartpromise.defer<void>();
|
||||||
this.htmlServerInstance.close(() => {
|
this.htmlServerInstance.close(() => {
|
||||||
done.resolve();
|
done.resolve();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!this.externalBrowser) {
|
if (!this.externalBrowserBool) {
|
||||||
await this.headlessBrowser.close();
|
await this.headlessBrowser.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +67,7 @@ export class SmartPdf {
|
|||||||
/**
|
/**
|
||||||
* returns a pdf for a given html string;
|
* returns a pdf for a given html string;
|
||||||
*/
|
*/
|
||||||
async getPdfForHtmlString(htmlStringArg: string): Promise<IPdfResult> {
|
async getPdfForHtmlString(htmlStringArg: string): Promise<interfaces.IPdfResult> {
|
||||||
await this._readyDeferred.promise;
|
await this._readyDeferred.promise;
|
||||||
const pdfCandidate = new PdfCandidate(htmlStringArg);
|
const pdfCandidate = new PdfCandidate(htmlStringArg);
|
||||||
this._candidates[pdfCandidate.pdfId] = pdfCandidate;
|
this._candidates[pdfCandidate.pdfId] = pdfCandidate;
|
||||||
@ -89,7 +97,7 @@ export class SmartPdf {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async getPdfForWebsite(websiteUrl: string): Promise<IPdfResult> {
|
async getPdfForWebsite(websiteUrl: string): Promise<interfaces.IPdfResult> {
|
||||||
const page = await this.headlessBrowser.newPage();
|
const page = await this.headlessBrowser.newPage();
|
||||||
page.emulateMedia('screen');
|
page.emulateMedia('screen');
|
||||||
const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' });
|
const response = await page.goto(websiteUrl, { waitUntil: 'networkidle2' });
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
import * as plugins from './smartpdf.plugins';
|
import * as plugins from './smartpdf.plugins';
|
||||||
|
|
||||||
export const packageDir = plugins.path.join(__dirname, '../');
|
export const packageDir = plugins.path.join(__dirname, '../');
|
||||||
export const pdfDir = plugins.path.join(packageDir, 'assets/pdfdir');
|
|
||||||
|
|
||||||
plugins.smartfile.fs.ensureDirSync(pdfDir);
|
|
||||||
|
Reference in New Issue
Block a user