Java使用itextpdf.html2pdf处理HTML转PDF

pom文件
  <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>html2pdf</artifactId>
      <version>5.0.3</version>
  </dependency>
java代码

import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class HtmlToPdfText {

    /**
     * itextpdf 通过html转pdf
     *
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        String htmlTemplate = FileUtil.filePathToStr("font-family.html");
        // 默认加载系统所有字体,设置默认字体为微软雅黑
        // 字体需要生效的话,需要安装ttf或otf结尾的字体,ttc结尾的不生效,而且需要为所有用户安装
        DefaultFontProvider defaultFontProvider = new DefaultFontProvider(false, false, true, "Microsoft YaHei");
        ConverterProperties converterProperties = new ConverterProperties();
        converterProperties.setFontProvider(defaultFontProvider);
        // 加载中文字体, 创建一个输出流
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        HtmlConverter.convertToPdf(htmlTemplate, bos, converterProperties);
        OutputStream outputStream = new FileOutputStream("output1.pdf"); // 初始化 outputStream
        bos.writeTo(outputStream);
    }
效果图

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 iText 的 FontProvider 来设置中文字体时,可能会出现中文字体无效或者中文乱码的问题。这个问题通常是由于字体文件路径不正确或者字体文件本身不支持中文字符集所导致的。 解决这个问题的方法是: 1. 确认字体文件路径是否正确,可以使用绝对路径或者相对路径来指定字体文件的位置; 2. 确认字体文件是否包含中文字体,可以使用 FontFactory.registerDirectory() 方法来注册字体文件目录,这样 iText 就可以自动识别字体文件中的中文字体; 3. 如果字体文件中没有中文字体,可以使用 iText 的中文字体库,比如 iTextAsian.jar,它包含了常用的中文字体,可以通过设置 FontProvider 来使用这些字体。 以下是一个设置中文字体的示例代码: ``` FontProvider fontProvider = new DefaultFontProvider(true, true, true); fontProvider.addDirectory("path/to/your/font/directory"); fontProvider.addFontSubstitute("SimSun", "STSong-Light"); ConverterProperties properties = new ConverterProperties().setFontProvider(fontProvider); HtmlConverter.convertToPdf(new FileInputStream(htmlFile), new FileOutputStream(pdfFile), properties); ``` 在上面的代码中,我们首先创建了一个 FontProvider 对象,通过 addDirectory() 方法来指定字体文件所在的目录,然后通过 addFontSubstitute() 方法来设置中文字体的替代字体,最后将 FontProvider 设置到 ConverterProperties 对象中,用于 HTML PDF使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值