PDF-Export: echten Massstab an planToRenderScene durchreichen (Audit-Fund #3, Abschluss)

buildPlanPdf ruft planToRenderScene(plan, opts.scaleDenominator) statt des
Default 1:100 → der Stempel-Zeilenabstand mehrzeiliger Texte ist jetzt auch im
PDF bei Nicht-1:100-Massstab papier-mm-genau (identischer Nenner wie an
sceneToPrintSvg). Schliesst den in der vorigen Änderung offen gelassenen
Aufrufer-Punkt.
This commit is contained in:
2026-07-03 18:56:08 +02:00
parent b6e902a809
commit b353ed34ae
+7 -6
View File
@@ -64,13 +64,14 @@ export async function buildPlanPdf(
): Promise<jsPDF> { ): Promise<jsPDF> {
const { w: pageW, h: pageH } = pageSizeMm(opts.paper, opts.orientation); const { w: pageW, h: pageH } = pageSizeMm(opts.paper, opts.orientation);
// Render-Szene EXAKT wie der Viewport erzeugen (keine Zusatz-Optionen — // Render-Szene wie der Viewport erzeugen, dann als Papier-SVG serialisieren.
// `planToRenderScene(plan)` ist der vollstaendige Aufruf, siehe // Einziger Unterschied zum Viewport-Aufruf: der echte Export-Massstab wird an
// `useWasmPlanRenderer.ts`), dann als Papier-SVG serialisieren. Etwas mehr // `planToRenderScene` durchgereicht (derselbe `scaleDenominator` wie unten an
// unterer Rand, falls ein Schriftfeld gezeichnet wird (damit es nicht in // `sceneToPrintSvg`), damit der Zeilenabstand mehrzeiliger Stempeltexte auch
// den Plan ragt). // bei Nicht-1:100-Massstab papier-mm-genau stimmt. Etwas mehr unterer Rand,
// falls ein Schriftfeld gezeichnet wird (damit es nicht in den Plan ragt).
const margin = 10; const margin = 10;
const scene = planToRenderScene(plan); const scene = planToRenderScene(plan, opts.scaleDenominator);
const print = sceneToPrintSvg(scene, { const print = sceneToPrintSvg(scene, {
scaleDenominator: opts.scaleDenominator, scaleDenominator: opts.scaleDenominator,
pageWidthMm: pageW, pageWidthMm: pageW,