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

MVC4用HTML模板生成PDF遇XMLWorkerHelper无参构造函数错误求助

解决XMLWorkerHelper无参构造函数错误的方案

你遇到的问题很明确:XMLWorkerHelper类没有公开的无参构造函数,而且它本身是一个工具类,设计上就不应该通过new来实例化,而是要使用它的静态方法完成HTML到PDF的解析工作。另外你代码里用到的HTMLWorker已经被XMLWorker取代,建议直接用XMLWorkerHelper的静态方法处理,这样更规范也能避免过时API的问题。

修改步骤:

  • 删除HTMLWorker htmlparser = new HTMLWorker(pdfDoc);和XMLWorkerHelper htw = new XMLWorkerHelper();这两行无效代码
  • 使用XMLWorkerHelper.GetInstance().ParseXHtml()静态方法解析HTML内容,该方法会自动处理HTML到PDF的转换逻辑

修改后的完整控制器代码:

public void abcd() {
 try {
    string UniqueNumber = Request.QueryString["UniqueNumber"];
    string strFileName = UniqueNumber;
    string strFileExtension = ".pdf";
    string strContentType = FileManager.FileContentType_application_pdf;
    string strExportData = string.Empty;
    
    Document pdfDoc = new Document(PageSize.A4, 43f, 50f, 5f, 50f);
    var output = new MemoryStream();
    StringReader sr = new StringReader(Convert.ToString(ExportData.UserDetails(UniqueNumber)));
    
    // 关联PdfWriter与Document
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, output);
    pdfDoc.Open();
    
    // 使用XMLWorkerHelper静态方法解析HTML
    XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
    
    pdfDoc.Close();
    
    // 格式化文件名,避免特殊字符问题
    strFileName = strFileName.Replace(" - ", "-").Replace(" ", "-").Replace("--", "-");
    
    // 输出PDF到响应流
    Response.ClearContent();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", string.Format("attachment; filename={0}{1}", strFileName, strFileExtension));
    Response.ContentType = strContentType;
    Response.Charset = "";
    Response.BinaryWrite(output.ToArray());
    Response.Flush();
    Response.End();
 } catch (Exception ex) {
    // 建议添加异常日志记录逻辑,方便排查问题
 }
}

关键说明:

  1. XMLWorkerHelper.GetInstance()是获取工具类实例的正确方式,它会返回单例实例,无需手动实例化
  2. ParseXHtml()是XMLWorker推荐的HTML解析方法,相比旧的HTMLWorker支持更多HTML标签和样式特性
  3. 必须在pdfDoc.Open()之前创建并关联PdfWriter,这样解析后的内容才能正确写入输出流

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:49