Posted at: 4:27 PM on 01 February 2013 by Muhimbi
Both the Muhimbi PDF Converter Services and the Muhimbi PDF Converter for SharePoint have had the ability to carry out PDF post processing for quite some time (e.g. PDF/A1b conversion, Applying Security settings, watermarking). Version 7 adds a number of additional post processing facilities including the ability to set PDF Viewer Preferences and the ability to embed or strip fonts, changing the PDF Version and linearizing a PDF (a.k.a. Fast Web View).
Unlike setting the PDF Viewer Preferences, the facilities described in this post require a license for the PDF Converter Professional, an add-on license for the PDF Converter Services and PDF Converter for SharePoint.
The following Post Processing settings are available in the new OutputFormatSpecificSettings_PDF class:
- FastWebView: Enable Fast Web View / Linearization to optimize the PDF for output on the web.
- EmbedAllFonts: Embed all fonts into the PDF. Certain fonts may not allow embedding and will therefore never be embedded. Specifying ‘false’ will remove all fonts from the PDF.
- SubsetFonts: Specify if font-subsetting is enabled or not. Font subsetting embeds only those characters that are used in a document, instead of the entire font. This reduces the size of a PDF file that contains embedded fonts, but may make future content changes problematic.
You can send these settings to the web service by passing a reference to an instance of OutputFormatSpecificSettings_PDF to the ConversionSettings.OutputFormatSpecificSettings (or MergeSettings.OutputFormatSpecificSettings) property. For details see the following class diagram.
Post processing is enabled by setting the OutputFormatSpecificSettings_PDF.PostProcessFile property to true. Please make sure that the Ghostscript prerequisite is installed and configured as described in this Knowledge Base Article. In order to make use of FastWebView Ghostscript 9.07 or newer will need to be installed.
When Post processing is enabled the PDF Profile / Version specified in ConversionSettings.PDFProfile will automatically be applied to the output file. This includes downgrading the content of the PDF where necessary.
As of Version 7.0 the PDFProfile property supports the following PDF Versions and Profiles:
- Default: Use whatever PDF version comes out of the underlying converter / source PDF file.
- PDF_A1B: Use the PDF/A1b standard for long term archiving.
- PDF_A2B: Use the PDF/A2b standard for long term archiving.
- PDF_1_1: PDF 1.1 output (Compatible with Acrobat 2.0 (1994) and later).
- PDF_1_2: PDF 1.2 output (Compatible with Acrobat 3.0 (1996) and later).
- PDF_1_3: PDF 1.3 output (Compatible with Acrobat 4.0 (2000) and later).
- PDF_1_4: PDF 1.4 output (Compatible with Acrobat 5.0 (2001) and later).
- PDF_1_5: Use PDF Version 1.5. For legacy reasons, out-of-the-box this is treated the same as 'Default', but post processing to 1.5 can be forced using the Config Value "PDF.PostProcessPDF1.5". When post processing is enabled the PDF file will be made compatible with PDF 1.5 (Compatible with Acrobat 6.0 (2003) and later).
- PDF_1_6: PDF 1.6 output (Compatible with Acrobat 7.0 (2005) and later).
- PDF_1_7: PDF 1.7 output (Compatible with Acrobat 8.0 (2006) and later).
Please note that when FastWebView or PDF/A is enabled you cannot specify any PDF Security settings.
If you are developing in Java then please use Axis2 (example) as wsimport (example) does not deal well with web service properties that derive from a common base class (You need to jump through a lot of hoops, seriously, don’t use wsimport in this case).
If you have any questions then leave a comment below or contact us.