You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iText7中将HTML字符串解析为Paragraph对象?

用iText7的pdfHTML解析HTML字符串为Paragraph对象

没问题,完全可以用iText7官方提供的pdfHTML插件实现这个需求——它正是用来替代iText5中XML Worker的工具,能轻松把HTML字符串解析成iText7的Paragraph(及其他布局元素)。

步骤1:引入依赖

以Maven为例,在pom.xml中添加pdfHTML的依赖(建议使用最新稳定版本):

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>html2pdf</artifactId>
    <version>5.0.0</version>
</dependency>

步骤2:示例代码

下面是一个完整的Java示例,将HTML字符串解析为Paragraph并写入PDF:

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.IElement;
import com.itextpdf.html2pdf.HtmlConverter;

import java.io.ByteArrayInputStream;
import java.util.List;

public class HtmlToParagraphDemo {
    public static void main(String[] args) throws Exception {
        // 待解析的HTML字符串
        String htmlContent = "<p>这是一段带<b>加粗</b>、<i>斜体</i>格式的HTML文本</p>";
        
        // 将HTML字符串转为输入流(pdfHTML支持输入流/文件作为输入源)
        ByteArrayInputStream htmlStream = new ByteArrayInputStream(htmlContent.getBytes());
        
        // 解析HTML,得到iText7的元素列表
        List<IElement> elements = HtmlConverter.convertToElements(htmlStream);
        
        // 创建PDF文档实例
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter("result.pdf"));
        Document layoutDoc = new Document(pdfDoc);
        
        // 遍历解析后的元素
        for (IElement element : elements) {
            // 筛选出Paragraph对象并做自定义处理
            if (element instanceof com.itextpdf.layout.element.Paragraph) {
                com.itextpdf.layout.element.Paragraph paragraph = (com.itextpdf.layout.element.Paragraph) element;
                // 示例:设置段落底部间距
                paragraph.setMarginBottom(15);
                layoutDoc.add(paragraph);
            } else {
                // 其他类型元素(如Span、List等)也可直接添加到文档
                layoutDoc.add(element);
            }
        }
        
        // 关闭文档
        layoutDoc.close();
    }
}

关键说明

  • HtmlConverter.convertToElements()是核心方法,它会把HTML标签映射为对应的iText7布局元素:<p>标签会被转换成Paragraph,<b>/<i>会转换成Bold/Italic样式的Text或Span。
  • 你可以根据需求筛选Paragraph对象,单独做样式调整(比如字体、间距、对齐方式等),或者直接把所有解析后的元素添加到PDF文档中。

内容的提问来源于stack exchange,提问作者BB71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:42:39