我正在使用C#开发asp.net网站。我想将一个包含多个HTML元素(如div、label、表格和带有背景颜色、css类等样式的图像)的HTML DIV转换为PDF,使用iTextSharp DLL实现。但是我遇到了一个问题:CSS没有被应用。能否提供任何示例或代码片段来帮助我解决这个问题?
安装2个NuGet包iTextSharp和itextsharp.xmlworker,使用以下代码:
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
byte[] pdf; // result will be here
var cssText = File.ReadAllText(MapPath("~/css/test.css"));
var html = File.ReadAllText(MapPath("~/css/test.html"));
using (var memoryStream = new MemoryStream())
{
var document = new Document(PageSize.A4, 50, 50, 60, 60);
var writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
{
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
}
}
document.Close();
pdf = memoryStream.ToArray();
}
HTMLWorker
?如果是这样,那么它已经被弃用,推荐使用XmlWorker
。所有工作,包括CSS支持,都在后者中完成,请不要再尝试使用前者。 - Chris Haas