TimeTrex/classes/GovernmentForms/examples/country/us/941_fdf.php

69 lines
2.4 KiB
PHP

<?php
require_once( '../../../../../includes/global.inc.php' );
/*
* Import the PDF into the desktop Scribus application, then save as a PDF to make the form fillable in PHP. This still requires some changes though, such as text alignment in form fields, and checkboxes.
* Scribus can also show exact coordinates in the PDF, so that might make the overlay PDF option easier to deal with.
* Filling out large forms is quite slow.
*
* Dump PDF form field names: pdftk classes/GovernmentForms/country/us/templates/941.orig.pdf dump_data_fields
*
* If an error of: "Fast Web View mode is not supported" is returned, use: cpdf in.pdf -o out.pdf
* https://stackoverflow.com/questions/18741208/disable-fast-web-view-on-a-pdf-file
*
*
* ***NOTE*** This only works with AcroForms and not XFA forms which the IRS primarily uses.
* pdftk f941.pdf output f941_dropped_xfa.pdf drop_xfa
* pdftk f941_dropped_xfa.pdf output f941_dropped_xfa_uncompressed.pdf uncompress
*
*/
//require_once( '../../../../other/forge_fdf.php' );
//$ffdf = new ForgeFDF();
//
////Dump PDF form field names: pdftk classes/GovernmentForms/country/us/templates/941.orig.pdf dump_data_fields
//
//$pdf_form_url = "http://demo.timetrex.com/classes/GovernmentForms/country/us/941.pdf";
//$fdf_data_strings = [ 'topmostSubform[0].Page1[0].Header[0].EntityArea[0].f1_01[0]' => 'z2z' ];
//
////var_dump( $ffdf->forge_fdf( $pdf_form_url, $fdf_data_strings, $fdf_data_names, $fields_hidden, $fields_readonly ) );
//file_put_contents( '941.fdf', $ffdf->forge_fdf( $pdf_form_url, $fdf_data_strings, [], [], [] ) );
//Alternative method, but still doesn't work with IRS PDFs.
require_once( '../../../../fpdm/fpdm.php' );
$fields = array(
'f1_1[0]' => '12',
'f1_2[0]' => '34567',
//'f1_3[0]' => '3',
//'f1_4[0]' => '4',
//'f1_5[0]' => 'f1_5',
//'f1_6[0]' => 'f1_6',
//'f1_7[0]' => 'f1_7',
//'f1_8[0]' => 'f1_8',
//'f1_9[0]' => 'f1_9',
//'f1_10[0]' => 'f1_10',
//'april_cb' => true,
'c1_1[1]' => true,
'c1_1[2]' => true,
//'f1_13[0]' => '1234',
//'f1_14[0]' => '99',
);
$pdf = new FPDM('f941b.pdf');
$pdf->useCheckboxParser = true; //IMPORTANT: This must be enabled.
//$pdf->verbose = true;
//$pdf->verbose_level = 1;
$pdf->Load($fields, false); // second parameter: false if field values are in ISO-8859-1, true if UTF-8
$pdf->Merge();
//$data = $pdf->Output( '/tmp/', 'test.pdf' );
$data = $pdf->Output( 'S' );
file_put_contents('test.pdf', $data );
?>