加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – NReco PDF在Azure上有黑色方块

发布时间:2020-12-15 07:48:05 所属栏目:百科 来源:网络整理
导读:我使用NReco在Azure上生成PDF,它使用Wk HtmlToPdf.在我的本地服务器上,一切都很好.但是在Azure上,它会渲染所有带有黑色方块的字体. 我尝试过在网上找到的所有东西. 这是我的HTML: head meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
我使用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中不起作用.

然而,PdfGenerator应该可以很好地用于Azure WebRole或Azure VM.
在这种情况下,Amazon EC2 T2微实例也是Azure WebSites的不错选择.

—更新—

目前,Azure应用程序(以前的网站)具有基于VM的订阅(除了“免费”和“共享”之外的所有计划),具有较少限制的托管环境,允许wkhtmltopdf执行,并且在这种情况下可以使用NReco PdfGenerator包装器.请注意,仍然存在一些限制:例如,不呈现自定义字体(只能使用系统安装的字体).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读