The term preflight is adopted by the printing industry for checking files before the actual printing process. Most importantly it saves money, because print failures waste resources. Since the author can also do these checks and fix them, it also reduces communication between author and printer/publisher.
What to check?
According to a survey of Enfocus in 2008, these are the most common errors catched with their preflight software:
People forget to embed the fonts, which means that the printer might use different ones. The image resolutions are too low, so they you can see the pixels in print. On the third place are RGB colors, which might look off, because the printer uses the CMYK color space. At least, this are three most common errors.
How to check?
Luckily, most of the checks are pretty simple. Using the python-poppler library a check that all used fonts are embedded looks like this:
url = "file://"+path
doc = poppler.document_new_from_file(url, None)
fontinfo = poppler.FontInfo(doc)
font = fontinfo.scan(doc.get_n_pages())
while True:
if not font.is_embedded():
print "font not embedded:", font.get_full_name()
if not font.next():
break
Stripping away the poppler boilerplate, it is just a loop over all fonts and the check, whether it is embedded. The hard part about this checking is the user interface. There are professional solutions from Markzware, Adobe, and others. However, i found no cheap software for the hobby printer or even some Open Source / Free Software program.
Vorflug
This is why i looked into the poppler library and made myself the vorflug tool. For now, it checks the only the three common errors above. Thanks to the poppler team for making it easy!