Skip to content

Commit 457fb59

Browse files
committed
Can now pass in the Electron path.
1 parent 2876d1b commit 457fb59

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "capture-template",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"description": "This library is responsible for expanding a template web page and then capturing it PNG or PDF.",
55
"main": "build/index.js",
66
"types": "build/index.d.ts",

src/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ const promisify = require('promisify-any');
77
//
88
// Initalise the template renderer.
99
//
10-
async function initTemplateRenderer(data: any, templatePath: string, port: number): Promise<ITemplateRenderer> {
11-
const templateRenderer = new TemplateRenderer();
10+
async function initTemplateRenderer(data: any, templatePath: string, port: number, electronPath?: string): Promise<ITemplateRenderer> {
11+
const templateRenderer = new TemplateRenderer(electronPath);
1212
await templateRenderer.start();
1313
await templateRenderer.loadTemplate(data, templatePath, port);
1414
return templateRenderer;
@@ -25,21 +25,21 @@ async function deinitTemplateRenderer(templateRenderer: ITemplateRenderer): Prom
2525
//
2626
// Expand a template web page and capture it to an image file.
2727
//
28-
export async function captureImage(data: any, templatePath: string, outputPath: string): Promise<void> {
28+
export async function captureImage(data: any, templatePath: string, outputPath: string, electronPath?: string): Promise<void> {
2929
await fs.ensureDir(path.dirname(outputPath));
3030
const autoAssignPortNo = 0; // Use port no 0, to automatically assign a port number.
31-
const templateRenderer = await initTemplateRenderer(data, templatePath, autoAssignPortNo);
31+
const templateRenderer = await initTemplateRenderer(data, templatePath, autoAssignPortNo, electronPath);
3232
await templateRenderer.renderImage(outputPath);
3333
await deinitTemplateRenderer(templateRenderer);
3434
}
3535

3636
//
3737
// Expand a template web page and capture it to a PDF file.
3838
//
39-
export async function capturePDF(data: any, templatePath: string, outputPath: string): Promise<void> {
39+
export async function capturePDF(data: any, templatePath: string, outputPath: string, electronPath?: string): Promise<void> {
4040
await fs.ensureDir(path.dirname(outputPath));
4141
const autoAssignPortNo = 0; // Use port no 0, to automatically assign a port number.
42-
const templateRenderer = await initTemplateRenderer(data, templatePath, autoAssignPortNo);
42+
const templateRenderer = await initTemplateRenderer(data, templatePath, autoAssignPortNo, electronPath);
4343
await templateRenderer.renderPDF(outputPath);
4444
await deinitTemplateRenderer(templateRenderer);
4545
}

src/template-renderer.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ export interface ITemplateRenderer {
5555
*/
5656
export class TemplateRenderer implements ITemplateRenderer {
5757

58+
/**
59+
* Specifies the path to load Electron from or null to use default path.
60+
*/
61+
electronPath?: string;
62+
5863
/**
5964
* Renders the web page.
6065
*/
@@ -65,6 +70,10 @@ export class TemplateRenderer implements ITemplateRenderer {
6570
*/
6671
private templateWebServer: ITemplateWebServer | null = null;
6772

73+
constructor (electronPath?: string) {
74+
this.electronPath = electronPath;
75+
}
76+
6877
/**
6978
* Get the URL to access the web-sever.
7079
*/
@@ -77,7 +86,7 @@ export class TemplateRenderer implements ITemplateRenderer {
7786
* For performance reasons the template render can be reused to render multiple web pages.
7887
*/
7988
async start (): Promise<void> {
80-
this.webPageRenderer = new WebPageRenderer();
89+
this.webPageRenderer = new WebPageRenderer(this.electronPath);
8190
await this.webPageRenderer.start();
8291
}
8392

src/web-page-renderer.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,36 @@ export interface IWebPageRenderer {
5151
*/
5252
export class WebPageRenderer implements IWebPageRenderer {
5353

54+
/**
55+
* Specifies the path to load Electron from or null to use default path.
56+
*/
57+
electronPath?: string;
58+
5459
/**
5560
* Nightmare headless browser instance.
5661
*/
5762
nightmare: any | null = null;
5863

64+
constructor (electronPath?: string) {
65+
this.electronPath = electronPath;
66+
}
67+
5968
/**
6069
* Start the web page renderer.
6170
* For performance reasons this can be reused to render multiple pages.
6271
*/
6372
async start (): Promise<void> {
64-
this.nightmare = new Nightmare({
73+
const nightmareOptions: any = {
6574
show: false,
6675
frame: false,
67-
});
76+
};
77+
78+
if (this.electronPath) {
79+
// Include Electron path if specified.
80+
nightmareOptions.electronPath = this.electronPath;
81+
}
82+
83+
this.nightmare = new Nightmare(nightmareOptions);
6884

6985
this.nightmare.on('crashed', (evt: any) => {
7086
throw new Error("Nightmare crashed " + evt.toString());

0 commit comments

Comments
 (0)