package com.itextpdf.samples.htmlsamples.chapter07; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.List; import com.itextpdf.html2pdf.ConverterProperties; import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.IBlockElement; import com.itextpdf.layout.element.IElement; import com.itextpdf.licensing.base.LicenseKey; /** * Can we parse different HTML files and combine them into one PDF? * Yes, this can be done in different ways. This example shows how * to convert HTML to iText elements, and how to add the elements * of the different HTML files to a single PDF document. */ public class C07E02_CombineHtml2 { /** * The Base URI of the HTML page. */ public static final String BASEURI = "./src/main/resources/htmlsamples/html/"; /** * An array containing the paths to different HTML files. */ public static final String[] SRC = { String.format("%sinvitation.html", BASEURI), String.format("%ssxsw.html", BASEURI), String.format("%smovies.html", BASEURI) }; /** * The path to the resulting PDF file. */ public static final String DEST = "./target/htmlsamples/ch07/bundle2.pdf"; /** * The main method of this example. * * @param args no arguments are needed to run this example. * @throws IOException signals that an I/O exception has occurred. */ public static void main(String[] args) throws IOException { try (FileInputStream license = new FileInputStream(System.getenv("ITEXT7_LICENSEKEY") + "/itextkey-html2pdf_typography.json")) { LicenseKey.loadLicenseFile(license); } File file = new File(DEST); file.getParentFile().mkdirs(); new C07E02_CombineHtml2().createPdf(BASEURI, SRC, DEST); } /** * Creates the PDF file. * * @param baseUri the base URI * @param src an array with the paths to different source HTML files * @param dest the path to the resulting PDF * @throws IOException signals that an I/O exception has occurred. */ public void createPdf(String baseUri, String[] src, String dest) throws IOException { ConverterProperties properties = new ConverterProperties(); properties.setBaseUri(baseUri); PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); for (String html : src) { List elements = HtmlConverter.convertToElements(new FileInputStream(html), properties); for (IElement element : elements) { document.add((IBlockElement) element); } } document.close(); } }