Difference between revisions of "Html2pdf"

From OpenEMR Project Wiki
(HTML2PDF and FPDI)
m
Line 1: Line 1:
HTML2PDF and FPDI are classes that allow PDFs to be created from existing HTML and existing PDF files. They are separate projects but were integrated for use with OpenEMR.  They are contained within OpenEMR's library/html2pdf directory, with the following steps used to put them there:
HTML2PDF and FPDI are classes that allow PDFs to be created from existing HTML and existing PDF files, respectively. They are separate projects but were integrated for use with OpenEMR.  They are contained within OpenEMR's library/html2pdf directory, with the following steps used to put them there:


1. Downloading HTML2PDF 3.31 from https://sourceforge.net/projects/html2fpdf/ and installing it as the library/html2pdf directory.
1. Downloading HTML2PDF 3.31 from https://sourceforge.net/projects/html2fpdf/ and installing it as the library/html2pdf directory.
Line 17: Line 17:
Then for a PDF the features of the FPDI class (integrated into HTML2PDF) come into play, as it provides the ability to insert pages from an existing PDF file into the PDF that you are building. What's really nice is that the output PDF is built in a single pass, without having to use any temporary files or command line tools. It just works.
Then for a PDF the features of the FPDI class (integrated into HTML2PDF) come into play, as it provides the ability to insert pages from an existing PDF file into the PDF that you are building. What's really nice is that the output PDF is built in a single pass, without having to use any temporary files or command line tools. It just works.


There's a CSS file style_pdf.css that can be tweaked to make the printout nicer.  This would be a good are for some additional work.
There's a CSS file style_pdf.css that can be tweaked to make the printout nicer.  This would be a good area for some additional work.


There is potential to use a newer 4.x version of HTML2PDF. Whereas 3.x bundles FPDF as its foundation for PDF manipulation, 4.x bundles TCPDF which is much larger and presumably more capable (and seems to have UTF8 support).  Currently 3.x seems more mature and is directly compatible with FPDI.  4.x will need some patching for FPDI compatibility.  The current plan is to wait a while before switching to 4.x.
There is potential to use a newer 4.x version of HTML2PDF. Whereas 3.x bundles FPDF as its foundation for PDF manipulation, 4.x bundles TCPDF which is much larger and presumably more capable (and seems to have UTF8 support).  Currently 3.x seems more mature and is directly compatible with FPDI.  4.x will need some patching for FPDI compatibility.  The current plan is to wait a while before switching to 4.x.


[[Category:Developer Guide]]
[[Category:Developer Guide]]

Revision as of 06:17, 5 October 2012

HTML2PDF and FPDI are classes that allow PDFs to be created from existing HTML and existing PDF files, respectively. They are separate projects but were integrated for use with OpenEMR. They are contained within OpenEMR's library/html2pdf directory, with the following steps used to put them there:

1. Downloading HTML2PDF 3.31 from https://sourceforge.net/projects/html2fpdf/ and installing it as the library/html2pdf directory.

2. Downloading FPDI 1.4.2 and FPDF_TPL 1.2 from http://www.setasign.de/products/pdf-php-solutions/fpdi/downloads/ and installing them into the library/html2pdf/fpdi directory.

3. Removing the examples directory from the html2pdf directory.

4. Modifying library/html2pdf/fpdi/fpdf_tpl.php so that FPDF_TPL extends MyPDF instead of FPDF. Note that FPDI extends FPDF_TPL.

5. Modifying library/html2pdf/html2pdf.class.php to create its member pdf object as an instance of FPDI instead of MyPDF.

At this point the HTML2PDF class now includes the FPDI features.

Currently HTML2PDF is used for generating PDF versions of patient reports. ob_start() combined with ob_get_clean() captures the output that would otherwise be sent to the browser. When a PDF document is encountered or the end of script is reached, the HTML up to that point is captured and fed to HTML2PDF in this way.

Then for a PDF the features of the FPDI class (integrated into HTML2PDF) come into play, as it provides the ability to insert pages from an existing PDF file into the PDF that you are building. What's really nice is that the output PDF is built in a single pass, without having to use any temporary files or command line tools. It just works.

There's a CSS file style_pdf.css that can be tweaked to make the printout nicer. This would be a good area for some additional work.

There is potential to use a newer 4.x version of HTML2PDF. Whereas 3.x bundles FPDF as its foundation for PDF manipulation, 4.x bundles TCPDF which is much larger and presumably more capable (and seems to have UTF8 support). Currently 3.x seems more mature and is directly compatible with FPDI. 4.x will need some patching for FPDI compatibility. The current plan is to wait a while before switching to 4.x.