NReco PDFGenerator 在 Azure Service Fabric 上失败
NReco PDFGenerator fails on Azure Service Fabric
我目前正在开发托管在 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();
}
}
感谢您的回答
记录:有两个问题
- 在线集群上缺少 C++ 运行时间库(msvcp120.dll 和 msvcr120.dll)(为此感谢 NReco);
- 似乎 service fabric 只能 运行 x86 版本,而我正在使用 x64 版本。
我目前正在开发托管在 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();
}
}
感谢您的回答
记录:有两个问题
- 在线集群上缺少 C++ 运行时间库(msvcp120.dll 和 msvcr120.dll)(为此感谢 NReco);
- 似乎 service fabric 只能 运行 x86 版本,而我正在使用 x64 版本。