PDF出力を備えたPHP PDFテンプレートライブラリ? [閉まっている

StackOverflow https://stackoverflow.com/questions/4416667

  •  08-10-2019
  •  | 
  •  

質問

できるPHP PDFライブラリはありますか プレースホルダー変数を交換します 既存のPDF、ODTまたはDOCXドキュメントで、レイアウトを台無しにすることなく、最終結果としてPDFファイルを生成しますか?

要件:

  • サードパーティのWebサービスは必要ありません

  • 共有Webホスティングで実行する能力は理想的です(バイナリインストール /パッケージは必要ありません)

既存のPDFファイルをロードして特定の位置にプログラム的にテキストを挿入できるライブラリは 十分でない 私のユースケースの場合。

私の研究が示す限り、これを行うことができるライブラリはありません。

  • TCPDFは、ゼロからのみドキュメントを生成できます

  • FPDIは既存のPDFテンプレートを読み取ることができますが、プログラムでのみコンテンツを追加できます(テンプレート変数置換なし)

  • さまざまなDOCX/ODTテンプレートライブラリがありますが、PDFを出力しません

phpdocx 私が必要なことを正確に行うことができると主張していますが、彼らは試用版を提供しておらず、私はバッグに猫を買うつもりはありません。 他の製品はありません これを行うウェブ上。彼らが問題なくこれを行うことができると信じるのは難しいと思います - あなたが製品を使用してこれを正常に行ったなら、ここに線を落としてください。

私は何かを見下ろしていますか?

PDFフォームを使用してこれを行う方法はありますか? OpenOffice 3でソースドキュメントを作成しています。

標準のLinuxコマンドを使用できる場合があります(pdftk たとえば、今すぐ試してみてください。)

アップデート: *ああ!*私はオフィスから呼び出され、その間に賞金は失効しました。新しい賞金を開始する:私のテストが示す限り、私にとってはまだ完全には解決策はありません。

更新II: 私はすぐにPDFTKアプローチを探しますが、私はまた、追加の入力を収集するもう1つのラウンドのために別の賞金を始めています。この質問では、バウンティで1300の担当者ポイントが見られました。ある種の記録でなければなりません:)

役に立ちましたか?

解決

ペッカ、

私は以前にこれを調べました、私はあなたが使用できると思います pdftk (コマンドラインユーティリティ)、FDF/XFDFデータファイルを使用してPDFフォームに入力します。これは、PHP内から簡単に生成できます。それは私がこれまでに見た最良の選択肢でしたが、ネイティブライブラリがあるかもしれません。

pdftk 一般的に非常に便利で、見てみる価値があります。

アップデート: ここを見てください: http://php.net/manual/en/book.fdf.php

他のヒント

これはあまり実用的ではありませんが、完全性のために:既にODTテンプレートを持っている場合、それをテンプレートとして非常によく保持するかもしれません。 opendocument content.xmlを変更し、その中でプレースホルダーを置き換えることは非常に簡単です。もしそうなら、あなたは使用できます unoconv また pyodconverter ODTを最終的なPDFに変換します。

unoconv -f pdf -o final.pdf template.odt

非常に明らかに、これにはWebサーバーでの完全なオープンオフィスセットアップ(UNOとライター)が必要です。そして、明らかにすべてのWebhosterがそれと一緒に行くわけではありません!ハハ。 DebianまたはFedoraのセットアップで簡単であっても。実行速度もおそらく恒星ではありません。しかし、OOOはどちらのPHPクラスよりもはるかに優れた形式を管理するため、それは最もクリーンなアプローチかもしれません。

XSL:フォーマットオブジェクト(XSL:FO)のようなものを使用することを検討しましたか?基本的に、それらは処理され、PDFに変換されるXMLドキュメントです。文字列 - またはそれ以上、その中の交換を行うことは非常に単純なはずです。画像、リンク、注釈などの埋め込みをサポートします。

それはPHPではありませんが、Execなどを介してそれを使用する方法とともに、多くのPHPラッパーがあります。理想的ではありませんが、テンプレートの部分を完全に処理します。いくつかの情報について: http://techportal.inviqa.com/2009/12/16/transforming-xml-with-php-and-xsl/

Apacheプロジェクトとして利用可能な実装があります - http://xmlgraphics.apache.org/fop/

FPDFとその上に別の拡張がありますが、これは覚えていません。これにより、テンプレートをインポートできます

あなたの最善の策は、FPDFなどを使用してプログラムでテンプレートを定義して、ドキュメント全体をその場で生成することです。そうすれば、テキストは段落などによって遮断されず、必要に応じて画像/その他の要素を簡単に配置できます。

遅くなりましたが、OpenSourceテンプレートデザイナーを使用できます https://github.com/applicius/dhek/releases 、既存のPDFでPKACEHOLDER/エリアを定義し、PHP(JSON形式のように)でロードし、FPDF LIBを使用して元のPDFにそれに応じて書き込み、ダイナミックデータを記述したカスタムPDFを生成します。

Altoughが正確に尋ねたものではなく、2つのステップでそれを作成することを検討することができます。賢い, dwoo)HTMLページを生成してから、次のようなツールを使用する html2pdf PDFに変換します。私はそれを使用しています、そして結果は良いです(ページレイアウトなどに問題はありません)

もちろん、入力ドキュメント(ソースとしてPDF/ ODTの代わりにHTMLを使用できます)とそれらのレイアウトの複雑さに依存します。

わかりました、私はあなたが問題を少し解決するのを手伝おうとしています。

最初にあなたの質問のいくつかの答え。

Q-私は何かを見落としていますか?

A -No。既存のPDF内のプレースホルダー変数を置き換え、最終結果としてPDFファイルを生成できるPHP PDFライブラリがあり、レイアウトを台無しにすることはありません

Q -PDFフォームを使用してこれを行う方法はありますか?

A-はい。これを行うためのトリックはPDFフォームを使用することです

どちらの回答でも、Justin Koivisto Fill PDFフォームフィールドPHPライブラリを使用できます。詳細については、行ってください http://koivi.com/fill-pdf-form-fields/tutorial.php。追加情報をご覧ください。

彼の仕事についてジャスティン・コヴィストの功績

PDFフォームからの出力のようなテーブルを表示するための回避策については、読書をすることを検討してください Oracle Business Intelligence Publisherユーザーガイド - PDFテンプレートの作成

FDF PHP拡張が死んでいるので、この新しい答えを追加します。

私はちょうどフォローしました これらの指示 そして、1つのPerlスクリプトを実行してからpdftkコマンドを実行しました

実際のPHPソリューションであるとはほど遠いことはかなり知っていますが、信頼性が高く、 *nixプラットフォームで実装するのはかなり簡単です。

あなたが疑問に思っていた場合に備えて、そこに説明されているツールもDebianで利用できます。

少し遅れていますが、 pdftemplate ライブラリそれはあなたが望むものを繰り返します。オープンドキュメントファイル(ODT)を作成し、プレースホルダーを追加できます。 PDFTEMPLATEライブラリは、これらのプレースホルダーに(画像を使用しても)記入して、PDFファイルを作成できます。

PDFへのプレースホルダーとのODTファイル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top