Example #1
0
 /**
  * Set fill color to gray
  * Sets the current fill color to a gray value between 0 and 1 inclusive.
  * 
  * @param float $gray Grayness between 0 and 1
  *
  * @return bool Returns TRUE on success or FALSE on failure.
  */
 public function setgray_fill($gray)
 {
     if (!$this->_page) {
         $this->_errmsg = 'No Page';
         return false;
     }
     try {
         $this->_page->setFillColor(new Zend_Pdf_Color_GrayScale($gray));
         return true;
     } catch (\Exception $e) {
         $this->_errmsg = $e->getMessage();
     }
     return false;
 }
Example #2
0
 /**
  * @param ZendPage $page
  * @param FillStyle $fillStyle
  * @param float|null $opacity
  */
 private function setFillStyle(ZendPage $page, FillStyle $fillStyle, $opacity = null)
 {
     $page->setFillColor($this->getZendColor($fillStyle->getColor()));
     if ($opacity !== null) {
         $page->setAlpha($opacity * $fillStyle->getOpacity());
     }
 }
Example #3
0
 private function generatePdf(Invoice $invoice)
 {
     $pdf = new PdfDocument();
     // Add new page generated by ZendPdf\Page object
     $page1 = new Page(Page::SIZE_A4);
     $pdf->pages[] = $page1;
     // Load the needed fonts
     $fontHelvetica = Font::fontWithName(Font::FONT_HELVETICA);
     $fontHelveticaBold = Font::fontWithName(Font::FONT_HELVETICA_BOLD);
     $fontTimes = Font::fontWithName(Font::FONT_TIMES);
     $fontTimesBold = Font::fontWithName(Font::FONT_TIMES_BOLD);
     $colorWhite = new \ZendPdf\Color\GrayScale(1);
     $colorBlack = new \ZendPdf\Color\GrayScale(0);
     $pdf->properties['Author'] = 'Marinvägen IT';
     $pdf->properties['Creator'] = 'Marinvägen IT';
     $pdf->properties['Title'] = 'Invoice';
     $pdf->properties['Subject'] = 'Invoice';
     $page1->setFillColor($colorWhite)->setLineColor($colorBlack)->drawRectangle(50, 747, 295, 787)->drawRectangle(300, 747, 545, 787)->drawRectangle(50, 622, 295, 742)->drawRectangle(300, 622, 545, 742)->drawRectangle(50, 95, 545, 617)->drawRectangle(50, 597, 545, 617)->drawRectangle(50, 30, 545, 90);
     // Draw header
     $page1->setFont($fontTimes, 10)->setFillColor($colorBlack)->drawText('Faktura nr', 305, 775)->drawText('Kund nr', 540 - $this->widthForStringUsingFontSize('Kund nr', $fontTimes, 10), 775)->drawText('Fakturadatum', 55, 775)->drawText('Förfallodatum', 290 - $this->widthForStringUsingFontSize('Förfallodatum', $fontTimes, 10), 775)->drawText('Fakturaadress', 305, 730)->drawText('Er referens:', 55, 730)->drawText($invoice->getClientReference(), 290 - $this->widthForStringUsingFontSize($invoice->getClientReference(), $fontTimes, 10), 730)->drawText('Vår referens:', 55, 719)->drawText($invoice->getOwnReference(), 290 - $this->widthForStringUsingFontSize($invoice->getOwnReference(), $fontTimes, 10), 719)->drawText('Betalningsvillkor:', 55, 708)->drawText($invoice->getDueDays() . ' dagar netto', 290 - $this->widthForStringUsingFontSize($invoice->getDueDays() . ' dagar netto', $fontTimes, 10), 708)->drawText('Dröjsmålsränta:', 55, 697)->drawText('9,50 %', 290 - $this->widthForStringUsingFontSize('9,50 %', $fontTimes, 10), 697)->drawText('Innehar F-skattebevis', 290 - $this->widthForStringUsingFontSize('Innehar F-skattebevis', $fontTimes, 10), 627)->drawText('Adress:', 55, 80)->drawText('Telefon:', 178, 80)->drawText('Bankgiro:', 178, 52)->drawText('E-post:', 301, 80)->drawText('Organisationsnr:', 301, 52)->drawText('Hemsida:', 424, 80)->drawText('Momsreg.nr:', 424, 52)->drawText('Netto', 125 - $this->widthForStringUsingFontSize('Netto', $fontTimes, 10), 122)->drawText('Moms kr', 330 - $this->widthForStringUsingFontSize('Moms kr', $fontTimes, 10), 122)->drawText('Avrundning', 410 - $this->widthForStringUsingFontSize('Avrundning', $fontTimes, 10), 122);
     // Footer texts
     $page1->setFont($fontTimes, 12)->setFillColor($colorBlack)->drawText($this->settingTable->getSettingByName('CompanyName'), 55, 68)->drawText($this->settingTable->getSettingByName('CompanyAddress'), 55, 56)->drawText($this->settingTable->getSettingByName('CompanyPostAddress'), 55, 44)->drawText($this->settingTable->getSettingByName('CompanyCellphone'), 178, 68)->drawText($this->settingTable->getSettingByName('CompanyBankGiro'), 178, 40)->drawText($this->settingTable->getSettingByName('CompanyEmail'), 301, 68)->drawText($this->settingTable->getSettingByName('CompanyRegistrationNumber'), 301, 40)->drawText($this->settingTable->getSettingByName('CompanyWebpage'), 424, 68)->drawText($this->settingTable->getSettingByName('CompanyVATNumber'), 424, 40);
     // Invoice headers
     $page1->setFont($fontTimes, 14)->setFillColor($colorBlack)->drawText('Benämning', 55, 603)->drawText('Antal', 350 - $this->widthForStringUsingFontSize('Antal', $fontTimes, 14), 603)->drawText('á-pris', 450 - $this->widthForStringUsingFontSize('á-pris', $fontTimes, 14), 603)->drawText('Summa', 540 - $this->widthForStringUsingFontSize('Summa', $fontTimes, 14), 603);
     // Invoice summary text
     $page1->setFont($fontTimes, 16)->setFillColor($colorBlack)->drawText('ATT BETALA', 540 - $this->widthForStringUsingFontSize('ATT BETALA', $fontTimes, 16), 126)->drawText($invoice->getNumber(), 310, 755)->drawText($invoice->getClientId(), 535 - $this->widthForStringUsingFontSize($invoice->getClientId(), $fontTimes, 16), 755)->drawText(date("Y-m-d", strtotime($invoice->getBaseDate())), 60, 755)->drawText(date("Y-m-d", strtotime($invoice->getBaseDate() . ' +' . $invoice->getDueDays() . ' days')), 285 - $this->widthForStringUsingFontSize($invoice->getBaseDate(), $fontTimes, 16), 755);
     // Draw header
     $page1->setFont($fontTimes, 22)->setFillColor($colorBlack)->drawText('Faktura', 478, 792);
     // Draw company name
     $page1->setFont($fontHelveticaBold, 32)->setFillColor($colorBlack)->drawText($this->settingTable->getSettingByName('CompanyName'), 50, 792);
     $intPosition = 582;
     $intTotalSum = 0;
     $intTotalVat = 0;
     $intTotalSumWithVat = 0;
     foreach ($invoice->getRows() as $row) {
         $intRowPrice = number_format($row->getPrice(), 2, ',', ' ');
         $intRowSum = number_format($row->getQuantity() * $row->getPrice(), 2, ',', ' ');
         $intTotalSum = $intTotalSum + $row->getQuantity() * $row->getPrice();
         $intTotalVat = $intTotalVat + $row->getQuantity() * $row->getPrice() * ($row->getVat() / 100);
         $page1->setFont($fontTimes, 12)->setFillColor($colorBlack)->drawText($row->getText(), 55, $intPosition)->drawText($row->getQuantity(), 350 - $this->widthForStringUsingFontSize($row->getQuantity(), $fontTimes, 12), $intPosition)->drawText($intRowPrice, 450 - $this->widthForStringUsingFontSize($intRowPrice, $fontTimes, 12), $intPosition)->drawText($intRowSum, 540 - $this->widthForStringUsingFontSize($intRowSum, $fontTimes, 12), $intPosition);
         $intPosition = $intPosition - 14;
     }
     $intTotalSumWithVat = $intTotalSum + $intTotalVat;
     $intRound = round($intTotalSumWithVat) - $intTotalSumWithVat;
     $intTotalSumWithVat = $intTotalSumWithVat + $intRound;
     $intTotalSum = number_format($intTotalSum, 2, ',', ' ');
     $intTotalVat = number_format($intTotalVat, 2, ',', ' ');
     $intRound = number_format($intRound, 2, ',', ' ');
     $intTotalSumWithVat = number_format($intTotalSumWithVat, 2, ',', ' ');
     $page1->setFont($fontTimes, 12)->setFillColor($colorBlack)->drawText($intTotalSum, 125 - $this->widthForStringUsingFontSize($intTotalSum, $fontTimes, 12), 110)->drawText($intTotalVat, 330 - $this->widthForStringUsingFontSize($intTotalVat, $fontTimes, 12), 110)->drawText($intRound, 410 - $this->widthForStringUsingFontSize($intRound, $fontTimes, 12), 110);
     $page1->setFont($fontTimes, 16)->setFillColor($colorBlack)->drawText($intTotalSumWithVat, 540 - $this->widthForStringUsingFontSize($intTotalSumWithVat, $fontTimes, 16), 110);
     // Draw address
     $intAddressPosition = 710;
     foreach (explode(';', $invoice->getAddress()) as $part) {
         $page1->setFont($fontTimes, 16)->setFillColor($colorBlack)->drawText($part, 315, $intAddressPosition);
         $intAddressPosition = $intAddressPosition - 20;
     }
     try {
         $pdf->save('data/invoice/invoice-' . sprintf('%06d', $invoice->getNumber()) . '.pdf');
     } catch (\ZendPdf\Exception\IOException $e) {
         throw $e;
     }
 }
Example #4
0
 public function testPageDuplicating()
 {
     $pdf = Pdf\PdfDocument::load(__DIR__ . '/_files/pdfarchiving.pdf');
     $srcPageCount = count($pdf->pages);
     $outputPageSet = array();
     foreach ($pdf->pages as $srcPage) {
         $page = new Pdf\Page($srcPage);
         $outputPageSet[] = $srcPage;
         $outputPageSet[] = $page;
         $page->saveGS();
         // Create new Style
         $page->setFillColor(new Color\Rgb(0, 0, 0.9))->setLineColor(new Color\GrayScale(0.2))->setLineWidth(3)->setLineDashingPattern(array(3, 2, 3, 4), 1.6)->setFont(Pdf\Font::fontWithName(Pdf\Font::FONT_HELVETICA_BOLD), 32);
         $page->rotate(0, 0, M_PI_2 / 3);
         $page->drawText('Modified by Zend Framework!', 150, 0);
         $page->restoreGS();
     }
     // Add new page generated by Zend_PDF object (page is attached to the specified the document)
     $pdf->pages = $outputPageSet;
     $pdf->save(__DIR__ . '/_files/output.pdf');
     unset($pdf);
     $pdf1 = Pdf\PdfDocument::load(__DIR__ . '/_files/output.pdf');
     $this->assertTrue($pdf1 instanceof Pdf\PdfDocument);
     $this->assertEquals($srcPageCount * 2, count($pdf1->pages));
     unset($pdf1);
     unlink(__DIR__ . '/_files/output.pdf');
 }
 /**
  * @{inheritDoc}
  */
 public function setPageFillColor(Page $page, Color\ColorInterface $color)
 {
     return $page->setFillColor($color);
 }