15

fpdf.org の「フォーム入力」スクリプトを使用して、作成した PDF フォームのいくつかのフィールドに入力しています。これは正常に動作しているようです。

結果の PDF フォームをフラットにして、ユーザーがフォーム フィールドを編集できないようにしたい。そのためにPDFTKを使用しています。ただし、PDF をフラット化しようとすると、フォーム フィールドが空の PDF が表示されます。

PDF を (PHP を使用して) フラット化する方法についての提案をいただければ幸いです。ありがとう!

これが私のコードです:

<?php
require('fpdm.php');
$fields = array("Name" => "John Doe", 
                "Address" => "123 White Lane", 
                "Age" => "30", 
                "Phone" => "123-1234");
$pdf = new FPDM("templates/Test.pdf");
$pdf->Load($fields, true);
$pdf->Merge();
$pdf->Output("cache/Filled1.pdf","F");

exec("pdftk cache/Filled1.pdf output cache/Filled1Flat.pdf flatten");
?>

元の Test.pdf ファイルをダウンロード: Test.pdf

Filled1.pdf ファイルをダウンロードします (データが表示された状態で PDF フォームが正しく表示されます): Filled1.pdf

Filled1Flat.pdf ファイルをダウンロードします (フォーム データが表示されていない平坦化された pdf フォームが表示されます): Filled1Flat.pdf

4

3 に答える 3

12

露骨な自己宣伝: 私のphp-pdftkパッケージを試してください。インストールしておけばpdftk、とても使いやすいです。

composer require mikehaertl/php-pdftk

<?php
use mikehaertl/pdftk/Pdf;

$pdf = new Pdf('form.pdf');
// Fill in UTF-8 compliant form data!
$pdf->fillForm(array('name' => 'Any char: ÄÖÜ'))
    ->saveAs('filled.pdf');

// Alternatively: Send to browser for download...
$pdf->send('filled.pdf');

// ... or inline display
$pdf->send();
于 2014-07-11T21:27:24.260 に答える
11

PDF フォームに入力してからフラット化する別のプロセスを見つけることができました。fpdf.org の「フォーム入力」スクリプトを使用してもうまくいかなかった理由はまだわかりません。

ここで概説されている手順に従いました:

1)フィールド名がまだわかっていない場合は取得します

exec("pdftk templates/Test.pdf dump_data_fields >cache/testfields.txt");

2) フィールド名とフィールド値を含む FDF ファイルを作成し、Test.fdf として保存します。

%FDF-1.2
1 0 obj<</FDF<< /Fields[
<</T(Name)/V(John Doe)>>
<</T(Address)/V(123 White Lane)>>
<</T(Age)/V(30)>>
<</T(Phone)/V(123-1234)>>
] >> >>
endobj
trailer
<</Root 1 0 R>>
%%EOF

3) 次に、フォームに記入して平らにします

exec("pdftk templates/Test.pdf fill_form templates/Test.fdf output cache/FilledFDF.pdf flatten");

生成された PDF をダウンロード (塗りつぶしおよび平坦化): FilledPDF.pdf

于 2012-11-27T19:37:59.570 に答える
0

Dhek PDF テンプレート エディターには、FPDF/FPDI を使用して既存の PDF にデータを入力するための PHP スニペットがあり、JSON マッピングに従って (テキスト/チェックボックスを配置する場所を知るために) あります。https://github.com/applicius/dhek

于 2013-10-20T16:34:22.903 に答える