Postkarten-Layout: Text links, Absender+Empfänger rechts, Briefmarkenfeld frei
All checks were successful
Build & Deploy / deploy (push) Successful in 13s
All checks were successful
Build & Deploy / deploy (push) Successful in 13s
Neues render_format-kind 'postkarte'. generatePostcardSVG setzt den Text auf die linke Kartenhälfte, Absender (klein, oben) und Empfänger (Anschriftzone unten) auf die rechte Hälfte; oben rechts bleibt das Briefmarkenfeld frei. Ein SVG je Karte (ein Plotter-Durchlauf), geschrieben als letter_NNN.svg. - page-layout: kind je Format mitführen + getFormatKind(). - svg-generator: generatePostcardSVG (Body/Absender/Empfänger über Marker [[pk_abs]]/[[pk_adr]] getrennt, damit alle Teile scriptalisiert werden). - order-/preview-/directus-controller: type 'postcard' dispatchen, Marker in der Scriptalisierung erhalten, Postkarten-Dokument aus render_format-kind bauen. - directus-service: kind aus render_formats mitladen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ const fsSync = require('fs');
|
||||
const path = require('path');
|
||||
const config = require('../../config');
|
||||
const { scriptalizeBatch } = require('../../services/scriptalizer-service');
|
||||
const { generateLetterSVG, generateEnvelopeSVG, generateLetterPages } = require('../../lib/svg-generator');
|
||||
const { generateLetterSVG, generateEnvelopeSVG, generatePostcardSVG, generateLetterPages } = require('../../lib/svg-generator');
|
||||
const { replacePlaceholders, generateAllCSVs } = require('../../services/placeholder-service');
|
||||
const { TAB_MARKER } = require('../../lib/svg-font-engine');
|
||||
|
||||
@@ -220,7 +220,7 @@ async function runGeneration({ orderNumber, letters, metadata }) {
|
||||
|
||||
for (const letter of fontLetters) {
|
||||
const raw = letter.processedText;
|
||||
const parts = raw.split(/(\t|\[\[signatur\d+\]\]|\[\[seitenumbruch\]\]|[&|])/gi);
|
||||
const parts = raw.split(/(\t|\[\[signatur\d+\]\]|\[\[seitenumbruch\]\]|\[\[pk_abs\]\]|\[\[pk_adr\]\]|[&|])/gi);
|
||||
const segments = [], markers = [];
|
||||
for (let i = 0; i < parts.length; i++) {
|
||||
if (i % 2 === 0) segments.push(parts[i]);
|
||||
@@ -272,6 +272,7 @@ async function runGeneration({ orderNumber, letters, metadata }) {
|
||||
const letter = processedLetters[i];
|
||||
const absoluteIndex = letter.index !== undefined ? letter.index : i;
|
||||
const isEnv = letter.type === 'envelope';
|
||||
const isPostcard = letter.type === 'postcard';
|
||||
const pad = String(absoluteIndex).padStart(3, '0');
|
||||
|
||||
// Mehrseitiger Brief → N Seiten-Dateien letter_NNN_pM.svg (Seite 1..N).
|
||||
@@ -332,6 +333,11 @@ async function runGeneration({ orderNumber, letters, metadata }) {
|
||||
scriptalizedText, letter.format, letter.envelopeType,
|
||||
{ font: letter.font, realisticHandwriting: letter.realisticHandwriting ?? false, fontScale: letter.fontScale, sender: metadata.envelopeSender || '', senderScale: metadata.envelopeSenderScale || 1 }
|
||||
);
|
||||
} else if (isPostcard) {
|
||||
svgResult = generatePostcardSVG(
|
||||
scriptalizedText, letter.format,
|
||||
{ font: letter.font, realisticHandwriting: letter.realisticHandwriting ?? false, fontScale: letter.fontScale, senderScale: metadata.envelopeSenderScale || 1 }
|
||||
);
|
||||
} else {
|
||||
svgResult = generateLetterSVG(
|
||||
scriptalizedText, letter.format,
|
||||
|
||||
Reference in New Issue
Block a user