我使用NReco在Azure上生成PDF,它使用Wk
HtmlToPdf.在我的本地服务器上,一切都很好.但是在Azure上,它会渲染所有带有黑色方块的字体.
我尝试过在网上找到的所有东西.
这是我的HTML:
<head> <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> @@font-face { font-family: "FreeSerif"; src: url(@(HttpContext.Current.Server.MapPath("~/Content/FreeSerif.ttf"))) format("truetype"); } * { font-family:"FreeSerif",Helvetica,Arial,sans-serif;color:black; } </style> </head>
我也尝试过使用Url.Content(“〜/ Content / FreeSerif.ttf”)
而我的C#:
string htmlText = RenderPartialViewToString("~/Views/Templates/PDF/ListPDFView.cshtml",pdfList); HtmlToPdfConverter nPdf = new HtmlToPdfConverter(); nPdf.Size = PageSize.Letter; nPdf.Orientation = PageOrientation.Landscape; nPdf.CustomWkHtmlArgs = "--encoding UTF-8"; pdfBuf = nPdf.GeneratePdf(htmlText); Response.ContentType = "application/pdf"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.AddHeader("Content-Disposition","Inline; filename=file.pdf"); Response.BinaryWrite(pdfBuf); Response.Flush(); Response.End();
我的web.config包含:
<system.webServer> <staticContent> <remove fileExtension=".ttf" /> <remove fileExtension=".svg" /> <remove fileExtension=".eot" /> <remove fileExtension=".woff" /> <mimeMap fileExtension=".ttf" mimeType="font/truetype" /> <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" /> <mimeMap fileExtension=".woff" mimeType="application/x-woff" /> </staticContent> </system.webServer>
每个解决方案都会产生黑色方块我在这里结束了我的智慧.非常感谢您的帮助.
解决方法
如果Azure意味着“Azure网站”,那么WkHtmlToPdf不支持它,这是
NReco.PdfGenerator page上提到的FAQ部分.
在您的情况下,似乎生成的PDF没有错误,但出现黑色方块,因为WkHtmlToPdf使用的Windows GDI API在Azure WebSites中不起作用.
在您的情况下,似乎生成的PDF没有错误,但出现黑色方块,因为WkHtmlToPdf使用的Windows GDI API在Azure WebSites中不起作用.
然而,PdfGenerator应该可以很好地用于Azure WebRole或Azure VM.
在这种情况下,Amazon EC2 T2微实例也是Azure WebSites的不错选择.
—更新—
目前,Azure应用程序(以前的网站)具有基于VM的订阅(除了“免费”和“共享”之外的所有计划),具有较少限制的托管环境,允许wkhtmltopdf执行,并且在这种情况下可以使用NReco PdfGenerator包装器.请注意,仍然存在一些限制:例如,不呈现自定义字体(只能使用系统安装的字体).