0

使用 NReco.PdfGenerator.HtmltoPdfConverter 并最近使用 Bearer 令牌实现了 OAuth。在实施和保护我的 ApiControllers 后,转换器开始抛出以下错误。

WkHtmlToPdfException:由于网络错误,退出代码 1:AuthenticationRequiredError(退出代码:1)

经过一番窥探后,我发现我可以添加自定义标头参数,因此我抓住了不记名令牌并将其附加到CustomWkHtmlArgs

这就是我要走的路。

        htmlToPdf.CustomWkHtmlArgs = "-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000";

        FileHandlingModule.deleteFile(savePath);

        //Get Auth Token
        var accessToken = "Bearer " + Request.Headers.Authorization.Parameter;

        htmlToPdf.CustomWkHtmlArgs += " --custom-header Authorization: " + accessToken;
        htmlToPdf.GeneratePdfFromFile(purl, null, savePath);

这就是CustomWkHtmlArgs这就是 args 字符串的样子。

-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000 --custom-header 授权:承载 YHE7HJEh_Hk0wazErUK6DIGcCG7-GRDHBEWRA-ju9hewqPk9cjY3zH5MT....

为简洁起见,令牌已被缩短。我尝试删除冒号,但仍然收到 AuthRequiredError。有人熟悉传递标头身份验证令牌吗?

4

1 回答 1

0

首先尝试在引号中传递标头值:

htmlToPdf.CustomWkHtmlArgs += " --custom-header \"Authorization\" \"" + accessToken + "\"";

如果需要此标头来访问页面资源(图像、css、ajax 调用)选项“--custom-header-propagation”也应指定。

顺便说一句,您是否尝试过从命令行使用 wkhtmltopdf 测试您的自定义标头?此外,您可以处理htmlToPdf.LogReceived事件并获取 wkhtmltopdf 控制台日志输出 - 它可能对调试有用。

于 2017-11-29T07:15:09.630 回答