mPDF uses a lot of memory on the server. If you get an error message that you have exceeded your memory limits, try the following:
- it is more efficient in very long documents to process the HTML code in small chunks rather than as one large HTML string
- use ini_set("memory_limit","128M") or similar at the top of your script to allocate more memory
- generate a smaller mpdf.php file - see Reducing Memory Usage
- avoid using GIF image files, or PNG images with the alpha channel (transparency) or interlaced PNG images
- set simpleTables if you are using large tables and do not require complex borders or padding
- setting packTabledata can save considerably on memory usage, BUT at a significant cost in processing time
- setting cacheTables = TRUE makes the most efficient use of memory, but requires temporary data written to files (which may be resource intensive) and will add significantly to processing time
- use a limited number of fonts, avoiding large font file sizes
PHP 5.3.x on Windows
Memory can become exhausted rapidly when running PHP 5.3.x on Windows. I believe this may be a bug in the Windows version of PHP. A script that exhausts 256Mb memory on Windows may only use 18Mb when run on Linux. It appears to happen most often (or exclusively) when using tables.
So if you are only using Windows in a test environment and use Linux for production, you should consider setting the memory limit to maximum on Windows e.g. ini_set(“memory_limit”,”-1”).
Small changes to your code e.g. the CSS applied to table elements can have dramatic, but unpredictable effects on the memory usage. For example changing an attribute on a table cell to a css style.
One user has reported this problem disappearing when updating from 5.3.8 to PHP 5.3.10, so this may be a bug that is fixed?