Add-On JavaScript support
Informations
Author:Johannes GüntertLicense: FPDF
Description
This script allows to embed JavaScript inside the PDF. The code is executed when the document is opened.The Acrobat JavaScript reference is available here.
Note: support may depend on the PDF viewer.
Source
<?php
require('fpdf.php');
class PDF_JavaScript extends FPDF {
protected $javascript;
protected $n_js;
function IncludeJS($script) {
$this->javascript = $script;
}
function _putjavascript() {
$this->_newobj();
$this->n_js = $this->n;
$this->_put('<<');
$this->_put('/Names [(EmbeddedJS) '.($this->n+1).' 0 R]');
$this->_put('>>');
$this->_put('endobj');
$this->_newobj();
$this->_put('<<');
$this->_put('/S /JavaScript');
$this->_put('/JS '.$this->_textstring($this->javascript));
$this->_put('>>');
$this->_put('endobj');
}
function _putresources() {
parent::_putresources();
if (!empty($this->javascript)) {
$this->_putjavascript();
}
}
function _putcatalog() {
parent::_putcatalog();
if (!empty($this->javascript)) {
$this->_put('/Names <</JavaScript '.($this->n_js).' 0 R>>');
}
}
}
?>
Example
This example shows how to open the print dialog when the document has loaded (doesn't work with Chrome).<?php
require('pdf_js.php');
class PDF_AutoPrint extends PDF_JavaScript
{
function AutoPrint($printer='')
{
// Open the print dialog
if($printer)
{
$printer = str_replace('\\', '\\\\', $printer);
$script = "var pp = getPrintParams();";
$script .= "pp.interactive = pp.constants.interactionLevel.full;";
$script .= "pp.printerName = '$printer'";
$script .= "print(pp);";
}
else
$script = 'print(true);';
$this->IncludeJS($script);
}
}
$pdf = new PDF_AutoPrint();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 20);
$pdf->Text(90, 50, 'Print me!');
$pdf->AutoPrint();
$pdf->Output();
?>