59

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

要件:

  • サードパーティの Web サービスは不要

  • 共有 Web ホスティングで実行できることが理想的です (バイナリのインストールやパッケージは必要ありません)。

既存の PDF ファイルを読み込んで、特定の位置にプログラムでテキストを挿入できるライブラリは、私の使用例には十分ではありません。

私の調査によると、これを実行できるライブラリはありません。

  • TCPDF はドキュメントをゼロからしか生成できません

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

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

PHPDOCxは、まさに私が必要とすることを実行できると主張していますが、彼らは試用版を提供しておらず、特にウェブ上に他の製品がないように思われる場合は、猫をバッグに入れて購入するつもりはありません。これ。彼らがこれを問題なく実行できるとは信じがたいと思います。製品を使用してこれを正常に実行できた場合は、ここに連絡してください。

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

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

標準の Linux コマンドを使用できる可能性があります (pdftkたとえば、今すぐ試してみることができます)。

更新: *ああ!* オフィスから呼び出され、その間に報奨金が期限切れになりました。新しい報奨金を開始する: 私のテストが示す限り、私にとって完全に機能する解決策はまだありません.

更新 II:私はすぐに pdftk アプローチを検討しますが、追加の入力を収集するためのもう 1 つのラウンドに対して別の報奨金も開始しています。この質問は現在、バウンティで 1300 担当者ポイントを見ています。ある種の記録であるに違いありません :)

4

10 に答える 10

16

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

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

明らかに、これには Web サーバー上での完全な OpenOffice セットアップ (UNO および Writer) が必要です。そして明らかに、すべてのウェブホスティング業者がそれに同意するわけではありません! ハハ。Debian や Fedora のセットアップでは簡単ですが。実行速度もおそらく優れたものではないでしょう。しかし、OOo はどの PHP クラスよりもはるかに優れて両方の形式を管理しているため、最もクリーンなアプローチである可能性があります。

于 2010-12-23T14:44:37.330 に答える
13

ペッカ、

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

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

更新:ここを見てください: http://php.net/manual/en/book.fdf.php

于 2010-12-11T12:33:39.930 に答える
5

XSL:Formatting Objects (XSL:FO) のようなものを使用することを検討しましたか? 基本的に、それらは処理されて PDF に変換される XML ドキュメントです。その中の文字列、またはより良いDOMの置換を行うことは、非常に簡単なはずです。画像、リンク、注釈などの埋め込みをサポートしています。

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

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

于 2010-12-23T22:55:50.867 に答える
3

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

于 2011-01-26T22:41:02.847 に答える
3

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

于 2011-01-24T12:03:04.183 に答える
2

遅くなりましたが、OpenSource テンプレート デザイナーhttps://github.com/applicius/dhek/releasesを使用して、既存の PDF に pkaceholders/areas を定義し、それを PHP にロードして (JSON 形式であるため)、それに応じて元の PDF に書き込むことができます。 fpdf lib を使用して、動的データが書き込まれたカスタム PDF を生成します。

于 2014-08-05T07:58:27.313 に答える
1

あなたが尋ねたものとは正確には異なりますが、2つのステップで作成することを検討するかもしれません.phpテンプレートシステム(smartydwoo)を使用してhtmlページを生成し、Html2Pdfなどのツールを使用しそれをpdfに変換します. 使用しており、結果は良好です(ページレイアウトなどに問題はありません)

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

于 2010-12-30T10:14:13.133 に答える
1

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

まず、あなたの質問のいくつかに対する答え。

Q - 何か見落としがありますか?

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

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

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

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

Justin Koivisto の功績による功績

PS

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

于 2011-01-30T07:09:16.070 に答える