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

如何在iText中从HTML创建Phrase对象?支持iText 7、Java及iText 5示例

当然可以啦!不管是你正在用的iText 7,还是旧版本的iText 5,都能轻松实现从HTML生成Phrase对象的需求。下面我分别给你对应的Java示例,步骤清晰,直接就能跑起来~

iText 7 实现示例

iText 7的核心库不直接处理HTML,所以需要额外引入html2pdf模块来完成HTML解析。先给你Maven依赖配置(如果用Gradle的话可以对应调整):

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.2.5</version>
    <type>pom</type>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>html2pdf</artifactId>
    <version>4.0.2</version>
</dependency>

接下来是Java代码示例:

import com.itextpdf.html2pdf.HtmlConverter;
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.layout.element.Phrase;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class HtmlToPhraseIText7 {
    public static void main(String[] args) throws IOException {
        // 待转换的HTML内容,支持基础格式化标签
        String htmlContent = "<b>Hello</b> <i>World!</i> 这是从HTML转成的Phrase对象";
        
        // 将HTML解析为iText 7的元素列表
        List<IElement> htmlElements = HtmlConverter.convertToElements(htmlContent);
        
        // 创建Phrase并添加解析后的元素
        Phrase targetPhrase = new Phrase();
        for (IElement element : htmlElements) {
            targetPhrase.add(element);
        }
        
        // 验证:把Phrase写入PDF查看效果
        PdfWriter writer = new PdfWriter(new File("html_to_phrase_itext7.pdf"));
        PdfDocument pdfDoc = new PdfDocument(writer);
        Document doc = new Document(pdfDoc);
        
        doc.add(targetPhrase);
        
        doc.close();
    }
}

简单说下逻辑:先把HTML转换成iText 7能识别的元素列表,再把这些元素逐个加入到Phrase中,这样Phrase就保留了HTML里的格式(比如加粗、斜体),最后可以把它添加到PDF文档里验证结果。

iText 5 实现示例

iText 5用的是XML Worker模块来处理HTML,API更直接,直接提供了生成Phrase的方法。先看Maven依赖:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>xmlworker</artifactId>
    <version>5.5.13.3</version>
</dependency>

对应的Java代码:

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringReader;

public class HtmlToPhraseIText5 {
    public static void main(String[] args) throws IOException, DocumentException {
        String htmlContent = "<b>Hello</b> <i>World!</i> 这是iText 5中从HTML转成的Phrase";
        
        // 直接用XMLWorkerHelper把HTML解析成Phrase
        Phrase targetPhrase = XMLWorkerHelper.parseToPhrase(new StringReader(htmlContent));
        
        // 验证:写入PDF查看效果
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream("html_to_phrase_itext5.pdf"));
        document.open();
        document.add(targetPhrase);
        document.close();
    }
}

这里更简单,XMLWorkerHelper.parseToPhrase()方法直接接收HTML的Reader对象,就能生成带格式的Phrase,非常方便。

小提示

如果你的HTML包含复杂元素(比如表格、图片),转换后的Phrase可能需要额外处理,但基础的文本格式化(加粗、斜体、颜色等)都能完美保留哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:11:07