Upload a CSV of products and lay them out as 103 × 73 mm cards on A3 or A4, ready for printing.
Access-Control-Allow-Origin. In the S3 console, open the bucket → Permissions → Cross-origin resource sharing (CORS) and paste:
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "HEAD"],
"AllowedOrigins": ["*"],
"ExposeHeaders": []
}
]
Save and retry. Preview already works because plain <img> tags don't need CORS — only canvas reads do.
Pick which CSV column feeds each field on the card. Multi-line text in allergens: use a quoted cell with literal line breaks, or write “\n” between lines.
Pick a card, then drag elements or type exact x / y / size. Use Edit scope to change just this card or all cards. The 15s sheet refresh updates text only — your layout edits stay.
Fonts cover Traditional Chinese. Each distinct font on a sheet is embedded in the PDF (several MB each) — keep the variety small to keep PDFs fast.
Editing a field updates this card and, when signed in, writes that cell back to the Google Sheet.
This is the actual generated PDF — what you see is exactly what “Generate PDF” downloads.