私が作成した Web サイトには、Web ページを PDF に変換する機能が必要です。オプションを調べたところ、HiQPdf が最適なオプションのように見え、必要なことはすべて実行されました。現在、テストが完了するまで無料版を使用しています。
指示に従って、Web ページを作成し、リンクされたすべてのアイテム (主に css) を見つける場所と共に PDF クリエーターに渡します。コードは行きます
var model = new SomeKindOfModel
{
SetSomeStuff = stuff
};
string htmlToConvert = RenderRazorViews.RenderViewAsString(ControllerContext, "Print", model);
string baseUri = $"{Request.Url.Scheme}://{Request.Url.Authority}";
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlToConvert, baseUri);
return new FileContentResult(pdfBuffer, "application/pdf");
かなり標準的なコード。
これを Visual Studio から実行すると、期待どおりに動作し、結果の pdf は正しく表示され、すべてが正しい場所にあります。コンピューターのファイル システムに発行すると、正常に動作します。上記のファイルを別のラップトップにコピーし、その ipAddress を介してアクセスすると、正常に動作します。
この問題は、Web デプロイ パッケージを使用してメイン テスト サーバーに配置すると発生します。この時点で、pdf が作成され、テキストが表示されますが、スタイルはありません。すべてが白地に黒のテキストです。cshtml ファイルにスタイリングの一部を含めると、それが取得されます。サイトの他のすべてが正しく機能します。ローカルの site.css をブートストラップ バンドルに追加しましたが、どちらも取得されません。
この行はpdf作成者を正しい場所に向けていないと思いますstring baseUri
が、変数の内容を調べて、さまざまなバリエーションを試してみましたが、何も機能していません。
のテキストを確認しましたがhtmlToConvert
、リンクが正しい方向を指しているように見えます。
CSS の場所がハードコードされたページにリンク タグを追加しても、CSS は取得されません。
私がここで見逃している Web サイトの公開に関して微妙なことはありますか? 長年 ASP.NET MVC アプリケーションを開発してきましたが、実際に Web サイトを公開しなければならなかったのは初めてでした。以前の会社では、常に他人事でした。ほら、私のです。