/** * Saves the current graphics state * * @return bool Returns TRUE on success or FALSE on failure. */ public function save() { if (!$this->_page) { $this->_errmsg = "No Page"; return false; } $this->_page->saveGS(); return true; }
/** * @param ZendPage $page * @param PathText $element * * @throws \Exception */ private function drawPathText(ZendPage $page, PathText $element) { $fontStyle = $element->getFontStyle(); $font = $this->getZendFont($fontStyle); $anchorPath = new AnchorPath($element->getPath()); list($chars, $pathPos, $yShift) = $this->preparePathText($element->getText(), $anchorPath, $font, $fontStyle); $page->saveGS(); $page->setFont($font, $fontStyle->getSize()); foreach ($chars as list($char, $width)) { $anchor = $anchorPath->getAnchor($pathPos + $width / 2.0); $pathPos += $width; if (null === $anchor) { // skip chars out of path continue; } $page->saveGS(); $this->translateAndRotateToAnchor($page, $anchor); $this->drawFormattedText($page, $char, -$width / 2.0, -$yShift, $element); $page->restoreGS(); } $page->restoreGS(); }
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'); }