-1

表を含む PDF ドキュメントを作成できる Zend Helper はありますか。クエリの結果を渡す必要があり、ヘルパーはテーブルにデータを含む PDF ドキュメントを返します。以下の Csv ヘルパーのように。

ここで行ったことは、指定されたクラスを配置することです

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/zendpdfcomposer.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 のビュースクリプトの 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 に答える