2016-09-24 2 views
0

Я хочу сгенерировать PDF с помощью html (с php) и запустить javascript. Я натолкнулся на FPDF, и я достиг как отдельно с библиотеками.Parse Html и Javascript вместе на FPDF

Для HTML, html parser:

require('WriteHTML.php'); 

$pdf=new PDF_HTML(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial'); 
$pdf->WriteHTML('You can<br><p align="center">center a line</p>and add a horizontal rule:<br><hr><button>LaLaLa</button>'); 
$pdf->Output(); 
?> 

Это работает. (кроме <button></button> тега, на самом деле <a href="test.php">Test<a> работы)

Для JavaScript, this example:

require('pdf_js.php'); 

class PDF_AutoPrint extends PDF_JavaScript { 
    function AutoPrint($dialog=false) { 
     $param=($dialog ? 'true' : 'false'); 
     $script="print($param);"; 
     $this->IncludeJS($script); 
    } 
} 

$pdf=new PDF_AutoPrint(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial','',20); 
$pdf->Text(90, 50, 'Print me!'); 

$pdf->AutoPrint(true); 
$pdf->Output(); 
?> 

Когда инстанцировании $pdf на первом, оба примера требует призвать их класса - $pdf=new PDF_AutoPrint(); и $pdf=new PDF_HTML();.

Что мне делать, чтобы комбинировать обе кнопки и кнопки в html с действием javascript для использования в FPDF?


Edit: Используя это будет только принести мне один из выходов, а не как (выход ведет себя как возвращение)

$pdf=new PDF_HTML(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial'); 
$pdf->WriteHTML('You can<br><p align="center">center a line</p>and add a horizontal rule:<br><hr><a href="lala.php">jfdskjfjksd</a>'); 

$pdf2=new PDF_AutoPrint(); 
$pdf2->AddPage(); 
$pdf2->SetFont('Arial','',20); 
$pdf2->Text(90, 50, 'Print me!'); 
//Open the print dialog 
$pdf2->AutoPrint(true); 


$pdf->Output(); 
$pdf2->Output(); 

ответ

0

В данном конкретном случае, так как источник для PDF_JavaScript класса настолько мал, вы могли бы просто добавить эти методы к вашему классу PDF_AutoPrint, который расширил бы PDF_HTML.

class PDF_AutoPrint extends PDF_HTML{ 

    function AutoPrint($dialog=false) { 
     $param=($dialog ? 'true' : 'false'); 
     $script="print($param);"; 
     $this->IncludeJS($script); 
    } 

    function IncludeJS($script) { 
    $this->javascript=$script; 
    } 

    function _putjavascript() { 
    $this->_newobj(); 
    $this->n_js=$this->n; 
    $this->_out('<<'); 
    $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R]'); 
    $this->_out('>>'); 
    $this->_out('endobj'); 
    $this->_newobj(); 
    $this->_out('<<'); 
    $this->_out('/S /JavaScript'); 
    $this->_out('/JS '.$this->_textstring($this->javascript)); 
    $this->_out('>>'); 
    $this->_out('endobj'); 
    } 

    function _putresources() { 
    parent::_putresources(); 
    if (!empty($this->javascript)) { 
     $this->_putjavascript(); 
    } 
    } 

    function _putcatalog() { 
    parent::_putcatalog(); 
    if (!empty($this->javascript)) { 
     $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>'); 
    } 
    } 

} 

Примечание: также проверить лицензию на PDF_JavaScript, чтобы убедиться, что что-то подобное не допускается.

Примечание: Если вы используете PHP> = 5.4.0, было бы лучше, чтобы реализовать что-то подобное с помощью Traits

 Смежные вопросы

  • Нет связанных вопросов^_^