利用itext將html檔案轉化pdf檔案(5)——多個檔案的合併
阿新 • • 發佈:2019-01-31
工作中經常會遇到將多個html檔案轉化為pdf,並且將pdf轉化之後的檔案進行合併。官方參考文件
下面來介紹簡單的操作:
import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.IOException; import com.itextpdf.html2pdf.ConverterProperties; import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.html2pdf.css.media.MediaDeviceDescription; import com.itextpdf.html2pdf.css.media.MediaType; import com.itextpdf.io.source.ByteArrayOutputStream; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.utils.PdfMerger; import com.itextpdf.layout.font.FontProvider; public class ManyToOne { public static String baseuri = "G:\\TPractice\\workOne\\TransforePdf\\src\\main\\resources\\multipliesToOne\\"; // html source file, use array to savage html public static String[] htmlSource = { String.format("%sinvitation.html", baseuri), String.format("%ssxsw.html", baseuri), String.format("%smovies.html", baseuri) }; public static String des = "G:\\TPractice\\workOne\\TransforePdf\\src\\main\\resources\\result\\merge.pdf"; public static void main(String[] args) { try { createPdf(baseuri, htmlSource, des); System.out.println("ok"); } catch (IOException e) { e.printStackTrace(); } } // create pdf public static void createPdf(String baseUri, String[] src, String dest) throws IOException { ConverterProperties properties = new ConverterProperties(); properties.setBaseUri(baseUri); //add font FontProvider font = new FontProvider(); font.addStandardPdfFonts(); font.addFont("C:\\Windows\\Fonts\\STHeitibd.ttf");// 你的字型檔案 properties.setFontProvider(font); //set media print style MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN); properties.setMediaDeviceDescription(mediaDeviceDescription); PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); PdfMerger merger = new PdfMerger(pdf); //use foreach to create pdf and merge the pdf which converted yet for (String html : src) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfDocument temp = new PdfDocument(new PdfWriter(baos)); HtmlConverter.convertToPdf(new FileInputStream(html), temp, properties); temp = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray()))); merger.merge(temp, 1, temp.getNumberOfPages()); temp.close(); } pdf.close(); } }
沒有什麼可以說的,參考的都是官方文件,只需要自己定義好路徑即可。