public function testDrawing() { $pdf = new Pdf\PdfDocument(); // Add new page generated by \Zend\Pdf\PdfDocument object (page is attached to the specified the document) $pdf->pages[] = $page1 = $pdf->newPage('A4'); // Add new page generated by \Zend\Pdf\Page object (page is not attached to the document) $pdf->pages[] = $page2 = new Pdf\Page(Pdf\Page::SIZE_LETTER_LANDSCAPE); // Add new page generated by \Zend\Pdf\Page object (page is attached to the document) $pdf->pages[] = $page3 = $pdf->newPage('A4'); // Create new font $font = Pdf\Font::fontWithName(Pdf\Font::FONT_HELVETICA); // Apply font and draw text $page1->setFont($font, 36)->setFillColor(Color\Html::color('#9999cc'))->drawText('Helvetica 36 text string', 60, 500); // Use font object for another page $page2->setFont($font, 24)->drawText('Helvetica 24 text string', 60, 500); // Use another font $page2->setFont(Pdf\Font::fontWithName(Pdf\Font::FONT_TIMES), 32)->drawText('Times-Roman 32 text string', 60, 450); // Draw rectangle $page2->setFillColor(new Color\GrayScale(0.8))->setLineColor(new Color\GrayScale(0.2))->setLineDashingPattern(array(3, 2, 3, 4), 1.6)->drawRectangle(60, 400, 500, 350); // Draw rounded rectangle $page2->setFillColor(new Color\GrayScale(0.9))->setLineColor(new Color\GrayScale(0.5))->setLineDashingPattern(Pdf\Page::LINE_DASHING_SOLID)->drawRoundedRectangle(425, 350, 475, 400, 20); // Draw circle $page2->setLineDashingPattern(Pdf\Page::LINE_DASHING_SOLID)->setFillColor(new Color\Rgb(1, 0, 0))->drawCircle(85, 375, 25); // Draw sectors $page2->drawCircle(200, 375, 25, 2 * M_PI / 3, -M_PI / 6)->setFillColor(new Color\Cmyk(1, 0, 0, 0))->drawCircle(200, 375, 25, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\Rgb(1, 1, 0))->drawCircle(200, 375, 25, -M_PI / 6, M_PI / 6); // Draw ellipse $page2->setFillColor(new Color\Html('Red'))->drawEllipse(250, 400, 400, 350)->setFillColor(new Color\Cmyk(1, 0, 0, 0))->drawEllipse(250, 400, 400, 350, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\Rgb(1, 1, 0))->drawEllipse(250, 400, 400, 350, -M_PI / 6, M_PI / 6); // Draw and fill polygon $page2->setFillColor(new Color\Rgb(1, 0, 1)); $x = array(); $y = array(); for ($count = 0; $count < 8; $count++) { $x[] = 140 + 25 * cos(3 * M_PI_4 * $count); $y[] = 375 + 25 * sin(3 * M_PI_4 * $count); } $page2->drawPolygon($x, $y, Pdf\Page::SHAPE_DRAW_FILL_AND_STROKE, Pdf\Page::FILL_METHOD_EVEN_ODD); // Draw line $page2->setLineWidth(0.5)->drawLine(60, 375, 500, 375); // ----------------------------------------------------------------------------------- $page3->translate(200, 10)->rotate(10, 10, M_PI_2 / 9)->scale(0.7, 1.2)->skew(60, 350, M_PI_2 / 9, -M_PI_2 / 9); // Use font object for another page $page3->setFont($font, 24)->drawText('Helvetica 24 text string', 60, 500); // Use another font $page3->setFont(Pdf\Font::fontWithName(Pdf\Font::FONT_TIMES), 32)->drawText('Times-Roman 32 text string', 60, 450); // Draw rectangle $page3->setFillColor(new Color\GrayScale(0.8))->setLineColor(new Color\GrayScale(0.2))->setLineDashingPattern(array(3, 2, 3, 4), 1.6)->drawRectangle(60, 400, 500, 350); // Draw rounded rectangle $page3->setFillColor(new Color\GrayScale(0.9))->setLineColor(new Color\GrayScale(0.5))->setLineDashingPattern(Pdf\Page::LINE_DASHING_SOLID)->drawRoundedRectangle(425, 350, 475, 400, 20); // Draw circle $page3->setLineDashingPattern(Pdf\Page::LINE_DASHING_SOLID)->setFillColor(new Color\Rgb(1, 0, 0))->drawCircle(85, 375, 25); // Draw sectors $page3->drawCircle(200, 375, 25, 2 * M_PI / 3, -M_PI / 6)->setFillColor(new Color\Cmyk(1, 0, 0, 0))->drawCircle(200, 375, 25, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\Rgb(1, 1, 0))->drawCircle(200, 375, 25, -M_PI / 6, M_PI / 6); // Draw ellipse $page3->setFillColor(new Color\Html('Red'))->drawEllipse(250, 400, 400, 350)->setFillColor(new Color\Cmyk(1, 0, 0, 0))->drawEllipse(250, 400, 400, 350, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\Rgb(1, 1, 0))->drawEllipse(250, 400, 400, 350, -M_PI / 6, M_PI / 6); // Draw and fill polygon $page3->setFillColor(new Color\Rgb(1, 0, 1)); $x = array(); $y = array(); for ($count = 0; $count < 8; $count++) { $x[] = 140 + 25 * cos(3 * M_PI_4 * $count); $y[] = 375 + 25 * sin(3 * M_PI_4 * $count); } $page3->drawPolygon($x, $y, Pdf\Page::SHAPE_DRAW_FILL_AND_STROKE, Pdf\Page::FILL_METHOD_EVEN_ODD); // Draw line $page3->setLineWidth(0.5)->drawLine(60, 375, 500, 375); $pdf->save(__DIR__ . '/_files/output.pdf'); unset($pdf); $pdf1 = Pdf\PdfDocument::load(__DIR__ . '/_files/output.pdf'); $this->assertTrue($pdf1 instanceof Pdf\PdfDocument); unset($pdf1); unlink(__DIR__ . '/_files/output.pdf'); }
public function testModify() { $pdf = PDF\PDFDocument::load(dirname(__FILE__) . '/_files/pdfarchiving.pdf'); // Reverse page order $pdf->pages = array_reverse($pdf->pages); // Mark page as modified foreach ($pdf->pages as $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)->drawText('Modified by Zend Framework!', 150, 0)->restoreGS(); } // Add new page generated by \Zend\PDF\PDFDocument object (page is attached to the specified the document) $pdf->pages[] = $page1 = $pdf->newPage('A4'); // Add new page generated by \Zend\PDF\Page object (page is not attached to the document) $pdf->pages[] = $page2 = new PDF\Page(PDF\Page::SIZE_LETTER_LANDSCAPE); // Create new font $font = PDF\Font::fontWithName(PDF\Font::FONT_HELVETICA); // Apply font and draw text $page1->setFont($font, 36)->setFillColor(Color\HTML::color('#9999cc'))->drawText('Helvetica 36 text string', 60, 500); // Use font object for another page $page2->setFont($font, 24)->drawText('Helvetica 24 text string', 60, 500); // Use another font $page2->setFont(PDF\Font::fontWithName(PDF\Font::FONT_TIMES), 32)->drawText('Times-Roman 32 text string', 60, 450); // Draw rectangle $page2->setFillColor(new Color\GrayScale(0.8))->setLineColor(new Color\GrayScale(0.2))->setLineDashingPattern(array(3, 2, 3, 4), 1.6)->drawRectangle(60, 400, 500, 350); // Draw rounded rectangle $page2->setFillColor(new Color\GrayScale(0.9))->setLineColor(new Color\GrayScale(0.5))->setLineDashingPattern(PDF\Page::LINE_DASHING_SOLID)->drawRoundedRectangle(425, 350, 475, 400, 20); // Draw circle $page2->setLineDashingPattern(PDF\Page::LINE_DASHING_SOLID)->setFillColor(new Color\RGB(1, 0, 0))->drawCircle(85, 375, 25); // Draw sectors $page2->drawCircle(200, 375, 25, 2 * M_PI / 3, -M_PI / 6)->setFillColor(new Color\CMYK(1, 0, 0, 0))->drawCircle(200, 375, 25, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\RGB(1, 1, 0))->drawCircle(200, 375, 25, -M_PI / 6, M_PI / 6); // Draw ellipse $page2->setFillColor(new Color\RGB(1, 0, 0))->drawEllipse(250, 400, 400, 350)->setFillColor(new Color\CMYK(1, 0, 0, 0))->drawEllipse(250, 400, 400, 350, M_PI / 6, 2 * M_PI / 3)->setFillColor(new Color\RGB(1, 1, 0))->drawEllipse(250, 400, 400, 350, -M_PI / 6, M_PI / 6); // Draw and fill polygon $page2->setFillColor(new Color\RGB(1, 0, 1)); $x = array(); $y = array(); for ($count = 0; $count < 8; $count++) { $x[] = 140 + 25 * cos(3 * M_PI_4 * $count); $y[] = 375 + 25 * sin(3 * M_PI_4 * $count); } $page2->drawPolygon($x, $y, PDF\Page::SHAPE_DRAW_FILL_AND_STROKE, PDF\Page::FILL_METHOD_EVEN_ODD); // Draw line $page2->setLineWidth(0.5)->drawLine(60, 375, 500, 375); $pdf->save(dirname(__FILE__) . '/_files/output.pdf'); unset($pdf); $pdf1 = PDF\PDFDocument::load(dirname(__FILE__) . '/_files/output.pdf'); $this->assertTrue($pdf1 instanceof PDF\PDFDocument); unset($pdf1); unlink(dirname(__FILE__) . '/_files/output.pdf'); }