Kobarin's Development Blog

C#やASP.NETなどについての記録です。

ASP.NET Core でWebページ→PDF変換

ASP.NET MVC 5.0の時には、WebページをPDF化する際にTuespechkinを使っており、Azure上でも動作していました。
今回.NET Core 5.0のリリースを機に調べたところ、Tuespechkinは.net framework用のライブラリなので、ASP.NET Coreに対応するPDF変換ライブラリが新たに必要になります。

ASP.NET Core上で動作するPDF変換ライブラリ

Syncfusionというライブラリが見つかりました。
help.syncfusion.com
上記サイトの手順通り進めれば導入は可能で、Nugetでもインストールできます。
ただし、私の環境でそのまま実行すると、

PdfDocument document = htmlConverter.Convert("https://www.google.com");

の部分で「HTML conversion failed」となり変換に失敗するため、次の項で説明します。

SSLhttps)用のライブラリが必要

エラーメッセージからは原因がわからなかったのですが、原因はSSL用のライブラリが無い事にあります。
そのため、上記のGoogleのアドレス部分を非SSLサイトのURLに置き換えると難なく変換できます(これが分かるまで1日かかりました)。
Html to pdf conversion using webkit failed when accessing https page | WPF Forums | Syncfusion
の公式の回答にある通り、OpenSSLのライブラリをインストールするだけで解決しました。
インストールすると、以下3つのライブラリがシステムディレクトリ内に入ります。

  • libeay32.dll
  • libssl32.dll
  • ssleay32.dll

32bitのようにも見えますが、64bitにも対応しているようです。

終わり

以上の操作で再度SSLサイトのURLを実行したところ、無事に変換できました。
まだAzure上での動作確認はしていませんので、でき次第追って報告します。
なおTuespechkinの頃に使ったマージンや向きといった設定は、WebKitConverterSettings のMarginやOrientationで可能です。