wkhtmltopdf和itext两种工具详细对比

本文对比了两种将HTML转换为PDF的方法:iText和wkhtmltopdf。 wkhtmltopdf因其简单易用和高质量转换效果被推荐,而iText虽然生成的PDF质量高,但实现复杂且需要安装字体。示例展示了如何在Java中使用wkhtmltopdf和iText进行转换。
摘要由CSDN通过智能技术生成

一、.区别概述
在这里插入图片描述
二、详细对比
1.itext
这种方法生成的pdf质量会更高,但是在后端实现的步骤过于复杂,而且需要安装字体,对于html代码要求也是比较高,缺少标签的时候会报错

2.wkhtmltopdf
这种方式实现比较简单,wkhtmltopdf是一个软件,这个软件生成pdf支持多种方式,可以直接使用网页网址将页面转化为pdf,也可以使用本地的文件将其转为pdf,而且转化结果及其的完美,加上实现的过程比较简单,所以我觉得这是最优的一种html转化为pdf的方式

三、操作过程

1.安装wkhtmltopdf及示例
wkhtmltopdf把html转成pdf很简单,只要在windows命令行中输入c:\wkhtmltopdf.exe http://www.cnblogs.com c:\cnblogs.pdf

就可以把csdn网页转成pdf,并保存到C盘根目录。

在java中调用wkhtmltopdf的命令Runtime.getRuntime().exec(“c:\wkhtmltopdf.exe http://www.cnblogs.com c:\cnblogs.pdf”)就可以实现转换。
在这里插入图片描述
2.itext使用示例

<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.11</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.5.11</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

作者:washmore
链接:https://ld246.com/article/1528278305572
来源:链滴
协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerFontProvider;
import com.itextpdf.tool.xml.XMLWorkerHelper;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;

public class PDFUtil {
    public static void writeStringToOutputStreamAsPDF(String html, OutputStream os) {
        writeToOutputStreamAsPDF(new ByteArrayInputStream(html.getBytes()), os);
    }

    public static void writeToOutputStreamAsPDF(InputStream html, OutputStream os) {
        try {
            Document document = new Document(PageSize.A4);
            PdfWriter pdfWriter = PdfWriter.getInstance(document, os);
            document.open();
            XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
            worker.parseXHtml(pdfWriter, document, html, Charset.forName("UTF-8"), new AsianFontProvider());
            document.close();
        } catch (Exception e) {
        }
    }
}
/**
 * 用于中文显示的Provider
 */
class AsianFontProvider extends XMLWorkerFontProvider {
    @Override
    public Font getFont(final String fontname, String encoding, float size, final int style) {
        try {
            BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            return new Font(bfChinese, size, style);
        } catch (Exception e) {
        }
        return super.getFont(fontname, encoding, size, style);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值