A freelance graphic designer developed a web-based layout generator to automate the creation of simple large-format banners. The service allows users to input text, colors, and dimensions, producing a vector PDF ready for printing. The platform supports features like batch generation from CSV files and integration with printing houses.
The backend is built on Python 3.11 with FastAPI and Pydantic, using SQLite for storage. To handle heavy PDF processing, the system uses a ProcessPoolExecutor to manage Ghostscript 10 tasks, preventing event loop blocking. Preview images are generated via Pillow, while the final PDF is constructed using ReportLab and Ghostscript.
The generator dynamically calculates the Ghostscript resolution parameter (-r) based on the banner size to ensure coordinates remain below the 32,767 limit, which is a compatibility constraint for older PDF parsers. This ensures that large banners, such as three-meter prints, maintain high precision without exceeding technical limits.
The service avoids embedding ICC profiles like ISO Coated v2, as wide-format printing relies on specific RIP-station profiles. Instead, it outputs files in DeviceCMYK with fixed color recipes. The system enforces a Total Area Coverage (TAC) limit of 240% and ensures black text is set to K100 to prevent registration issues during printing.
Quality control is handled by an internal 'pdf_check' script that validates every generated file for 1:1 scale, absence of RGB color spaces, and font conversion to curves. The frontend uses plain HTML, CSS, and JavaScript, with deployment managed via Docker Compose and GitHub Actions, which runs over 1,100 automated tests.

