2012-10-12 7 views
-1

테이블이있는 PDF 문서를 만들 수있는 젠드 도우미가 있습니까? 필자는 쿼리의 결과를 전달해야하며 도우미는 데이터가 포함 된 PDF 문서를 테이블에 반환합니다. Csv 도우미와 같습니다.Zend PDF 테이블 도우미

나는 여기에 한

<?php 


// Zend_Controller_Action_Helper_Csv 

class Zend_Controller_Action_Helper_Csv extends Zend_Controller_Action_Helper_Abstract{ 


public function direct($aryData = array(), $strName = "csv", $bolCols = true){ 
    $this->printExcel($aryData, $strName, $bolCols); 
    } 


    public function printExcel($aryData = array(), $strName = "csv", $bolCols = true){ 
      if (!is_array($aryData) || empty($aryData)){ exit(1); } 

// header 
    header('Content-Description: File Transfer'); 
    header('Content-Type: text/csv; charset=utf-8'); 
    header("Content-Disposition: attachment; filename=" . $strName . "-export.csv"); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-control: private, must-revalidate'); 
    header("Pragma: public"); 

    if ($bolCols){ 
     $aryCols = array_keys($aryData[0]); 
     array_unshift($aryData, $aryCols); 
     } 
     ob_start(); 

    $fp = fopen("php://output", "w"); 
    if (is_resource($fp)){ 
    foreach ($aryData as $aryLine) { 
    fputcsv($fp, $aryLine, ',', '"'); 
     } 
$strContent = ob_get_clean(); 

    $strContent = preg_replace('/^ID/', 'id', $strContent); 
    $strContent = utf8_decode($strContent); 
    $intLength = mb_strlen($strContent, 'utf-8'); 

header('Content-Length: ' . $intLength); 
echo $strContent; 
    exit(0); 
} 
ob_end_clean(); 
exit(1); 
} 
    } 
?> 

답변

2

이 내가

Zend/Controller/Action/Helper 

에 지정된 클래스를 넣어 내 행동에 비해 내가 너무

public function getcsvAction() { 
    $this->_helper->layout()->disableLayout(); 
    $this->_helper->viewRenderer->setNeverRender(); 
    try{ 
     $clModel = new Application_Model_DbTable_Mytable(); 
     $select = $clModel->clCSV()); 
     $this->_helper->Csv($select, "genertadfile name"); 
    }catch(Exception $e){ 
     echo 'Oops! Something went wrong.'; 
    } 
    exit; 
} 

할이 클래스 것이 무엇인지 젠드 프레임 워크 2의 PDF 공식 모듈입니다. zendpdf

composer.json 파일에 zendframework/zendpdf을 추가하여 설치할 수 있습니다.

아직 finnished되지 않은, 그 이유에 대한 정보를 찾을 수 없습니다. 이전 문서 here을 찾을 수 있습니다 ... zend.pdf.*.rst 파일을 찾으십시오.

DOMPDF 라이브러리 용 ZF2 모듈도 있습니다. 자세한 내용은 here을 참조하십시오. 찾을 수있는 코드는 here입니다. composer.json 파일에 "dino/dompdf-module": "dev-master"을 추가하면 쉽게 설치할 수 있습니다.

추가 :

DOMPDF이처럼 사용할 수 있습니다 :

public function dompdfAction() 
{ 
    return new DOMPDFModule\View\Model\PdfModel\PdfModel(
     array(), // Variable assignments per Zend\View\Model\ViewModel 
     array(
      'fileName' => 'monthly-report', // Optional; triggers PDF download, automatically appends ".pdf" 
      'paperSize' => 'a4', 
      'paperOrientation' => 'landscape' 
     ) 
    ); 
} 

IT는 dompdfAction의 viewscript에 대한 PDF 파일을 생성합니다.

ZendPdf는 다음과 같이 사용할 수 있습니다

public function pdfAction() 
{ 
    $pdf = new \ZendPdf\PdfDocument(); 

    $pdf->pages[] = ($page = $pdf->newPage(\ZendPdf\Page::SIZE_A4)); 
    $font = \ZendPdf\Font::fontWithName(\ZendPdf\Font::FONT_HELVETICA); 
    $page->setFont($font, 36); 
    $page->drawText('<h1>html não funciona...</h1>', 10, 536, 'utf-8'); 
    $page->drawText('PDF FUNCIONA', 10, 500, 'utf-8'); 
    $image = \ZendPdf\Image::imageWithPath('public/images/zf2-logo.png'); 
    $page->drawImage($image, 100, 100, 400, 300); 
    $pdf->save("teste.pdf"); 
}