在Zend Controller中编写PDF

时间:2014-04-01 23:35:40

标签: zend-framework zend-framework2 pdf-generation zend-db zend-db-table

我要求make mediantes报告查询数据库,所以我的想法是写" text"在PDF中,模型视图控制器知道如何执行查询,这是我使用控制器生成PDF的代码

public function mensualAction() {

    //Para cargar la librería:
    require_once 'Zend/Pdf.php';
    require_once 'Zend/Loader/Autoloader.php';

    //Para crear un nuevo documento PDF:
    $pdf = new Zend_Pdf();

    //Para crear una nueva página:
    $pdf->pages[] = ($page = $pdf->newPage('A4'));
    $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
    $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);

    //Obtener ancho y alto de la página:
    $ancho = $page->getWidth();
    $alto = $page->getHeight();

    //Usar estilos:
    $estilo = new Zend_Pdf_Style();
    $estilo->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
    $estilo->setFont($font, 10);
    $estilo->setStyle($style);

    //Escribir texto:
    $page->drawText("Hola Mundo", $x, $y);

    //Insertar imágenes:
    //$img = Zend_Pdf_ImageFactory::factory('sentidoweb.png');
    //$page->drawImage($img, $x, $y, $x+&ancho, $y+$alto);
    //Devolver la salida:
    echo $pdf->render();

    //Eso sí, antes hay que tener en cuenta que tenemos que devolver al inicio del script el Content-Type:

    header("Content-Type: application/pdf");
    // Si queremos que se devuelva como un fichero adjunto
    header("Content-Disposition: attachment; filename=\"prueba.pdf\"");
}

浏览器错误:

 Fatal error: Call to undefined method Zend_Pdf_Style::setStyle() in ../application/controllers/ReportesController.php on line 32

第32行:

$estilo->setStyle($style);

1 个答案:

答案 0 :(得分:0)

我有两点意见:
1 - $style未定义 2 - setStyle()不是Zend_Pdf_Style的方法
但是,SetStyle()Zend_Pdf_Canvas_AbstractZend_Pdf_Page扩展Zend_Pdf_Canvas_Abstract的方法。

所以也许你想要做的是:

 $page->setStyle($estilo);

我希望它会有所帮助。 :)