NReco PDFGenerator在Azure Service Fabric

时间:2016-11-24 16:59:14

标签: c# wkhtmltopdf azure-service-fabric nreco

我目前正在处理Azure服务结构中托管的打印服务(一种将取代Web和辅助角色的新产品)。我使用wkhtmltopdf和NReco.PDFGenerator.LT作为其包装器,它在本地开发群集中正常工作但在联机时失败。

我得到的唯一例外是Exception thrown: 'System.Exception' in NReco.PdfGenerator.LT.dll我觉得很难调试,因为它没有说明失败的原因。

阅读this我认为集群上可能缺少一些东西,但是本地环境被认为是在线环境的复制品。而且我在使用带有NReco包装器的phantomjs切换到wkhtmltopdf之前的同一个集群,它在网上和本地工作,我相信他们都使用相同的核心引擎(虽然不同的分叉)?

这是我的代码,在远程调试中,我检查了许可证,.exe路径和文件的值是否正确。

[HttpGet]
    public ActionResult Get(string target)
    {
        var wktohtmlPath = Path.Combine(_hostingEnvironment.WebRootPath, "lib");
        var htmlToPdf = new HtmlToPdfConverter() {
            Quiet = false,
            CustomWkHtmlArgs = "--print-media-type",
            PdfToolPath = wktohtmlPath,
            Margins = new PageMargins() { Left = 17, Right = 17, Top = 17, Bottom = 17 }
        };
        htmlToPdf.License.SetLicenseKey(
             _optionsAccessor.Value.LicenceOwner,
             _optionsAccessor.Value.LicenceKey
        );

        try
        {
            var fileBytes = htmlToPdf.GeneratePdfFromFile(target, null);
            var fileStream = new MemoryStream(fileBytes);
            return new FileStreamResult(fileStream, "application/pdf");
        }
        catch
        {
            return BadRequest();
        }
    }

感谢您的回答

1 个答案:

答案 0 :(得分:1)

记录:有两个问题

  • 在线群集上缺少C ++运行时库(msvcp120.dll& msvcr120.dll)(感谢NReco为此);
  • 似乎服务结构只能运行x86版本,而我正在使用x64版本。