私は現在、Azure サービス ファブリック (Web およびワーカーの役割を置き換える新製品の一種) でホストされる印刷サービスに取り組んでいます。wkhtmltopdf と NReco.PDFGenerator.LT をラッパーとして使用しています。ローカルの開発クラスターでは正常に動作していますが、オンラインの場合は失敗します。
私が得た唯一の例外はException thrown: 'System.Exception' in NReco.PdfGenerator.LT.dll
、何が失敗しているのかがわからないため、デバッグが非常に難しいと感じたことです。
これを読んで、クラスターにいくつかのものが欠けているのではないかと考えていますが、ローカル環境はオンライン環境のレプリカであると想定されています.さらに、wkhtmltopdfに切り替える前に、同じクラスターでphantomjsをNRecoラッパーで使用していましたが、オンラインとローカルの両方で動作していて、どちらも同じコア エンジンを使用していると思いますが (フォークは異なります)?
これが私のコードです。リモート デバッグ中に、ライセンス、.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();
}
}
回答ありがとうございます