ユーザーが表示するレポートの pdf ファイルを生成する機能を既に構築しています。
したがって、現在行っていることは、ユーザーがpdfの印刷ボタンをクリックしたときです
- 印刷する必要がある div の html コンテンツを取得します
- POSTでjquery ajaxメソッドを使用して、このコンテンツをコントローラーのメソッドに送信します
- コントローラーでは、コンテンツを などの html ドキュメント文字列でラップします。さらに
<html>
、<body>
そこにいくつかのスタイルを追加します。 - 次に、この html 文字列は、使用しているツールの 1 つに渡され、この文字列の pdf バイトが返されます
- 次に、それらのバイトを pdf ファイルとしてフォルダーに保存し、このファイルのパスを返します。
- Jquery が成功すると、このファイルのパスのウィンドウが開きます。
これはすべて正常に機能しています。
問題は
- すべての処理を実行し、成功するとウィンドウを開くため、すぐにウィンドウを開くわけではありません
- さらに、これをすべて正しく行っているのか、余分な不要な手順を行っているのか疑問に思っています。これは、これを行うためのより良い方法または短い方法があることを意味します。
div のコンテンツを取得した後、サーバーの処理を回避するために、文字列を変更して新しいウィンドウに pdf コンテンツなどとして直接表示するなど、可能ですか?
これまで、コンテンツを直接表示しようとしましたdata:application/pdf
が、うまくいきませんでした。
それが不可能な場合は、pdf ファイルの保存を避けることを考えていますが、pdf として開くビューを表示するcontent-type
だけです。