feat(marketing): PNG-Export für Beta-Flyer ergänzen
Erweitert den bestehenden Flyer-Generator um eine PNG-Ausgabe aus der HTML-Vorlage inklusive eigenem npm-Skript und erzeugter PNG-Datei für den direkten Einsatz. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"generate:flyer": "node ../scripts/generate-beta-flyer.mjs",
|
"generate:flyer": "node ../scripts/generate-beta-flyer.mjs",
|
||||||
|
"generate:flyer:png": "node ../scripts/generate-beta-flyer.mjs --png",
|
||||||
"generate:flyer:setup": "playwright install chromium"
|
"generate:flyer:setup": "playwright install chromium"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -18,6 +18,7 @@ const assetsDir = resolve(marketingDir, 'assets')
|
|||||||
const htmlPath = resolve(marketingDir, 'beta-flyer.html')
|
const htmlPath = resolve(marketingDir, 'beta-flyer.html')
|
||||||
const qrPath = resolve(assetsDir, 'qr-kapteins-daagbok.eu.png')
|
const qrPath = resolve(assetsDir, 'qr-kapteins-daagbok.eu.png')
|
||||||
const pdfPath = resolve(marketingDir, 'kapteins-daagbok-beta-flyer.pdf')
|
const pdfPath = resolve(marketingDir, 'kapteins-daagbok-beta-flyer.pdf')
|
||||||
|
const pngPath = resolve(marketingDir, 'kapteins-daagbok-beta-flyer.png')
|
||||||
const appUrl = 'https://kapteins-daagbok.eu'
|
const appUrl = 'https://kapteins-daagbok.eu'
|
||||||
|
|
||||||
const require = createRequire(resolve(clientDir, 'package.json'))
|
const require = createRequire(resolve(clientDir, 'package.json'))
|
||||||
@@ -91,5 +92,42 @@ async function renderPdf() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function renderPng() {
|
||||||
|
let playwright
|
||||||
|
try {
|
||||||
|
playwright = require('playwright')
|
||||||
|
} catch {
|
||||||
|
console.error('Fehlende Abhängigkeit: "npm install -D playwright" in client/ ausführen.')
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
await ensurePlaywrightChromium(playwright)
|
||||||
|
|
||||||
|
const browser = await playwright.chromium.launch({ headless: true })
|
||||||
|
try {
|
||||||
|
const context = await browser.newContext({
|
||||||
|
viewport: { width: 794, height: 1123 },
|
||||||
|
deviceScaleFactor: 2
|
||||||
|
})
|
||||||
|
const page = await context.newPage()
|
||||||
|
await page.goto(pathToFileURL(htmlPath).href, { waitUntil: 'networkidle' })
|
||||||
|
await page.screenshot({
|
||||||
|
path: pngPath,
|
||||||
|
fullPage: true,
|
||||||
|
type: 'png'
|
||||||
|
})
|
||||||
|
console.log('PNG written:', pngPath)
|
||||||
|
await context.close()
|
||||||
|
} finally {
|
||||||
|
await browser.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await ensureQrCode()
|
await ensureQrCode()
|
||||||
|
const outputMode = process.argv.includes('--png') ? 'png' : 'pdf'
|
||||||
|
|
||||||
|
if (outputMode === 'png') {
|
||||||
|
await renderPng()
|
||||||
|
} else {
|
||||||
await renderPdf()
|
await renderPdf()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user