我正在使用 C# 网站在 asp.net 中工作。我想转换一个 HTML DIV,其中包含各种 html 元素,如 div、标签、表格和具有 css 样式(背景颜色、cssClass 等)的图像,我希望使用 iTextSharp DLL 将其全部内容转换为 PDF,但在这里我面临一个没有应用 css 的问题。任何人都可以通过提供任何示例或代码片段来帮助我。
问问题
22910 次
2 回答
2
安装 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();
}
于 2016-06-21T13:41:05.033 回答
0
查看Pechkin,这是 wkhtmltopdf 的 C# 包装器。
特别是在这个时间点(考虑到一个待处理的拉取请求),我会检查这个解决了几个错误的分支(根据我的经验在 IIS 中特别有用)。
如果您不使用 fork / 遇到其他稳定性问题,您可能希望查看某种“渲染队列”(例如在数据库中)并让后台进程(例如 Windows 服务)定期在队列上运行,并且render 然后将二进制内容存储在某个地方(也可以在数据库中,或者在文件系统中)。不过,这完全取决于您的用例。
或者,类似的解决方案@DaveDev 已链接到评论。
于 2013-10-29T15:17:39.467 回答