c# - iTextSharp 创建带有空白页的 PDF

标签 c# asp.net itextsharp xmlworker

我刚刚将 iTextSharp XMLWorker nuget 包(及其依赖项)添加到我的项目中,我正在尝试将 HTML 从字符串转换为 PDF 文件,即使没有抛出异常,PDF 文件也是正在生成两个空白页。为什么?

以前版本的代码只使用 iTextSharp 5.5.8.0 和 HTMLWorker 和 ParseList 方法,然后我切换到

这是我使用的代码:

public void ExportToPdf() {
 string htmlString = "";

 Document document = new Document(PageSize.A4, 40, 40, 40, 40);
 var memoryStream = new MemoryStream();

 PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
 document.Open();

 htmlString = sbBodyMail.ToString();

 XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, new StringReader(htmlString));

 document.Close();
 DownloadFile(memoryStream);
}

public void DownloadFile(MemoryStream memoryStream) {
 //Clears all content output from Buffer Stream
 Response.ClearContent();
 //Clears all headers from Buffer Stream
 Response.ClearHeaders();
 //Adds an HTTP header to the output stream
 Response.AddHeader("Content-Disposition", "attachment;filename=Report_Diagnosis.pdf");
 //Gets or Sets the HTTP MIME type of the output stream
 Response.ContentType = "application/pdf";
 //Writes the content of the specified file directory to an HTTP response output stream as a file block
 Response.BinaryWrite(memoryStream.ToArray());
 //Response.Write(doc);
 //sends all currently buffered output to the client
 Response.Flush();
 //Clears all content output from Buffer Stream
 Response.Clear();
}

如果我将 document.Add(new Paragraph("Just a test")); 放在 document.Close(); 之前,该段落将在第二个中呈现页,但文档的其余部分仍然是空白。

更新

我已经将 htmlString 变量中的 HTML 更改为一个 DIV 和一个 TABLE 并且它起作用了。所以,现在的问题是:我如何知道 HTML 的哪一部分导致了 XMLWorker 中的某些错误?

最佳答案

我发现 XMLWorkerHelper 在 DIV 宽度属性(甚至在 style 属性上设置)方面遇到了问题,不幸的是它没有抛出任何异常来帮助您解决这个问题。

我从 iTextSharp 的开发人员那里找到了这个答案,说目前还不支持居中表格,所以我假设这也不支持。

关于c# - iTextSharp 创建带有空白页的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438782/

相关文章:

C#:iTextSharp,如何编辑 pdf 文档的标题属性?

vb.net - 如何使用 iTextSharp 调整 pdf 的大小

c# - 为不同的 Web 应用程序共享相同的配置设置

c# - 如何使用 iTextSharp 对齐文本?

javascript - 从 typescript 将值作为空字符串传递给 WEb API

c# - 需要 AvalonDock ILayoutUpdateStrategy 示例

.net - 在 Visual Studio 中发布网站 : Use 'Fixed naming and single page assemblies' ?

javascript - 使用 Internet Explorer 时 Visual Studio 引发异常

c# - 引用错误 TFS & Nuget

c# - 我们可以对结构布局做出假设吗?