Written by Samoe (John Sam Fuchs)
https://github.com/Samoe97/citrabox
CitraBox is an app built in Python 3.9 to assist, automate, and optimize the workflow of a Large Format Printing operation. It includes features like file imposition, organization and archival tools, and pre-flight file checks. It also includes internet-enabled features that heavily leverage the HP PrintOS SiteFlow API like automatically naming files and modifying the order database.
Note: CitraBox is not available to the public for the time being, as it is too heavily specialized for one client. A future rewrite will be targeted at a broad range of users and include more general and configurable features.
History
CitraBox began as a suite of JavaScript modules for Adobe Illustrator. The client needed a robust solution for creating sticker sheets that optimized material use and workflow. Previously, the sticker sheets were being created using imposition features within HP PrintOS, but limitations within the software meant that extra material was being used on every print that led to slower production and lower return on investment.
After creating the sticker tool, I expanded its functionality and created other useful tools for specialty products that required specific print jig setups like Ceramic Tile Coasters, Bottlecaps, and Round Metal Signs. I also created tools to assist myself with more normal digital prepress tasks like exporting wall wrap panels, vehicle wrap proofs and print files, even automated white ink spot color conversion.
After using these modules and developing more for two months, I recognized that the speed at which I was generating files would need to increase drastically to prevent my computer from being locked down for up to 20 minutes at a time when processing large amounts of files. Each sticker sheet took about 6 seconds to generate, and we’d generate upwards of 200 per day. I then turned my attention on using Python to create a distinct application outside of Adobe Illustrator, in hopes that I could generate sticker sheet PDFs using freely available libraries. The full Python rewrite of all my modules took about a month to research and develop, but once I created a strong, expandable method for file imposition and creation, the rest of the functionality only took about 3 days to put together. From there, I would learn and implement Python GUI libraries like Tkinter and PyQt5, with the former winning out for the first few iterations of the program due to my comfort levels within its workflow.
Extra Libraries Used:
tkinter (gui layout)
pillow (gui images)
pdfrw (pdf creation and manipulation)
reportlab (pdf info parsing)
requests (api features)
os (file and directory manipulation)
Extra Modules:
sLog : a custom console log displayed in the program gui to provide information and non-intrusive confirmation of user actions
Cerberus : a watchdog companion program that can be run in the background on an admin user's computer. constantly looks at incoming file folders and automatically executes CitraBox actions on behalf of the user, such as renaming files immediately upon receipt, creation of necessary print files, etc.
Controller : a web app built in Flask that allows an admin user to execute CitraBox actions remotely
Archiver : a module that executes after successful creation of print files. moves raw input files to an archive on a local server, creating folders that allow operators to easily find files that need further work.