14.9. Driverless File Transfer Print

Driverless Printing by file transfer is one of the gateways to authenticated printing from devices belonging to unauthenticated anonymous users, where either native or IPP Everywhere printing support is lacking or where user trust cannot be enforced by a Single Sign-On User Domain. This situation is typical for a BYOD [4] context.

Web Print and Mail Print offer casual printing without a hassle, since users are familiar with either file uploading or email and no printer driver needs to be installed. Since rendering of the document content is not handled by a know-it-all printer driver, not all document types are supported. See Printable File Types for a list of supported types. Driverless File Transfer Print is also implemented in the SavaPage Android Print App and RESTful Print API.

Note

Mail Print uses 127.0.0.1 (localhost) as the IP address of the requesting user.

14.9.1. Processing Driverless PDF Transfer

PDF files received from Driverless File Transfer Print are validated, repaired and processed before admitted as SafePages. These are the processing steps:

  1. Uploaded PDF document is read to check validity.

    If the PDF is assessed as invalid by the PDF library used by SavaPage, a repair is executed with pdftocairo. If repair fails, the document is rejected.

    Note

    Although shown correctly as SafePages, PDF files might not have a completely valid PDF format. When these invalid PDFs are proxy printed, CUPS filtering may deliver Page Description Language (PDL) that incorrectly describes the PDF content. As a result, printed output will not be as expected. Text can be omitted, and in some cases we observed only a single blank page was printed. To prevent this situation, SavaPage tries to repair these files, which is a modest action with minor performance impact.

    Warning

    Repair is a best-effort attempt and is no guarantee for success.

  2. If PDF is encrypted, it is decrypted. QPDF is used for this step.

  1. PDF is optimized with the ps2pdf system command.

  1. PDF font syntax is verified.

    If font errors are encountered, a repair is executed with pdftocairo, when not already executed in a previous step. When font errors persist, the PDF document is rejected.

  1. Non-embedded/non-standard PDF fonts are embedded withbest-fit fonts available on the host system.

    Note

    This is because font embedding performed by CUPS/Ghostscript might result in missing text as explained in Step 1.

  1. PDF is cleaned by executing pdftocairo command (when not already executed in a previous step) and optionally a “Ghostscript prepress” command.

    Note

    This is because the pdf2ps filter as executed by CUPS/Ghostscript might result in missing text and annotations as explained in Step 1.

  1. A final check is performed by reading the page properties of the PDF. If the check fails, a PDF optimization is performed as explained in Step 3.

You can enable/disable each step with the following configuration properties:

Driverless PDF Transfer Processing Configuration Properties

Configuration property

Description

print-in.pdf.optimize

Set to Y or N (default) to enable/disable optimization (cleaning) of PDF files with the ps2pdf system command in Step 3. See Optimizing PDFs with Ghostscript. Note: Step 7 is always performed, regardless of the value of this configuration property.

print-in.pdf.invalid.repair

Set to Y (default) or N to enable/disable repair of invalid PDF files with pdftocairo. if N, invalid PDF files are rejected.

print-in.pdf.encrypted.allow

Set to Y (default) or N to enable/disable decryption of encrypted PDF files with QPDF. If N, encrypted PDF files are rejected.

Important: this property also applies when Printing Encrypted PDF with a printer driver.

Also see SafePages.

print-in.pdf.fonts.verify

Set to Y (default) or N to enable/disable PDF font syntax validation. If Y, PDF files are checked with the pdffonts system command. When font syntax errors or warnings are encountered a repair is executed with pdftocairo (when not already executed in a previous step). If font errors persist, the PDF document is rejected if “print-in.pdf.fonts.verify.reject” is Y.

print-in.pdf.fonts.verify.reject

Set to Y (default) or N to enable/disable rejection of PDF files with font issues that cannot be repaired. If N, PDF files with font issues are accepted with an appropriate user/log message.

print-in.pdf.fonts.embed

Set to Y (default) or N to enable/disable embedding of non-embedded / non-standard PDF fonts by executing pdftocairo command (when not already executed in a previous step).

print-in.pdf.clean

Set to Y (default) or N to enable/disable PDF cleaning by executing pdftocairo command (when not already executed in a previous step).

This is a replacement for the deprecated “proxy-print.repair.enable” property. See Proxy Print.

print-in.pdf.prepress

Set to N (default) or Y to disable/enable PDF cleaning by executing command:
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress

See Config Editor on how to set this property.

Note

The pdftocairo and gs command embeds all fonts, even standard PDF fonts.

Tip

Driverless PDF Transfer statistics are shown on the Admin Web App Dashboard. The final result of a Driverless PDF Transfer Print on the display of fonts is shown in the SafePages Document Details popup dialog.