天天看點

xhtmlrenderer 多個html 轉為一個pdf

public class PDFUtil {

    public static void htmls2pdf(String[] htmlFiles, String pdfFile) {
   
        Document document = new Document();
        PdfCopy pdfCopy = null; //建立一個新檔案
        try {
            pdfCopy = new PdfCopy(document, new FileOutputStream(pdfFile));
            document.open();
            for (String htmlFile : htmlFiles) {
            	String url = new File(htmlFile).toURI().toURL().toString();
                ByteArrayOutputStream os = new ByteArrayOutputStream();
                ITextRenderer renderer = new ITextRenderer();
                renderer.setDocument(url);
                // 解決中文不顯示問題
                ITextFontResolver fontResolver = renderer.getFontResolver();
                String path = ResourceUtils.getURL("classpath:").getPath();
                fontResolver.addFont(path + "static/pdf/font/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                renderer.layout();
                renderer.createPDF(os);
                PdfReader pdfReader = new PdfReader(os.toByteArray());
                for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
                    PdfImportedPage importedPage = pdfCopy.getImportedPage(pdfReader, i);
                    pdfCopy.addPage(importedPage);
                }
                os.close();
            }
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
    }

    public static void main(String[] args) {
        try {
            String[] s = new String[]{
                    "C:\\Users\\lihaitao\\Desktop\\1.html", "C:\\Users\\lihaitao\\Desktop\\2.html"
            };
            htmls2pdf(s, "C:\\Users\\lihaitao\\Desktop\\cc.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}