Usage • Examples • Setup • Resources
MCxPrint is a platform-agnostic, pure Swift package which programmatically generates printable SVG files from JSON input. The SVG files are also converted to PDF via Cairo svg2pdf.
The MCxPrint Swift package is structured to provide both a command line tool and framework for inclusion in other Swift Packages. The command line tool supports both desktop and server backend workflows. Although, the current document layout focus is labels, the framework is intended to be extensible so that other layouts can be added.
Setup ▴
Data Input
Book label JSON data files are read from /var/spool/mcxprint_spool/. Each layout type has one-to-one association with a subdirectory within mcxprint_spool. Currently implemented directories are:
labelfilelabelbook
Typography
MCxPrint uses JSON-base font metrics generated by MCxFontMetrics A MCxPrint <PostscriptFontName>_<PointSize>.json for each font used needs to be placed in /opt/local/fontmetics/. The corresponding font must also be installed on the system.
PDF Generation
At this development phase, PDF generations is based on Cairo svg2pdf. At some future date PDF generation would be switched to something like PureSwift/Cairo.
macOS
brew install svg2pdfUbuntu
If Inscape is installed, then the following scripts can be added. Apply chmod +x to the script files. Place the scripts someplace know to the $PATH such as ~/bin/, /usr/local/bin or /opt/local/bin/
svg2pdf
#!/bin/bash
for i in $@; do
inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
donesvg2png
#!/bin/bash
for i in $@; do
inkscape --without-gui --export-png="$(basename $i .svg).png" $i
doneAlternately, CairoSVG could be setup up on systems with Python 3.5+.
Template Examples ▴
The library book label is sized for the Brother PT 24mm (1") laminated labels.
The library file label is sized for the Avery 5027 label sheet or equivalent.

