InitSecurityHandler(); for($itr = $doc->GetFieldIterator(); $itr->HasNext(); $itr->Next()) { echo nl2br("Field name: ".$itr->Current()->GetName()."\n"); echo nl2br("Field partial name: ".$itr->Current()->GetPartialName()."\n"); echo "Field type: "; $type = $itr->Current()->GetType(); switch($type) { case Field::e_button: echo nl2br("Button"."\n"); break; case Field::e_text: echo nl2br("Text"."\n"); break; case Field::e_choice: echo nl2br("Choice"."\n"); break; case Field::e_signature: echo nl2br("Signature"."\n"); break; } echo nl2br("------------------------------\n"); } $doc->Close(); echo nl2br("Done.\n"); // Example 2) Merge data from FDF echo nl2br("Merge data from FDF.\n"); $doc = new PDFDoc($input_path."form1.pdf"); $doc->InitSecurityHandler(); $fdf_doc = new FDFDoc($input_path."form1_data.fdf"); $doc->FDFMerge($fdf_doc); // To use PDFNet form field appearance generation instead of relying on // Acrobat, uncomment the following two lines: // $doc->RefreshFieldAppearances(); // $doc->GetAcroForm()->Put("NeedAppearances", false); $doc->Save(($output_path."form1_filled.pdf"), SDFDoc::e_linearized); // Now merge data from XFDF. First create a FDF document from a XFDF file, then // merge data from FDF. $xfdf_doc = FDFDoc::CreateFromXFDF($input_path."form1_data.xfdf"); $doc->FDFMerge($fdf_doc); $doc->Save(($output_path."form1_filled_xfdf.pdf"), SDFDoc::e_linearized); $doc->Close(); echo nl2br("Done.\n"); // Example 3) Extract data to FDF echo nl2br("Extract data to FDF.\n"); $in_doc = new PDFDoc($output_path."form1_filled.pdf"); $in_doc->InitSecurityHandler(); $doc = $in_doc->FDFExtract(); $doc->SetPDFFileName("../form1.pdf"); $doc->Save($output_path."form1_filled_data.fdf"); // Now save the FDF document in XFDF format $doc->SaveAsXFDF($output_path."form1_filled_data.xfdf"); $doc->Close(); echo nl2br("Done.\n"); // Example 4) Read FDF files directly $doc = new FDFDoc($output_path."form1_filled_data.fdf"); for($itr = $doc->GetFieldIterator(); $itr->HasNext(); $itr->Next()) { echo nl2br("Field name: ".$itr->Current()->GetName()."\n"); echo nl2br("Field partial name: ".$itr->Current()->GetPartialName()."\n"); echo nl2br("------------------------------\n"); } $doc->Close(); echo nl2br("Done.\n"); // Example 5) Direct generation of FDF. $doc = new FDFDoc(); // Create new fields (i.e. key/value pairs). $doc->FieldCreate("Company", Field::e_text, "PDFTron Systems"); $doc->FieldCreate("First Name", Field::e_text, "John"); $doc->FieldCreate("Last Name", Field::e_text, "Doe"); // ... // $doc->SetPdfFileName("mydoc.pdf"); $doc->Save($output_path."sample_output.fdf"); $doc->Close(); echo nl2br("Done.\n"); ?>