2016-09-26 27 views
1

テンプレートドキュメントのカスタマイズされたPDFコピーを生成する必要があります。 最も簡単な方法は、カスタマイズを行う必要があるプレースホルダーのテキスト(<first_name><last_name>)があるソースPDFを作成してから、正しい値に置き換えることです。PDFのプレースホルダテキストをPythonで検索して置換する

私は高値と低値を検索しましたが、基本的にソーステンプレートPDFを取り込み、プレースホルダを実際の値に置き換えて新しいPDFに書き込む方法はありませんか?

私はPyPDF2とReportLabを見ましたが、そうすることはできないようです。 提案がありますか?私の検索のほとんどは、PerlのアプリケーションであるCAM :: PDFを使用していますが、私はPythonでそのすべてを保持したいと考えています。

+0

PDFは多くの形式を取り、圧縮を使用するので、それほど簡単ではありません。別のリッチフォーマットを使いたい場合は、 '.docx'または' .rtf'のために行くことができます。 docxはzipされていますxml => textと.rtfはマークアップ付きのテキストです。 htmlはテンプレートにとっても良い選択です。 –

+0

それにもかかわらず、私はreportlabを見てお勧めします。生成したいpdfファイルのソースコードを見つけたら、これを柔軟にすることは簡単です。 exampleseをご覧ください:http://www.blog.pythonlibrary.org/2010/03/08/a-simple-step-by-step-reportlab-tutorial/ – tfv

+0

ReportLab RMLを使用してテンプレートを生成することができます(テキストファイル)を作成し、コンテンツを動的に追加します。ここでは、http://www.blog.pythonlibrary.org/2010/03/08/a-simple-step-by-step-reportlab-tutorial/の「The Go with the Flow」のセクションをご覧ください。 – lsxliron

答えて

3

信頼性の高い方法でこれを行う方法はありません。 PDFはHTMLと似ていません。文字の位置を文字単位で指定します。テキストをレンダリングするために使用されるフォント全体、ドキュメント内の特定のテキストをレンダリングするために必要な文字だけを含むことさえありません。私が見つけたライブラリは、テキストを更新した後に段落を改行するような素晴らしいことはしません。 PDFは大部分が表示専用フォーマットですので、PDFをマークアップしてPDFに更新するツールを使用する方がずっと良いでしょう。

それはオプションではない場合、あなたはそのいくつかを扱うことができるpdfboxingと呼ばれる素敵なClojureのラッパーを有し、iText (AGPL)またはpdfboxのようなPDF操作ライブラリを使用して、AcrobatのようなものでPDF formを作成することができます。

私の経験から、PDFへの書き方に対するPythonのサポートはかなり制限されています。 Javaには、はるかに優れた言語サポートがあります。また、あなたが支払うものを手に入れることができるので、これを商用目的で使用している場合は、おそらくiTextライセンスを支払う価値があります。私は、pdfboxingやghostscriptのようなPDF操作CLIツールの周りにPythonラッパーを書くかなり良い結果を得ました。これは、おそらくであり、これはPythonのPDFエコシステムにこれを振り回すよりも、あなたのユースケースのほうが簡単になります。

関連する問題