2021-02-24 20:40:04 +00:00
< ? php
//============================================================+
// File name : example_014.php
// Begin : 2008-03-04
// Last Update : 2013-05-14
//
// Description : Example 014 for TCPDF class
// Javascript Form and user rights (only works on Adobe Acrobat)
//
// Author: Nicola Asuni
//
// (c) Copyright:
// Nicola Asuni
// Tecnick.com LTD
// www.tecnick.com
// info@tecnick.com
//============================================================+
/**
* Creates an example PDF TEST document using TCPDF
* @ package com . tecnick . tcpdf
* @ abstract TCPDF - Example : Javascript Form and user rights ( only works on Adobe Acrobat )
* @ author Nicola Asuni
* @ since 2008 - 03 - 04
2023-01-27 11:31:27 +00:00
* @ group javascript
* @ group form
* @ group pdf
2021-02-24 20:40:04 +00:00
*/
// Include the main TCPDF library (search for installation path).
require_once ( 'tcpdf_include.php' );
// create new PDF document
$pdf = new TCPDF ( PDF_PAGE_ORIENTATION , PDF_UNIT , PDF_PAGE_FORMAT , true , 'UTF-8' , false );
// set document information
2023-01-27 11:31:27 +00:00
$pdf -> setCreator ( PDF_CREATOR );
$pdf -> setAuthor ( 'Nicola Asuni' );
$pdf -> setTitle ( 'TCPDF Example 014' );
$pdf -> setSubject ( 'TCPDF Tutorial' );
$pdf -> setKeywords ( 'TCPDF, PDF, example, test, guide' );
2021-02-24 20:40:04 +00:00
// set default header data
2023-01-27 11:31:27 +00:00
$pdf -> setHeaderData ( PDF_HEADER_LOGO , PDF_HEADER_LOGO_WIDTH , PDF_HEADER_TITLE . ' 014' , PDF_HEADER_STRING );
2021-02-24 20:40:04 +00:00
// set header and footer fonts
$pdf -> setHeaderFont ( Array ( PDF_FONT_NAME_MAIN , '' , PDF_FONT_SIZE_MAIN ));
$pdf -> setFooterFont ( Array ( PDF_FONT_NAME_DATA , '' , PDF_FONT_SIZE_DATA ));
// set default monospaced font
2023-01-27 11:31:27 +00:00
$pdf -> setDefaultMonospacedFont ( PDF_FONT_MONOSPACED );
2021-02-24 20:40:04 +00:00
// set margins
2023-01-27 11:31:27 +00:00
$pdf -> setMargins ( PDF_MARGIN_LEFT , PDF_MARGIN_TOP , PDF_MARGIN_RIGHT );
$pdf -> setHeaderMargin ( PDF_MARGIN_HEADER );
$pdf -> setFooterMargin ( PDF_MARGIN_FOOTER );
2021-02-24 20:40:04 +00:00
// set auto page breaks
2023-01-27 11:31:27 +00:00
$pdf -> setAutoPageBreak ( TRUE , PDF_MARGIN_BOTTOM );
2021-02-24 20:40:04 +00:00
// set image scale factor
$pdf -> setImageScale ( PDF_IMAGE_SCALE_RATIO );
// set some language-dependent strings (optional)
if ( @ file_exists ( dirname ( __FILE__ ) . '/lang/eng.php' )) {
require_once ( dirname ( __FILE__ ) . '/lang/eng.php' );
$pdf -> setLanguageArray ( $l );
}
// ---------------------------------------------------------
// IMPORTANT: disable font subsetting to allow users editing the document
$pdf -> setFontSubsetting ( false );
2023-01-27 11:31:27 +00:00
// set font. 'helvetica' MUST be used to avoid a PHP notice from PHP 7.4+
$pdf -> setFont ( 'helvetica' , '' , 10 , '' , false );
2021-02-24 20:40:04 +00:00
// add a page
$pdf -> AddPage ();
/*
It is possible to create text fields , combo boxes , check boxes and buttons .
Fields are created at the current position and are given a name .
This name allows to manipulate them via JavaScript in order to perform some validation for instance .
*/
// set default form properties
$pdf -> setFormDefaultProp ( array ( 'lineWidth' => 1 , 'borderStyle' => 'solid' , 'fillColor' => array ( 255 , 255 , 200 ), 'strokeColor' => array ( 255 , 128 , 128 )));
2023-01-27 11:31:27 +00:00
$pdf -> setFont ( 'helvetica' , 'BI' , 18 );
2021-02-24 20:40:04 +00:00
$pdf -> Cell ( 0 , 5 , 'Example of Form' , 0 , 1 , 'C' );
$pdf -> Ln ( 10 );
2023-01-27 11:31:27 +00:00
$pdf -> setFont ( 'helvetica' , '' , 12 );
2021-02-24 20:40:04 +00:00
// First name
$pdf -> Cell ( 35 , 5 , 'First name:' );
$pdf -> TextField ( 'firstname' , 50 , 5 );
$pdf -> Ln ( 6 );
// Last name
$pdf -> Cell ( 35 , 5 , 'Last name:' );
$pdf -> TextField ( 'lastname' , 50 , 5 );
$pdf -> Ln ( 6 );
// Gender
$pdf -> Cell ( 35 , 5 , 'Gender:' );
$pdf -> ComboBox ( 'gender' , 30 , 5 , array ( array ( '' , '-' ), array ( 'M' , 'Male' ), array ( 'F' , 'Female' )));
$pdf -> Ln ( 6 );
// Drink
$pdf -> Cell ( 35 , 5 , 'Drink:' );
//$pdf->RadioButton('drink', 5, array('readonly' => 'true'), array(), 'Water');
$pdf -> RadioButton ( 'drink' , 5 , array (), array (), 'Water' );
$pdf -> Cell ( 35 , 5 , 'Water' );
$pdf -> Ln ( 6 );
$pdf -> Cell ( 35 , 5 , '' );
$pdf -> RadioButton ( 'drink' , 5 , array (), array (), 'Beer' , true );
$pdf -> Cell ( 35 , 5 , 'Beer' );
$pdf -> Ln ( 6 );
$pdf -> Cell ( 35 , 5 , '' );
$pdf -> RadioButton ( 'drink' , 5 , array (), array (), 'Wine' );
$pdf -> Cell ( 35 , 5 , 'Wine' );
$pdf -> Ln ( 6 );
$pdf -> Cell ( 35 , 5 , '' );
$pdf -> RadioButton ( 'drink' , 5 , array (), array (), 'Milk' );
$pdf -> Cell ( 35 , 5 , 'Milk' );
$pdf -> Ln ( 10 );
// Newsletter
$pdf -> Cell ( 35 , 5 , 'Newsletter:' );
$pdf -> CheckBox ( 'newsletter' , 5 , true , array (), array (), 'OK' );
$pdf -> Ln ( 10 );
// Address
$pdf -> Cell ( 35 , 5 , 'Address:' );
$pdf -> TextField ( 'address' , 60 , 18 , array ( 'multiline' => true , 'lineWidth' => 0 , 'borderStyle' => 'none' ), array ( 'v' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' , 'dv' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' ));
$pdf -> Ln ( 19 );
// Listbox
$pdf -> Cell ( 35 , 5 , 'List:' );
$pdf -> ListBox ( 'listbox' , 60 , 15 , array ( '' , 'item1' , 'item2' , 'item3' , 'item4' , 'item5' , 'item6' , 'item7' ), array ( 'multipleSelection' => 'true' ));
$pdf -> Ln ( 20 );
// E-mail
$pdf -> Cell ( 35 , 5 , 'E-mail:' );
$pdf -> TextField ( 'email' , 50 , 5 );
$pdf -> Ln ( 6 );
// Date of the day
$pdf -> Cell ( 35 , 5 , 'Date:' );
$pdf -> TextField ( 'date' , 30 , 5 , array (), array ( 'v' => date ( 'Y-m-d' ), 'dv' => date ( 'Y-m-d' )));
$pdf -> Ln ( 10 );
2023-01-27 11:31:27 +00:00
$pdf -> setX ( 50 );
2021-02-24 20:40:04 +00:00
// Button to validate and print
$pdf -> Button ( 'print' , 30 , 10 , 'Print' , 'Print()' , array ( 'lineWidth' => 2 , 'borderStyle' => 'beveled' , 'fillColor' => array ( 128 , 196 , 255 ), 'strokeColor' => array ( 64 , 64 , 64 )));
// Reset Button
$pdf -> Button ( 'reset' , 30 , 10 , 'Reset' , array ( 'S' => 'ResetForm' ), array ( 'lineWidth' => 2 , 'borderStyle' => 'beveled' , 'fillColor' => array ( 128 , 196 , 255 ), 'strokeColor' => array ( 64 , 64 , 64 )));
// Submit Button
$pdf -> Button ( 'submit' , 30 , 10 , 'Submit' , array ( 'S' => 'SubmitForm' , 'F' => 'http://localhost/printvars.php' , 'Flags' => array ( 'ExportFormat' )), array ( 'lineWidth' => 2 , 'borderStyle' => 'beveled' , 'fillColor' => array ( 128 , 196 , 255 ), 'strokeColor' => array ( 64 , 64 , 64 )));
// Form validation functions
$js = <<< EOD
function CheckField ( name , message ) {
var f = getField ( name );
if ( f . value == '' ) {
app . alert ( message );
f . setFocus ();
return false ;
}
return true ;
}
function Print () {
if ( ! CheckField ( 'firstname' , 'First name is mandatory' )) { return ;}
if ( ! CheckField ( 'lastname' , 'Last name is mandatory' )) { return ;}
if ( ! CheckField ( 'gender' , 'Gender is mandatory' )) { return ;}
if ( ! CheckField ( 'address' , 'Address is mandatory' )) { return ;}
print ();
}
EOD ;
// Add Javascript code
$pdf -> IncludeJS ( $js );
// ---------------------------------------------------------
//Close and output PDF document
$pdf -> Output ( 'example_014.pdf' , 'D' );
//============================================================+
// END OF FILE
//============================================================+