Zend Framework将条形码渲染为PDF页面

时间:2012-01-28 22:07:06

标签: zend-framework pdf-generation barcode

我正在尝试使用条形码创建PDF页面,这些条形码具有正确的边距以打印在标签页上(如果您对如何在没有PDF生成的标签上打印条形码有另一种想法,我很乐意听到它)。以下是我目前的代码:

$pdf = new Zend_Pdf();
for($i = 1; $i <= $numberOfPages; $i++)
{
  $page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
  $page->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 20);
  $pdf->pages[] = $page;
}
foreach($pdf->pages as $id => $page)
{
  if($equipmentCount > 10)
  {
    $barcodesOnThisPage = 10;
    $equipmentCount = $equipmentCount - 10;
  }
  else
  {
    $barcodesOnThisPage = $equipmentCount;
  }
  for($i = 1; $i <= $barcodesOnThisPage; $i++)
  {
    //Zend_Barcode::setBarcodeFont();
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK-1'); 
    $rendererOptions = array('topOffset' => 50);
    $pdf = Zend_Barcode::factory('code39', 'pdf', 
    $barcodeOptions, $rendererOptions)->setResource($pdf)->render(); 
    die;
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK-2'); 
    $rendererOptions = array('topOffset' => 100); 
    $pdfBarcode = Zend_Barcode::factory('code39', 'pdf', 
    $barcodeOptions, $rendererOptions)->setResource($pdf)->draw(); 
    $barcodeOptions = array('text' => 'ZEND-FRAMEWORK-3'); 
    $rendererOptions = array('topOffset' => 150); 
    $pdfBarcode = Zend_Barcode::factory('code39', 'pdf', 
    $barcodeOptions, $rendererOptions)->setResource($pdf)->draw(); 
    // and the end render your Zend_Pdf 
    /$pdfBarcode->save('testBarcode.pdf'); 
  }
}

我目前收到错误“无效的文件路径:库/ Zend / Pdf / FileParserDataSource / File.php第79行()”

有关为何发生这种情况的任何想法?当我尝试渲染条形码时会发生这种情况。在此之前,代码执行时没有错误。

2 个答案:

答案 0 :(得分:2)

我相信此处已添加了对您问题的完整答案: Zend Framework Render Barcodes Into Multiple PDF Pages with other content

关键似乎是:

  1. 在页面上创建Pdf库页面内容。
  2. 将Pdf库页面添加到pdf。
  3. 使用Zend_Barcode::factory('code39', 'pdf', $barcodeOptions, $rendererOptions)->setResource($pdf, $page_index)->draw();
  4. 之类的内容将条形码库条形码打印到pdf的该页面上

答案 1 :(得分:1)

$barcodeOptions = array('text' => 'ZEND-FRAMEWORK-1', 'font' => __DIR__ . "/FRE3OF9X.TTF"); 

TTF文件(FRE3OF9X.TTF或你有什么)必须存在。