/** * Generates certificate of exellence and * triggers an event when the file is generated * @param \User\Model\Entity\User $user * @param string $examName */ public function generateCertificate($user, $examName) { $config = $this->services->get('config'); $pdf = PdfDocument::load($config['pdf']['exam_certificate']); // get the first page $page = $pdf->pages[0]; // Extract the AdineKirnberg-Script font included in the PDF sample $font = $page->extractFont('AdineKirnberg-Script'); $page->setFont($font, 80); // and write the name of the user with it $page->drawText($user->getName(), 200, 280); // after that use Time Bold to write the name of the exam $font = PdfFont::fontWithName(PdfFont::FONT_TIMES_BOLD); $page->setFont($font, 40); $page->drawText($examName, 200, 120); // We use the png image from the public/images folder $imageFile = 'public/images/zf2-logo.png'; // get the right size to do some calculations $size = getimagesize($imageFile); // load the image $image = \ZendPdf\Image::imageWithPath($imageFile); $x = 580; $y = 440; // and finally draw the image $page->drawImage($image, $x, $y, $x + $size[0], $y + $size[1]); return $pdf; }
public function pdfAction() { $iso2 = $this->params()->fromRoute('iso2'); $table = $this->getServiceLocator()->get('city-codes-table'); $viewModel = new ViewModel(array('cityList' => $table->getListByCountry($iso2), 'countryCode' => $iso2)); $viewModel->setTemplate('form-demo/application/index/pdf-cities'); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $list = explode(PHP_EOL, $viewRender->render($viewModel)); $font = Font::fontWithPath('/usr/share/fonts/truetype/freefont/FreeMono.ttf'); $pdf = new PdfDocument(); // top left 1" from top 1" from left $x = 72; $y = 720; $dec = 18; foreach ($list as $index => $row) { if (substr($row, 0, 1) == '=' || $y <= 72) { if ($index > 0) { $pdf->pages[] = $page; } $page = new Page(Page::SIZE_LETTER); $page->setFont($font, 12); $y = 720; } $page->drawText($row, $x, $y); $y -= $dec; } $pdf->pages[] = $page; // retrieve the response object $response = $this->getResponse(); // set the header $response->getHeaders()->addHeaders(array('Content-Type' => 'application/pdf')); $response->setContent($pdf->render()); return $response; }
private function getResourceByStyle($style) { try { if (!isset($this->fonts[$style])) { $data = $this->fontResources[$style]; if ($this->isNamedFont($data)) { $name = $this->retrieveFontName($data); $this->fonts[$style] = ZendFont::fontWithName($name); } else { $this->fonts[$style] = ZendFont::fontWithPath($data); } } return $this->fonts[$style]; } catch (\ZendPdf\Exception\ExceptionInterface $e) { throw InvalidResourceException::invalidFontException($this->fontResources[$style], $e); } }
/** * Generate the Pdf * @param IntentDocumentGeneratedEvent $event the event * @see http://stackoverflow.com/questions/7585474/accessing-files-relative-to-bundle-in-symfony2 * @todo finaliser l'inscrition de toutes les info dynamiques * @todo avoir une sepa-template neutre * @todo insérer le logo du layout courant dans le pdf * @todo insérer des textes simple en y ajoutant le nom du client dynamiquement * @todo insérer l'ICS */ public function generate(IntentDocumentGeneratedEvent $event) { /** * @var Ecedi\Donate\CoreBundle\Entity\Intent */ $intent = $event->getIntent(); if ($intent->getPaymentMethod() === SepaOfflinePaymentMethod::ID && $event->getDocument() === null) { $pdf = new Pdf\PdfDocument(); $pdf->pages[] = $page1 = $pdf->newPage('A4'); $page1->setFont(Pdf\Font::fontWithName(Pdf\Font::FONT_HELVETICA), 12); $path = $this->kernel->locateResource('@DonatePaymentBundle/Resources/public/img/sepa-template.jpg'); $stampImageJPG = Pdf\Image::imageWithPath($path); $page1->drawImage($stampImageJPG, 0, 0, 595, 842); $page1->drawText($this->rumGenerator->generate($intent), 170, 389, 'UTF-8'); //TODO faire la suite $event->setDocument($pdf); $event->stopPropagation(); } }
public function writeData($data, $x, $y, $font_size, $font_color = '#888888') { $this->single_page->setFont(Font::fontWithName(Font::FONT_HELVETICA), $font_size)->setFillColor(Color\Html::color($font_color))->drawText($data, $x, $y, 'UTF-8'); }
/** * @param string|FontStyle $fontStyle * * @return ZendAbstractFont * @throws \Exception */ protected function getZendFont(FontStyle $fontStyle) { if (!isset($this->fontMap[$fontStyle->getName()][$fontStyle->getStyle()])) { throw new InvalidArgumentException('unsupported font: ' . $fontStyle->getName() . '/' . $fontStyle->getStyle()); } return ZendFont::fontWithName($this->fontMap[$fontStyle->getName()][$fontStyle->getStyle()]); }
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; } }
/** * Object constructor * * $fontDictionary is a \ZendPdf\InternalType\IndirectObjectReference or * \ZendPdf\InternalType\IndirectObject object * * @param mixed $fontDictionary * @throws \ZendPdf\Exception\ExceptionInterface */ public function __construct($fontDictionary) { // Extract object factory and resource object from font dirctionary object $this->_objectFactory = $fontDictionary->getFactory(); $this->_resource = $fontDictionary; if ($fontDictionary->Encoding !== null) { $this->_encoding = $fontDictionary->Encoding->value; } switch ($fontDictionary->Subtype->value) { case 'Type0': // Composite type 0 font if (count($fontDictionary->DescendantFonts->items) != 1) { // Multiple descendant fonts are not supported throw new Exception\NotImplementedException(self::TYPE_NOT_SUPPORTED); } $fontDictionaryIterator = $fontDictionary->DescendantFonts->items->getIterator(); $fontDictionaryIterator->rewind(); $descendantFont = $fontDictionaryIterator->current(); $fontDescriptor = $descendantFont->FontDescriptor; break; case 'Type1': if ($fontDictionary->FontDescriptor === null) { // That's one of the standard fonts $standardFont = Pdf\Font::fontWithName($fontDictionary->BaseFont->value); $this->_fontNames = $standardFont->getFontNames(); $this->_isBold = $standardFont->isBold(); $this->_isItalic = $standardFont->isItalic(); $this->_isMonospace = $standardFont->isMonospace(); $this->_underlinePosition = $standardFont->getUnderlinePosition(); $this->_underlineThickness = $standardFont->getUnderlineThickness(); $this->_strikePosition = $standardFont->getStrikePosition(); $this->_strikeThickness = $standardFont->getStrikeThickness(); $this->_unitsPerEm = $standardFont->getUnitsPerEm(); $this->_ascent = $standardFont->getAscent(); $this->_descent = $standardFont->getDescent(); $this->_lineGap = $standardFont->getLineGap(); return; } $fontDescriptor = $fontDictionary->FontDescriptor; break; case 'TrueType': $fontDescriptor = $fontDictionary->FontDescriptor; break; default: throw new Exception\NotImplementedException(self::TYPE_NOT_SUPPORTED); } $this->_fontNames[Pdf\Font::NAME_POSTSCRIPT]['en'] = iconv('UTF-8', 'UTF-16BE', $fontDictionary->BaseFont->value); $this->_isBold = false; // this property is actually not used anywhere $this->_isItalic = ($fontDescriptor->Flags->value & 1 << 6) != 0; // Bit-7 is set $this->_isMonospace = ($fontDescriptor->Flags->value & 1 << 0) != 0; // Bit-1 is set $this->_underlinePosition = null; // Can't be extracted $this->_underlineThickness = null; // Can't be extracted $this->_strikePosition = null; // Can't be extracted $this->_strikeThickness = null; // Can't be extracted $this->_unitsPerEm = null; // Can't be extracted $this->_ascent = $fontDescriptor->Ascent->value; $this->_descent = $fontDescriptor->Descent->value; $this->_lineGap = null; // Can't be extracted }
/** * @{inheritDoc} */ public function getFontByName($fontName) { $fontConstant = constant('\\ZendPdf\\Font::' . $fontName); return Font::fontWithName($fontConstant); }
public function drawHtml(Page $page, $html, $x1, $y1, $x2 = null, $y2 = null, $lineHeight = 1.3, $charEncoding = '', $debug = false) { if (is_null($x2)) { $x2 = $page->getWidth(); } if (is_null($y2)) { $y2 = 0; } if ($debug === true) { var_dump(array('x1' => $x1, 'y1' => $y1, 'x2' => $x2, 'y2' => $y2)); } $x = $x1; $y = $y1; if (is_null($page->getFont())) { $page->setFont(Font::fontWithName(Font::FONT_HELVETICA), 10); } $defaultFont = $page->getFont(); $defaultfontSize = $page->getFontSize(); $maxFontSize = $defaultfontSize; $words = array(); $elements = $this->getParser()->parse($html); if ($debug === true) { var_dump($elements); } foreach ($elements as $element) { if ($element instanceof DataElement) { $font = $element->getFont($defaultFont); $fontSize = $element->getFontSize($defaultfontSize); $maxFontSize = $fontSize > $maxFontSize ? $fontSize : $maxFontSize; $rawWords = explode(' ', $element->getValue()); foreach ($rawWords as $rawWord) { $rawWord .= $rawWord ? ' ' : ''; $wordWith = $this->widthForStringUsingFontSize($rawWord, $font, $fontSize); if ($x + $wordWith > $x2) { $x = $x1; if ($y1 < $y2) { $y += $maxFontSize * $lineHeight; } else { $y -= $maxFontSize * $lineHeight; } $maxFontSize = $fontSize; } $words[] = new Word($rawWord, $x, $y, $font, $fontSize); $x += $wordWith; } } elseif ($element instanceof ControllElement) { if ($element->isBlockElement()) { if ($x != $x1) { $x = $x1; if ($y1 < $y2) { $y += $maxFontSize * $lineHeight; } else { $y -= $maxFontSize * $lineHeight; } $maxFontSize = $defaultfontSize; } if ($element instanceof StartElement) { if (!is_null($element->marginTop())) { if ($y1 < $y2) { $y += $element->marginTop(); } else { $y -= $element->marginTop(); } } if (!is_null($element->marginLeft())) { if (!is_null($element->getListSign())) { $words[] = new Word($element->getListSign(), $x, $y, $element->getFont($defaultFont), $element->getFontSize($defaultfontSize)); } $x1 += $element->marginLeft(); $x = $x1; } } if ($element instanceof StopElement) { if (!is_null($element->marginBottom())) { if ($y1 < $y2) { $y += $element->marginBottom(); } else { $y -= $element->marginBottom(); } } if (!is_null($element->marginLeft())) { $x1 -= $element->marginLeft(); $x = $x1; } } } } } if ($debug === true) { var_dump($words); } foreach ($words as $word) { /** @var Word $word */ $page->setFont($word->getFont(), $word->getFontSize()); $page->drawText($word->getText(), $word->getX(), $word->getY(), $charEncoding); } if ($debug === true) { die; } return array($x, $y); }
private function createPdfFile($filePath, $contents) { $pdf = new PdfDocument(); $page = new Page(Page::SIZE_A4); $font = Font::fontWithName(Font::FONT_HELVETICA); $page->setFont($font, 18); $page->drawText($contents, 50, 780); $pdf->pages[] = $page; $pdf->save($filePath); }
public function testPageCloning() { $pdf = Pdf\PdfDocument::load(__DIR__ . '/_files/pdfarchiving.pdf'); $pdf1 = new Pdf\PdfDocument(); $srcPageCount = count($pdf->pages); $outputPageSet = array(); foreach ($pdf->pages as $srcPage) { $page = clone $srcPage; $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(); $pdf1->pages[] = $page; } $pdf1->save(__DIR__ . '/_files/output.pdf'); unset($pdf); unset($pdf1); $pdf2 = Pdf\PdfDocument::load(__DIR__ . '/_files/output.pdf'); $this->assertTrue($pdf2 instanceof Pdf\PdfDocument); $this->assertEquals($srcPageCount, count($pdf2->pages)); unset($pdf2); unlink(__DIR__ . '/_files/output.pdf'); }
/** * Create a new character sheet * * @param string $title title of the character sheet, can be left out */ public function __construct($title = '') { $this->setTitle($title); $this->setFont(\ZendPdf\Font::fontWithName(\ZendPdf\Font::FONT_HELVETICA_BOLD)); }
public function getFont() { return Font::fontWithName(Font::FONT_HELVETICA_BOLD); }
/** * Calculate the width of a string: * in case of using alignment parameter in drawText * @param string $text * @param Font $font * @param float $fontSize * @return float */ public function widthForStringUsingFontSize($text, $font, $fontSize) { $drawingString = iconv('UTF-8', 'UTF-16BE//IGNORE', $text); $characters = array(); for ($i = 0, $len = strlen($drawingString); $i < $len; $i++) { $characters[] = ord($drawingString[$i++]) << 8 | ord($drawingString[$i]); } $glyphs = $font->glyphNumbersForCharacters($characters); $widths = $font->widthsForGlyphs($glyphs); $stringWidth = array_sum($widths) / $font->getUnitsPerEm() * $fontSize; return $stringWidth; }
/** * Create a new PDF page, with A4 size and default font Helvetica, size 12 * * @param string $size page size (see \ZendPdf\Page), default A4 size * @param float $unitConversion conversion factor for custom units, default self::UNITS_CENTIMETER */ public function __construct($size = self::SIZE_A4, $unitConversion = self::UNITS_CENTIMETER) { parent::__construct($size); $this->setUnitConversion($unitConversion); $this->setFont(\ZendPdf\Font::fontWithName(\ZendPdf\Font::FONT_HELVETICA), 12); }
/** * Set font * * @param string $font Font * @param int $size Font size * @param string $encoding Encoding * * @return bool Returns TRUE on success or FALSE on failure. */ public function set_font($font, $size, $encoding) { $this->_fontSize = $size; $fonts = array('courier' => Zend_Pdf_Font::FONT_COURIER, 'courier-bold' => Zend_Pdf_Font::FONT_COURIER_BOLD, 'courier-oblique' => Zend_Pdf_Font::FONT_COURIER_ITALIC, 'courier-italic' => Zend_Pdf_Font::FONT_COURIER_ITALIC, 'courier-bold-italic' => Zend_Pdf_Font::FONT_COURIER_BOLD_ITALIC, 'courier-boldoblique' => Zend_Pdf_Font::FONT_COURIER_BOLD_ITALIC, 'times' => Zend_Pdf_Font::FONT_TIMES, 'times-bold' => Zend_Pdf_Font::FONT_TIMES_BOLD, 'times-italic' => Zend_Pdf_Font::FONT_TIMES_ITALIC, 'times-bold-italic' => Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC, 'times-bolditalic' => Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC, 'times-roman' => Zend_Pdf_Font::FONT_TIMES, 'times-roman-bold' => Zend_Pdf_Font::FONT_TIMES_BOLD, 'times-roman-italic' => Zend_Pdf_Font::FONT_TIMES_ITALIC, 'times-roman-bold-italic' => Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC, 'helvetica' => Zend_Pdf_Font::FONT_HELVETICA, 'helvetica-bold' => Zend_Pdf_Font::FONT_HELVETICA_BOLD, 'helvetica-italic' => Zend_Pdf_Font::FONT_HELVETICA_ITALIC, 'helvetica-oblique' => Zend_Pdf_Font::FONT_HELVETICA_ITALIC, 'helvetica-bold-italic' => Zend_Pdf_Font::FONT_HELVETICA_BOLD_ITALIC, 'helvetica-boldoblique' => Zend_Pdf_Font::FONT_HELVETICA_BOLD_ITALIC, 'symbol' => Zend_Pdf_Font::FONT_SYMBOL, 'zapfdingbats' => Zend_Pdf_Font::FONT_ZAPFDINGBATS); try { $font = isset($fonts[strtolower($font)]) ? $fonts[strtolower($font)] : false; if ($font === false) { $this->_errmsg = "could not find font '{$font}'"; return false; } $this->_font = Zend_Pdf_Font::fontWithName($font); if ($this->_page) { $this->_page->setFont($this->_font, $size); } return true; } catch (\Exception $e) { $this->_errmsg = $e->getMessage(); } return false; }