PDF files generated from Microsoft Dynamics AX can get quite large in size. In this thread I share some hints on how you can potentially reduce the size of the generated PDF file.
During PDF generation each image will be temporarily converted to a 24bit BMP file and afterwards stored as a JPG. So it does not really depend how good compressed the file is (JPG vs BMP), but the image size can make a difference. The suggestion is to keep the size (width/height) as small as possible but not smaller than the size it has to be on the document.
For example, if the size of your logo on the document is 60×20 mm then avoid using an image whose original size is, say, 240×80 mm. In this case use a logo with exactly the same size of 60×20 mm.
There is a parameter in the ClassDeclaration of the PDFViewer where you can set the compression level of the binary streams used for text and images within the PDF file:
As far as I could find out the levels are like this:
1 – best speed
15 – best compression
Setting the compression level to 15, I have observed the size to be smaller (about ~10% smaller in size). However this may slightly affect the speed of PDF generation due to the higer compression.
Using predefined PDF fonts
Embedding fonts ensures that the document will display using the fonts used to create the document. However this can cause the PDF file generated to be quite large. An alternative is to not embed any fonts but create the document using fonts that will already be available on the system where it will be viewed.
Furthermore, another alternative could be to use one of the predifined fonts during PDF generation which are supported by all PDF Viewers. This means that these fonts can be displayed regardless of being installed on the machine where the PDF file is being viewed. You do not have to embed the font (‘PDF embed fonts’ option) when generating a PDF file from AX. This later option will probably give you the smallest generated file size.
List of predefined fonts, supported by all PDF viewers
Especially the Helvetica font might be of interest, as the Arial font is very similar to the Helvetica font. However this font is not a Microsoft Windows standard font (http://www.microsoft.com/typography/fonts/macosx.aspx) and has to be installed separately.
If you search for the Helvetica font on the internet you be pointed to multiple site where you can buy this font.
When you consider to use a predefined font then you have to do the following code change in the endReport method of PDFViewer class:
// Delete the fonts stored in the fontdescrs map
mapEnumerator = fontDescrs.getEnumerator();
font = mapEnumerator.currentValue();