2016-09-24 3 views
0

HTML을 사용하여 PDF를 생성하고 javascript도 실행하고 싶습니다. 나는 FPDF를 발견했고 나는 도서관과 함께 두 가지를 따로 따랐다. HTML에 대한FPDF에서 Html과 Javascript를 함께 구문

, 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> 작품)

자바 스크립트를

, 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();.

FPDF에서 사용할 javascript 액션과 함께 html과 html을 결합하려면 어떻게해야합니까?


편집은 다음 PDF_JavaScript 클래스의 소스는 너무 작기 때문에이 사용하는 경우에만이 특정 시나리오 나에게 출력 중 하나, 둘 (출력이 반환처럼 동작)

$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_HTML을 확장하는 PDF_AutoPrint 클래스에 이러한 메소드를 추가 할 수 있습니다.

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의 라이센스를 확인합니다.

참고 : 당신이> = 그것을 사용하여이 같은 것을 구현하기 위해 더 나은 것 5.4.0 PHP를 사용하는 경우 Traits

관련 문제