18

Django アプリでPisa/xhtml2pdfを使用して、HTML ソースから pdf を生成します。あれは:

  1. すべての「印刷」要素 (改ページ、ヘッダー、フッターなど) でフォーマットされた HTML ファイルを生成します。
  2. この HTML を Pisa を使用して pdf に変換します

このプロセスは問題ありませんが、(特に長いテーブルを扱う場合) 遅く、Pisa の機能/制限に従って HTML/CSS を使用する必要があります。

問題は、これが Web アプリケーションから pdf を生成する正しい方法 (つまり、HTML を作成してから pdf に変換する) か、それともより直接的な方法、つまりより適切な言語で pdf を「書く」ことでしょうか?

4

4 に答える 4

13

WeasyPrint の作者はこちら。HTML/CSS を使用して PDF を生成する (低レベルの PDF ライブラリを直接使用するのではなく) ポイントは、自動レイアウトを取得することです。h1 { page-break-after: avoid }すべての絶対位置を指定するのではなく、高レベルの制約を指定して、レイアウト エンジンにそれを理解させることができます。ドキュメントに変更を加えた場合、前者の方が保守性がはるかに高くなります。

rst2pdf などの一部のツールには独自のスタイルシート構文がありますが、これは CSS を再発明する悪い方法です。

ただし、画面用に作成された複雑なスタイルシートをダンプしても、良い結果が得られない場合があります。@media print印刷を念頭に置いてスタイルシートを作成するか、CSS または<link media="print">HTMLでまったく異なるスタイルシートを使用することをお勧めします。

于 2012-12-19T16:26:57.863 に答える
7

Pisa やhttp://weasyprint.org/などのライブラリを使用して html から pdf を生成するのが最も簡単な方法だと思います。画像、CSS、バーコード(ピサ上)などの挿入を処理するため

PDF を自分で作成したい場合は、Reportlab を参照してください。ただし、実装にはさらに時間がかかります。どちらの場合も、最適化のために celery または python-rq を使用して常にバックグラウンドで pdf を生成することをお勧めします。

于 2012-12-19T13:03:34.307 に答える
4

ピサにはさまざまな問題があることが知られています-特に長いテーブルでは。一般に、PISAの使用は避けてください。その他のオプションは次のとおりです。

  • Reportlabを直接使用する
  • z3c.rml(Reportlabテンプレート言語クローン)
  • 商用代替品:
    • PrinceXML
    • PDFreactor

PDF制作に関する一般的なルール:あなたはあなたが支払うものを手に入れます。

PisaやApacheFOPのようなコンバーターは、単純なケースでは機能しますが、一般的にはうまくいかない中途半端なソリューションです。

于 2012-12-19T11:20:24.410 に答える
2

QT Webkit レンダリング エンジンを使用して、http://code.google.com/p/wkhtmltopdf/ および django-wkhtmltopdf を使用して HTML から PDF を作成することもできます

利点は、通常の WebKit と同じように HTML と CSS を記述できることです。これは、既存の Web ページを出力する場合にはうまく機能しますが、PDF を最初から生成する場合にはあまり適していません。

于 2012-12-20T07:32:27.383 に答える