37 lines
1.8 KiB
JavaScript
37 lines
1.8 KiB
JavaScript
'use strict';
|
|
/**
|
|
* tools/manual/print_pdf.js: wandelt handbuch.html in eine A4-PDF um (mit Kopf-/Fußzeile, Lesezeichen aus den Überschriften).
|
|
* electron tools/manual/print_pdf.js <handbuch.html> <ausgabe.pdf> [cover.html cover.pdf]
|
|
*/
|
|
const { app, BrowserWindow } = require('electron');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const src = path.resolve(process.argv[2]);
|
|
const dst = path.resolve(process.argv[3]);
|
|
|
|
app.whenReady().then(async () => {
|
|
const win = new BrowserWindow({ show: false, width: 1000, height: 1400, webPreferences: { offscreen: false } });
|
|
await win.loadFile(src);
|
|
await new Promise((r) => setTimeout(r, 1500));
|
|
const pdf = await win.webContents.printToPDF({
|
|
pageSize: 'A4',
|
|
printBackground: true,
|
|
preferCSSPageSize: true,
|
|
displayHeaderFooter: true,
|
|
headerTemplate: '<div></div>',
|
|
footerTemplate: '<div style="width:100%;font-size:8px;color:#6b7280;font-family:Segoe UI,Arial,sans-serif;padding:0 18mm;display:flex;justify-content:space-between"><span>DeskHub Handbuch · alle Beispieldaten sind erfunden</span><span>Seite <span class="pageNumber"></span> von <span class="totalPages"></span></span></div>',
|
|
generateDocumentOutline: true,
|
|
generateTaggedPDF: true,
|
|
});
|
|
fs.writeFileSync(dst, pdf);
|
|
if (process.argv[4]) {
|
|
const w2 = new BrowserWindow({ show: false, width: 900, height: 1200 });
|
|
await w2.loadFile(path.resolve(process.argv[4]));
|
|
await new Promise((r) => setTimeout(r, 500));
|
|
fs.writeFileSync(path.resolve(process.argv[5]), await w2.webContents.printToPDF({ pageSize: 'A4', printBackground: true, preferCSSPageSize: true }));
|
|
}
|
|
console.log('PDF geschrieben: ' + dst + ' (' + Math.round(pdf.length / 1024) + ' KB)');
|
|
app.quit();
|
|
});
|