Zend Framework 1.12条形码不会回显到pdf文件的下一页

时间:2015-04-04 11:21:14

标签: zend-framework

条形码不会打印到pdf文件的下一页。让我解释。如果我想在每页上打印60个条形码和15个条形码。它打印15个条形码,其余条形码和页面显示空白。这是我的代码

public function generatebarcodeAction(){
  $this->_helper->layout()->disableLayout();
        $pdf = new Zend_Pdf(); 

        $hidden =$_POST['hidden']; // i want to barcode of this field.
        // barcode should be print quantity from to quantity to

        $quantityfrom =$_POST['quantity_from']; 
        $quantityto =$_POST['quantity_to']; 
        $rendererOptions = array(
        'topOffset' => 50,
        'leftOffset' => 50
        );
        Zend_Barcode::setBarcodeFont(dirname(ROOT_PATH) .  '/inventory/library/Zend/Barcode/Object/fonts/open-sans/OpenSans-Semibold.ttf'); 

        $numberOfPages = $quantityto/15;
        $equipmentCount = $quantityto;
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 > 15)
  {
    $barcodesOnThisPage = 15;
    $equipmentCount = $equipmentCount - 15;
  }
  else
  {
    $barcodesOnThisPage = $equipmentCount;
  }

for($i=$quantityfrom;$i<=$quantityto;$i++){
        $barcodeOptions = array('text' => $hidden.$i);
        $rendererOptions = array('topOffset' => 50*$i); 
        $pdfWithBarcode = Zend_Barcode::factory('code39', 'pdf', 
        $barcodeOptions, $rendererOptions)->setResource($pdf)->draw(); 
        $pdfWithBarcode->save('testBarcode.pdf'); 

      }
       $quantityfrom = $i;
 }
}

1 个答案:

答案 0 :(得分:1)

在此代码中,您将创建4个空白页,然后在页码1中绘制所有条形码。您无法看到45个条形码,因为它们的边距大于页面高度!! 您可能希望将条形码添加到$pages而不是$pdf。 请注意,您应使用for代替foreach来重写$page