PDFフォームに入力してPDFファイルに保存(フラット化)するために使用できるPHPライブラリはありますか?
8 に答える
ここで挙げたライブラリとフレームワークは優れていますが、フォームに入力してフラット化するだけなら、pdftk (PDF Toolkit) というコマンド ライン ツールをお勧めします。
https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/を参照してください。
phpからコマンドラインを呼び出すことができ、コマンドは
pdftk
formfile.pdf fill_form
fieldinfo.fdf output
outputfile.pdf flatten
フィールドに入力する情報を生成するには、FDF ファイルの形式を見つける必要があります。そのための良いリンクは次のとおりです。
http://www.tgreer.com/fdfServe.html
[編集: 上記のリンクは使用不可のようです。ここにいくつかの詳細情報があります...]
pdftk コマンドは、PDF 様式ファイルから FDF ファイルを生成できます。その後、生成された FDF ファイルをサンプルとして使用できます。フォーム フィールドは、FDF ファイルの次のような部分です。
...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...
PHP 固有のライブラリであるphp-pdftkもチェックしてください。私は使用していませんが、コメンターのÁlvaro (下記) が推奨しています。
受け入れられた回答に大きな+1、およびfdfファイルでエンコーディングの問題が発生した場合の小さなヒント。fields.fdf を生成し、実行した場合
file -bi fields.fdf
あなたが得る
application/octet-stream; charset=binary
その場合、UTF-16 文字セットの問題に遭遇した可能性が最も高いです。次の方法でftfを変換してみてください
cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf
その後、より良い.fdfファイルを編集してPDFフォームにインポートすることができました.
うまくいけば、これにより誰かがGoogleを節約できます
fpdfを使用するphpスクリプトに送信し、フォームフィールドをget変数として渡すフォームを使用することで多くの成功を収めました(おそらく、優れたベストプラクティスではありませんが、機能します)。
<?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4,$_POST['content'],0,'J');
$pdf->Output();
?>
そして、あなたはこのようなものを持つことができます。
<form action="fooPDF.php" method="post">
<p>PDF CONTENT: <textarea name="content" ></textarea></p>
<p><input type="submit" /></p>
</form>
この骨格の例は、あなたが始めるのに役立つはずです。
phpを使用したfdfファイルの生成:http://www.php.net/manual/en/book.fdf.phpを参照してください
次に、pdftkを使用してPDFに入力します(上記を参照)
これを解決できるコマンドラインインターフェイスを備えたPerlライブラリCAM::PDFを作成しました。何年も前にFDFソリューションを使用してみましたが、複雑すぎることがわかったため、最初にCAM::PDFを作成しました。私のライブラリは、いくつかのヒューリスティックを使用してフォームを目的のテキストに置き換えているため、完全ではありません。しかし、ほとんどの場合は機能し、高速で無料で、非常に簡単に使用できます。
これは以前にカバーされたようです。Zend Framework PDFライブラリを使用して、関連するコードをクリックしてください。
私たちは仕事でPDFLibを使用しています。有料版はそれほど高価ではなく、有料版を購入できない場合は、より限定的なオープン ソース エディションがあります。