web-dev-qa-db-ja.com

PDFレポート(JavaScript、node.js)を生成するために最もよく使用されるアプローチ?

このようなものに取り組んだ誰かが一般的なプロセスを説明できますか?私は今とても混乱しています。レポートとは、ロゴ、テーブル、ヘッダー、フッターを備えた視覚的に魅力的なドキュメントを意味し、データは動的に取得されます。

私が調べたアプローチは次のとおりです。

  1. PDFを生成するサーバー側ライブラリ(node.jsモジュール)を使用します。 _Content-Type: application/pdf_を使用して、文字列表現を応答として送信します。問題:PDFKitを選択しましたが、機能せず、コンテンツがまったく表示されません。これは、PDF 1.3を使用しており、古いものです。

  2. 生成PDFクライアント側で。問題:最も人気のあるライブラリはjsPDFのようですが、洗練された外観のドキュメントを生成することはあまりできません。

  3. PDFソースコードにテンプレートを記述し、サーバー側でデータを入力します。問題:たとえばdoc.text("1")を実行すると、多くの認識できない文字がエンコードされてしまいます文字列「1」に対してのみ表示されます。これについては非常に混乱しています。

最後に、エンコーディングを理解するのに役立つリンクを誰かが提供してくれれば非常に役立ちます。それは私にとって非常に混乱しています。

同様のタスクの経験は大歓迎です!

17
Erica Xu

私はこれを個人的に行ったわけではありませんが、最初に試すことは次のとおりです。

  1. サーバー側で適切なHTMLドキュメントとCSSを動的に構築する
  2. phantomJS を使用してそのドキュメントをレンダリングします
  3. そのドキュメントを一時ファイルに保存されたPDFに変換するようにphantomJSに指示します
  4. Temp PDFファイルを応答本文に書き込んで、PDFをHTTP応答として返信します。
  5. 一時ファイルを削除する

Content-type、content-dispositionなどで苦労している場合、ディスクに有効なpdfファイルがあり、そのデータをHTTP応答に書き込むだけで心配する必要はありません。正しいヘッダーを使用すると、ブラウザにPDFを表示するか、ダウンロードとして保存するファイルとして扱うように要求できます。

17
Peter Lyons

Jsreportチームのメンバーとして、私はそれを試してみました。

jsreport プラットフォームは、PDFレポートを生成する方法を複数提供します。最も一般的に含まれているものは、phantomjsを使用してhtmlをpdfに変換することです。 jsreportは、ハンドルバーまたはjsrender htmlテンプレートをコンパイルしてレンダリングします(指定されている場合)。画像を埋め込んだり、ヘッダー/フッターを追加したり、カスタムJavaScriptを実行したりできます。

「Hello World Phantom Pdf」の例で遊んで、使用できるオプションを確認できます https://playground.jsreport.net

再生が終わったら、会社に jsreport online または download and install jsreportサーバーを使用できます。次に、その REST API を呼び出してレポートを生成する準備ができました。

あなたの質問にもっと

  • jsreportは、pdfまたはhtmlの応答で正しいcontent-typeを提供します。ブラウザに結果を表示させるだけです
  • データはjsreport apiに送信するか、カスタムスクリプトで取得できます
10
Jan Blaha

最も一般的な方法はわかりませんが、個人的にはHTMLテンプレートを作成し、それをサーバー側のコードに入力してから、 wkhtmltopdf を使用してHTMLをPDFに変換します。 .NETを使用している場合は、チェックアウトする必要があります WkHtmlToXSharp (これは、wkhtmltopdfの.NETラッパーです)。

3