java将html转为pdf文件

版权声明:有不足之处欢迎指出,欢迎交流 https://blog.csdn.net/qq_33594101/article/details/78965110

pom.xml

		<!--java生成pdf需要的jar包-->
        <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.6</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.5.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

java代码演示

/**
 * pdf工具类
 */
public class PDFUtil {

    public static void htmlToPDF(String htmlString, String pdfPath) {
        try {
            InputStream htmlFileStream = new FileInputStream(htmlString);
            // 创建一个document对象实例
            Document document = new Document();
            // 为该Document创建一个Writer实例
            PdfWriter pdfwriter = PdfWriter.getInstance(document,
                    new FileOutputStream(pdfPath));
            pdfwriter.setViewerPreferences(PdfWriter.HideToolbar);
            // 打开当前的document
            document.open();
            InputStreamReader isr = new InputStreamReader(htmlFileStream, "UTF-8");
            XMLWorkerHelper.getInstance().parseXHtml(pdfwriter, document,htmlFileStream,null,null,new MyFontsProvider());
            //XMLWorkerHelper.getInstance().p
            document.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) throws Exception {
        PDFUtil.htmlToPDF("D:\\pdf\\cc.html", "D:\\pdf\\a.pdf");
    }
}

/**
 * 处理中文不显示和乱码问题
 */
class MyFontsProvider extends XMLWorkerFontProvider {

    public MyFontsProvider(){
        super(null, null);
    }

    @Override
    public Font getFont(final String fontname, String encoding, float size, final int style) {
        String fntname = fontname;
        if (fntname == null) {
            fntname = "宋体";//windows下
            //fntname = "fontFile/simsun.ttf";//linux系统下
        }
        if (size == 0) {
            size = 4;
        }
        return super.getFont(fntname, encoding, size, style);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_33594101/article/details/78965110