Files
deskhub/DeskHub-Webseite/tools/manual/print_pdf.js
T
2026-11-05 21:22:06 +00:00

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();
});