import { useEffect, useState } from "react"; import QRCode from "qrcode"; /** Kleines QR-Bild für einen Wert (asynchron erzeugt). */ export function QrImg({ text, size = 60 }) { const [url, setUrl] = useState(null); useEffect(() => { let ok = true; QRCode.toDataURL(text, { margin: 1, width: size * 2 }) .then((u) => { if (ok) setUrl(u); }) .catch(() => {}); return () => { ok = false; }; }, [text, size]); return url ? QR : ; } const esc = (s) => (s || "").replace(/[<>&]/g, ""); /** Druckt QR-Etiketten in einem neuen Fenster. entries: [{ text, line1, line2 }]. */ export async function printQrLabels(title, entries) { const labels = await Promise.all(entries.map(async (e) => { const url = await QRCode.toDataURL(e.text, { margin: 1, width: 260 }); return `
${esc(e.line1)}
` + `
${esc(e.line2)}
`; })); const w = window.open("", "_blank"); if (!w) return false; w.document.write( `${esc(title)}${labels.join("")} `, ); w.document.close(); return true; }