使用NReco.PdfGenerator.HtmltoPdfConverter和最近实现的OAuth与Bearer令牌。在实现和保护我的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 0 0mm 0 0mm 5 0mm 0mm --javascript-delay 3000 -自定义标头授权:无记名-R
为了简洁起见,这个标记被缩短了。我已经尝试删除冒号,但我仍然得到了AuthRequiredError。有人熟悉传递报头令牌吗?
发布于 2017-11-29 07:15:09
首先,尝试在引号中传递标头值:
htmlToPdf.CustomWkHtmlArgs += " --custom-header \"Authorization\" \"" + accessToken + "\"";如果需要这个标题来访问页面资源(图像、css、ajax调用)选项“--自定义标头-传播”,也应该指定。
顺便说一句,您试过用命令行中的wkhtmltopdf测试您的自定义头吗?此外,您还可以处理htmlToPdf.LogReceived事件并获得wkhtmltopdf控制台日志输出--这对于调试可能很有用。
https://stackoverflow.com/questions/47543052
复制相似问题