2009-10-21 12 views
16

私は純粋なPythonソリューション(GAE用)の後で、Webページをpdfに変換しています。XHTMLをPDFに変換する純粋なpythonソリューション

私はreportlabを見ましたが、ドキュメントはHTMLからの変換ではなく、最初からpdfsを生成することに焦点を当てています。

お勧めですか? - pisa

編集: 私の使用例は、私もPDFで利用できるようにするHTMLレポートです。このレポート構造を更新して、別のPDFバージョンを維持したくないのですが、うまくいけば自動的に変換されます。
また、レポートHTMLを生成するので、PDF変換を容易にするためにXHTMLが整えられていることを確認できます。

+0

ないアイデアが、1を、それを調査します本当に興味深い質問のため – JasonSmith

答えて

8

Pisa請求:

ピサ ReportLabのツールキット、HTML5libと pyPdfを使用してHTML2PDFコンバータです。 HTML5とCSS 2.1 (およびCSS 3の一部)をサポートしています。純粋なPythonで書かれた完全に なので、 プラットフォームに依存しません。このツールの主なメリット HTMLとCSSのようなWebユーザー のスキルは、 は、新技術を学ぶことなく、非常に迅速に を生成することができます。 Pythonのに 統合が容易CherryPyに、KID テンプレート化、TurboGearsの、ジャンゴ、Zopeの、 Ploneのは、Google AppEngineの(GAE)などのような 枠組み

だから私はさらに

+0

Gaeプロジェクトにピサを統合して成功しましたか? – systempuntoout

+1

この男は、私ができるよりも良く説明しています:http://blog.notdot.net/2010/04/Generating-PDFs-on-App-Engine-Python-and-introducing-Mapvelopes – hoju

+1

私は、すばらしいです。ただし、すべてのCSSタグをサポートしているわけではありません。たとえば、私はピサによってサポートされていない位置、上、左、および浮動小数点数を頻繁に使用していました:http://www.htmltopdf.org/doc/pisa-en.html(サポートされているCSSを見てください) 。これらの制限以外にも、素晴らしい図書館です。 – adam

4

pyPdfを考慮しましたか?私はそれがあなたが必要とする機能豊かなもののようなところはどこにでもあるとは思っていませんが、それは始まりであり、純粋なPythonです。 PdfFileWriterクラスはPDF出力を生成するクラスになりますが、残念ながらPageObjectインスタンスが必要であり、既存のPDFドキュメントからそれらを抽出することを除いて、それらをまとめて実際の方法を提供しません。残念なことに、私が見つけることができるより豊富なpdfページ生成パッケージは、reportlabや他の非純粋なPythonライブラリに依存するように見えます:-(。

+0

ReportLabについて純粋なPythonではないものは何ですか? AFAIK Cエクステンションはオプションで、パフォーマンスの向上のみを目的としています。 –

+0

@Vinay、http://www.reportlab.com/docs/reportlab-userguide.pdf、Unix-yシステムでは、freetype2、PIL、&cも必要です - ドキュメントが間違っていて、実際にそれらの部分を必要としません(そして、reportlabは魔法のように、フォントや画像、そしてそれらを使っていないのに)...? –

+0

私もreportlabが純粋なPythonであると聞いていました... pyPdfは自分の必要性が低すぎるようですが、私はゼロからPDFを作成しようとしていないからです。 – hoju

4

あなたが求めているのは純粋なPython HTMLレンダラーです。私が知っている限り、何もありません。

HTMLからPDFへのコンバータを探すのではなく(Webkitのような実際のレンダラーは何千時間もの作業時間の産物です)私は、DOM(リンクされたオブジェクトのセット)として構築し、HTMLとPDFの両方の出力用にコンバーターを作成するなど、簡単に両方に変換できる形式でレポートを作成することをお勧めします。 HTMLをPDFに変換するよりもはるかに制限された問題であり、実装がはるかに容易です。

私がやりたいことをサポートするためにの
+0

これは残念です... – hoju