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

使用Java将HTML转换为PDF的技术实现问题咨询

解决Java使用iText将HTML转换为PDF的问题

首先得提醒你:你用的itextpdf-5.1.0和xmlworker-5.5.6版本不兼容!iText和XML Worker的版本必须完全一致,否则很容易出现类找不到、方法不匹配这类奇怪的异常,建议把两个jar包都换成5.5.6版本的。

下面是补全并优化后的可运行代码:

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.ByteArrayInputStream;

public class HtmlToPdfConverter {
    public static void main(String[] args) {
        // 注意:如果你的HTML内容是带转义字符(比如<)的,要先转成正常HTML标签再传入
        String emailBody = "<html><body> This is my Project </body></html>";
        
        try {
            OutputStream file = new FileOutputStream(new File("E:\\Test.pdf"));
            Document document = new Document();
            PdfWriter writer = PdfWriter.getInstance(document, file);
            
            // 打开文档准备写入内容
            document.open();
            
            // 用XMLWorkerHelper解析HTML并写入PDF
            XMLWorkerHelper.getInstance().parseXHtml(
                writer, 
                document, 
                new ByteArrayInputStream(emailBody.getBytes("UTF-8"))
            );
            
            // 一定要记得关闭资源,避免文件损坏
            document.close();
            file.close();
            
            System.out.println("PDF文件生成成功啦!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

几个关键细节要注意:

  • 版本统一:再次强调,iText和XML Worker版本必须对齐,这是这类问题最常见的坑。
  • HTML转义处理:如果你的emailBody里是&lt;html&gt;这种转义后的字符串,得先转成正常的<html>标签,不然XMLWorker会把它们当普通文本输出,不会解析成HTML结构。
  • 字符编码:指定UTF-8编码能避免中文、特殊字符出现乱码的情况。
  • 资源关闭:文档和输出流一定要手动关闭,不然可能生成的PDF会损坏无法打开。

如果运行时碰到具体的异常(比如类找不到、解析报错),可以把异常信息贴出来,我再帮你针对性排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:19:34