-1

是否有任何 Zend Helper 可以制作带有表格的 PDF 文档。我需要传递我的查询结果,助手将返回一个 PDF 文档,其中包含表格中的数据。就像下面的 Csv Helper 一样。

我在这里所做的是我将给定的课程放入

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;
 }

这堂课

  <?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);
 }
   }
?>
4

1 回答 1

2

在zend framework 2上有一个pdf的官方模块:zendpdf

zendframework/zendpdf您可以通过添加到您的 composer.json 文件来安装它。

它还没有完成,这就是为什么你找不到任何关于它的信息。您可以在此处找到以前的文档...只需查找zend.pdf.*.rst文件。

DOMPDF 库也有一个 ZF2 模块。在此处查找更多信息。您可以在此处找到代码。"dino/dompdf-module": "dev-master"通过添加到您的 composer.json 文件轻松安装。

添加:

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'
        )
    );
}

它将为 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");
}
于 2012-10-12T16:53:36.313 回答