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

使用iTextSharp在C#中从HTML生成并自动下载PDF失败

我帮你排查下这段iTextSharp生成PDF代码里的几个关键问题,应该能解决你生成失败的问题:

1. 首先修正HTML语法错误

你写的TempHtml里有明显的语法问题:<bodyHello World是残缺标签,而且不必要的&lt;/&gt;转义也会干扰HTML解析。修正后的HTML应该是:

string TempHtml = "<html><head><title></title></head><body>Hello World</body></html>";

2. 补充缺失的PDF核心生成步骤

你的代码片段只初始化了Document,但遗漏了iTextSharp生成PDF的关键流程。下面是完整可运行的修正代码:

byte[] bytes = null;
// 用using包裹流,确保资源正确释放
using (MemoryStream memoryStream = new MemoryStream())
{
    RetailerInvoice Data = new RetailerInvoice();
    try
    {
        var _ResultId = dataTypeConverter.ConvertToGuid(RetailerId);
        string TempHtml = "<html><head><title></title></head><body>Hello World</body></html>";
        
        using (StringReader sr = new StringReader(TempHtml))
        {
            Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            // 关联PdfWriter和内存流
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
            
            pdfDoc.Open();
            // 用XMLWorkerHelper解析HTML(比旧版HTMLWorker更稳定,支持更多HTML/CSS)
            XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
            
            pdfDoc.Close();
            // 将流转换为字节数组,用于后续下载
            bytes = memoryStream.ToArray();
        }

        // 这里添加下载逻辑示例(如果是Web环境)
        // Response.ContentType = "application/pdf";
        // Response.AddHeader("content-disposition", "attachment;filename=RetailerInvoice.pdf");
        // Response.BinaryWrite(bytes);
        // Response.End();
    }
    catch (Exception ex)
    {
        // 建议捕获异常并记录日志,方便排查具体问题
        // 比如HTML中存在iTextSharp不支持的标签/样式,都会抛出异常
        throw;
    }
}

3. 额外注意事项

  • 确保你引用了iTextSharp和iTextSharp.xmlworker NuGet包(XMLWorker是解析HTML的核心依赖,旧版HTMLWorker已被废弃);
  • iTextSharp对HTML/CSS的支持有限,复杂样式(比如flex布局、某些CSS选择器)可能无法正常解析,需要简化HTML结构;
  • 一定要用using语句包裹所有实现IDisposable的对象(流、阅读器等),避免资源泄漏导致流无法正确读取。

如果还是生成失败,建议捕获异常查看具体错误信息,比如是否有未处理的HTML标签、字体缺失等问题,这些都是常见的PDF生成失败原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:00:19