MVCRazorToPdf https://www.nuget.org/packages/MvcRazorToPdf/是 iTextSharp 的一个非常非常简单的包装器XMLWorker
并使用更简单的XMLWorkerHelper
使用所有默认值来完成其工作。如果你看一下source https://github.com/andyhutch77/MvcRazorToPdf/blob/master/MvcRazorToPdf/MvcRazorToPdf.cs你会看到这个:
document.Open();
using (var reader = new StringReader(RenderRazorView(context, viewName)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader);
document.Close();
output = workStream.ToArray();
}
如果您执意要使用 NuGet 版本,那么您将不得不使用此实现,并且将无法注册自定义字体。
然而,有一个开放问题 https://github.com/andyhutch77/MvcRazorToPdf/issues/21关于这一点包括修复 https://github.com/andyhutch77/MvcRazorToPdf/issues/21#issuecomment-129858670所以如果你愿意从源代码编译 https://github.com/andyhutch77/MvcRazorToPdf/您可以应用该更改,并且您应该已准备就绪。
如果您想更进一步,我建议您阅读这篇很棒的文章 https://stackoverflow.com/q/25164257/231316这表明使用 iTextSharp 解析 HTML 是多么简单布鲁诺的帖子在这里 https://stackoverflow.com/a/26220259/231316显示如何注册字体。
EDIT
根据包含修复链接的帖子(以防万一链接将来损坏),请更改上面的内容using
声明至:
using (var reader = new MemoryStream(Encoding.UTF8.GetBytes(RenderRazorView(context, viewName))))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader, null, FontFactory.FontImp as IFontProvider);
document.Close();
output = workStream.ToArray();
}
然后上面问题中注册的字体工厂将在使用时起作用style="font-family:VegurRegular;"