PDFControls.NET 2.0 PDFRasterizer.NET 3.0

In general, the speed of a print job is related to the graphical complexity of a PDF document. In some cases, this is inherent to the document, and there is little than can be done about it. In other cases however, slow printing may be relatively easy to improve. In this article, we will discuss a single common cause for large print jobs, and its solution. This is related to the printing of textual information (fonts). If the information below does not help, please send us the PDF document, so we can try to identify other possible causes for a slow printing speed.

Note: this information is related to PDFRasterizer.NET 3.0 and PDFControls.Net 2.0

By default, our software prints all text as a sequence of low level graphical instructions, such as lines, curves, and fills. The main reason that our software employs this method, is that .Net does not have support for certain types of fonts as found in a PDF document. By interpreting the PDF font information and drawing all glyphs explicitly, our software will produce the most accurate output. The downside is that this may lead to large print spool files, causing the print job to become slow. To deal with this, one can instruct our software to not draw all text itself, but have .Net render particular pdf fonts as system fonts.

In order to do this, one needs to subscribe the the ResolveFont event of RenderSettings.TextSettings. This event will be raised whenever a new pdf font is encountered. It allows the programmer to indicate a different source for the font. In particular it allows mapping a pdf font to a system font, as installed on your system. Details of this method can be found in the Developer guide that is included in the distribution (See the chapters on Fonts).

Please note that the results of this mapping depend on the resemblance of the system font to the original pdf font. Also: in order for this mapping to work, the font in the PDF file must provide unicode information for each character. Not all PDF files provide this.