/** * @group ZF-8462 */ public function testPhpVersionBug() { try { $file = __DIR__ . '/_files/ZF-8462.pdf'; $pdf = Pdf\PdfDocument::load($file); } catch (Pdf\Exception $e) { if (strpos($e->getMessage(), 'Cross-reference streams are not supported yet.') !== false) { // Skip expected exception return; } throw $e; } }
/** * @group ZF-8462 */ public function testPhpVersionBug() { $this->setExpectedException('\\Zend\\Pdf\\Exception\\NotImplementedException', 'Cross-reference streams are not supported yet'); $pdf = Pdf\PdfDocument::load(__DIR__ . '/_files/ZF-8462.pdf'); }
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'); }
public function testFontExtracting() { if (PHP_OS == 'AIX') { $this->markTestSkipped('Not supported on AIX'); } $pdf = new Pdf\PdfDocument(); $fontsList = array(Pdf\Font::FONT_COURIER, Pdf\Font::FONT_HELVETICA_BOLD, Pdf\Font::FONT_TIMES_BOLD_ITALIC); foreach ($fontsList as $fontName) { // Add new page generated by Zend_PDF object (page is attached to the specified the document) $pdf->pages[] = $page = $pdf->newPage(Pdf\Page::SIZE_A4_LANDSCAPE); $font = Pdf\Font::fontWithName($fontName); $page->setFont($font, 10)->drawText($font->getFontName(Pdf\Font::NAME_POSTSCRIPT, 'en') . ':', 100, 400); $page->setFont($font, 20)->drawText("'The quick brown fox jumps over the lazy dog'", 100, 360); $type = $font->getFontType(); } $TTFFontsList = array('VeraBd.ttf', 'VeraBI.ttf', 'VeraIt.ttf', 'VeraMoBd.ttf', 'VeraMoBI.ttf', 'VeraMoIt.ttf', 'VeraMono.ttf', 'VeraSeBd.ttf', 'VeraSe.ttf', 'Vera.ttf'); foreach ($TTFFontsList as $fontName) { // Add new page generated by Zend_PDF object (page is attached to the specified the document) $pdf->pages[] = $page = $pdf->newPage(Pdf\Page::SIZE_A4_LANDSCAPE); $font = Pdf\Font::fontWithPath(__DIR__ . '/_fonts/' . $fontName); $page->setFont($font, 10)->drawText($font->getFontName(Pdf\Font::NAME_POSTSCRIPT, 'en', 'CP1252') . ':', 100, 400); $page->setFont($font, 20)->drawText("'The quick brown fox jumps over the lazy dog'", 100, 360); $type = $font->getFontType(); } $pdf->save(__DIR__ . '/_files/output.pdf'); unset($pdf); $pdf1 = Pdf\PdfDocument::load(__DIR__ . '/_files/output.pdf'); $newPages = array(); $fontList = array(); $fontNames = array(); foreach ($pdf1->pages as $page) { $pageFonts = $page->extractFonts(); foreach ($pageFonts as $font) { $fontList[] = $font; $fontNames[] = $font->getFontName(Pdf\Font::NAME_POSTSCRIPT, 'en', 'UTF-8'); } } $this->assertEquals(array(Pdf\Font::FONT_COURIER, Pdf\Font::FONT_HELVETICA_BOLD, Pdf\Font::FONT_TIMES_BOLD_ITALIC, 'BitstreamVeraSans-Bold', 'BitstreamVeraSans-BoldOblique', 'BitstreamVeraSans-Oblique', 'BitstreamVeraSansMono-Bold', 'BitstreamVeraSansMono-BoldOb', 'BitstreamVeraSansMono-Oblique', 'BitstreamVeraSansMono-Roman', 'BitstreamVeraSerif-Bold', 'BitstreamVeraSerif-Roman', 'BitstreamVeraSans-Roman'), $fontNames); $pdf1->pages[] = $page = $pdf1->newPage(Pdf\Page::SIZE_A4); $yPosition = 700; foreach ($fontList as $font) { $page->setFont($font, 15)->drawText("The quick brown fox jumps over the lazy dog", 100, $yPosition); $yPosition -= 30; } $fontNames1 = array(); foreach ($pdf1->extractFonts() as $font) { $fontNames1[] = $font->getFontName(Pdf\Font::NAME_POSTSCRIPT, 'en', 'UTF-8'); } $this->assertEquals(array(Pdf\Font::FONT_COURIER, Pdf\Font::FONT_HELVETICA_BOLD, Pdf\Font::FONT_TIMES_BOLD_ITALIC, 'BitstreamVeraSans-Bold', 'BitstreamVeraSans-BoldOblique', 'BitstreamVeraSans-Oblique', 'BitstreamVeraSansMono-Bold', 'BitstreamVeraSansMono-BoldOb', 'BitstreamVeraSansMono-Oblique', 'BitstreamVeraSansMono-Roman', 'BitstreamVeraSerif-Bold', 'BitstreamVeraSerif-Roman', 'BitstreamVeraSans-Roman'), $fontNames1); $page = reset($pdf1->pages); $font = $page->extractFont(Pdf\Font::FONT_COURIER); $this->assertTrue($font instanceof Font\Extracted); $font = $page->extractFont(Pdf\Font::FONT_TIMES_BOLD_ITALIC); $this->assertNull($font); $font = $pdf1->extractFont(Pdf\Font::FONT_TIMES_BOLD_ITALIC); $this->assertTrue($font instanceof Font\Extracted); $font = $pdf1->extractFont(Pdf\Font::FONT_TIMES_ROMAN); $this->assertNull($font); $pdf1->save(__DIR__ . '/_files/output1.pdf'); unset($pdf1); $pdf2 = Pdf\PdfDocument::load(__DIR__ . '/_files/output1.pdf'); $this->assertTrue($pdf2 instanceof Pdf\PdfDocument); unset($pdf2); unlink(__DIR__ . '/_files/output.pdf'); unlink(__DIR__ . '/_files/output1.pdf'); }
public function testPageCloning() { $pdf = Pdf\PdfDocument::load(__DIR__ . '/_files/pdfarchiving.pdf'); $srcPageCount = count($pdf->pages); try { $newPage = clone reset($pdf->pages); } catch (Pdf\Exception $e) { if (strpos($e->getMessage(), 'Cloning \\Zend\\Pdf\\Page object using \'clone\' keyword is not supported.') !== 0) { throw $e; } // Exception is thrown } $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'); }