Нужна помощь в создании PDF в Zend Framework - PullRequest
1 голос
/ 30 мая 2011

Я использую Doctrine 1.2.3 в своем приложении и пытаюсь создать отчет в формате PDF на основе следующего руководства http://devzone.zend.com/article/12492-Creating-PDF-Documents-with-Zend-Framework с использованием компонента zend_pdf_table.

РЕДАКТИРОВАТЬ Документ созданно я могу получить только первую запись, которая появится в отчете, и все еще получаю ошибку стиля, несмотря на попытку добавить свой собственный стиль.

Я могу оставить это, так как у меня заканчивается время на проекте, я 'Я посмотрю на создание своего собственного PDF с нуля.

[error] [client 127.0.0.1] PHP Notice:  Trying to get property of non-object in C:\\WebDocs\\xx\\library\\Zend\\Pdf\\Style.php on line 211

Мой исправленный код ниже

// report to print todays appointments
   public function todaysgroomingappointmentsAction()
   {
    try{

    $t=date('y-m-d');

  $q = Doctrine_Query::create()
    ->select('CONCAT(g.gapmtSTime, g.gapmtETime) AS Time, CONCAT(c.firstname, c.lastname) AS Client, p.name AS Pet, r.groomprocedure AS Procedure, u.name AS Groomer')
    ->from('PetManager_Model_Groomappointments g')
    ->leftJoin('g.PetManager_Model_Clients c')
    ->leftJoin('g.PetManager_Model_Pets p')
    ->leftJoin('g.PetManager_Model_Users u')
    ->leftJoin('g.PetManager_Model_Groomservices s')
    ->leftJoin('s.PetManager_Model_Groomprocedures r')
    ->where('g.gapmtStatus = 1 AND g.gapmtDate = ?',$t);
    $result = $q->fetchArray();

  require_once 'Zend/Pdf.php';;         
  require_once 'My/Pdf.php';    
  require_once 'My/Pdf/Document.php';
  require_once 'My/Pdf/Page.php';
  require_once 'My/Pdf/Table.php';
  require_once 'My/Pdf/Table/Row.php';
  require_once 'My/Pdf/Table/Cell.php';
  require_once 'My/Pdf/Table/Column.php';
  require_once 'My/Pdf/Table/HeaderRow.php';  

    // create PDF
    $pdf = new My_Pdf_Document('todaysappointments.pdf', 'D:/');

    // create page
    $page = $pdf->createPage();

    // define font resource
   $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);

   // set font
  $page->setFont($font, 24);

  // create table
 $table = new My_Pdf_Table(4);

 // iterate over record set
 // set up table content
  foreach ($result as $record) {
   $row = new My_Pdf_Table_Row();
  $cols = array();
  foreach ($record as $k => $v) {
   $col = new My_Pdf_Table_Column();
    $col->setText($v);
    $cols[] = $col;      
  }
  $row->setColumns($cols);
  $row->setFont($font, 14);
  $row->setBorder(My_Pdf::TOP, new Zend_Pdf_Style());
  $row->setBorder(My_Pdf::BOTTOM, new Zend_Pdf_Style());
  $row->setBorder(My_Pdf::LEFT, new Zend_Pdf_Style());
  $row->setCellPaddings(array(10,10,10,10));
  $table->addRow($row);
 }

  // add table to page
 $page->addTable($table, 0, 0);

 // add page to document
 $pdf->addPage($page);

 // save as file
 $pdf->save('todaysappointments.pdf');
  echo 'SUCCESS: Document saved!';  
  } catch (Zend_Pdf_Exception $e) {
  die ('PDF error: ' . $e->getMessage());  
 } catch (Exception $e) {
 die ('Application error: ' . $e->getMessage());    
}
} 

Может кто-нибудь сказать мне, почему я получаю эту ошибку и как я могу ее исправить.

Большое спасибо.

1 Ответ

0 голосов
/ 31 мая 2011

Если вам нужно сохранить, вы должны добавить имя файла в качестве аргумента в $ pdf-> save (), если вам нужно просто распечатать содержимое, вы можете использовать echo $ pdf-> render (), конечно, с правом отправки Заголовки для PDF.

О стилях, вы должны определить любой стиль с помощью Zend_Pdf_Style, а не просто передать пустой новый Zend_Pdf_Style (), что-то вроде:

$ style = new Zend_Pdf_Style (); $ style-> setLineColor (new Zend_Pdf_Color_Rgb (0, 0, 0)); $ style-> setLineWidth (1);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...