• Save

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,285
On Slideshare
10,275
From Embeds
10
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 10

https://www.linkedin.com 4
http://www.linkedin.com 3
http://a0.twimg.com 2
http://static.slidesharecdn.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Working with php for 5 years Develop webapplications and services for medium sized companies Working with zend for 1 year
  • Special thanks to Inventis for the accomodation.
  • $this->_helper->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender();

Transcript

  • 1. Dennis De Cock PHPBenelux meeting, 2010, Houthalen
  • 2. About me
    • Independent consultant
    • Owner of DE COCK ICT, company specialized in PHP / ZF / Drupal development
  • 3. Sponsors
  • 4. About this presentation
    • The intro
    • Requirements
    • Creating and loading
    • Saving
    • Working with pages
    • Page sizes
    • Duplication and cloning
    • Colors & fonts
    • Text & image drawing
    • Styles
    • Advanced topics
  • 5. Zend_PDF: the intro
    • Create or load pdf files
    • Manipulate pages within documents, reorder, delete, and so on…
    • Drawing possibilities for shapes, lines, …)
    • Drawing of text using 14 built-in fonts or use own TrueType Fonts
    • Image drawing ( JPG, PNG [Up to 8bit per channel+Alpha] and TIFF images are supported )
  • 6. Requirements
    • Zend_PDF is a component that can be found in the standard Zend library
    • Latest Zend library available from http://framework.zend.com/download/latest
  • 7. Folder structure
  • 8. How to integrate
    • Use the autoloader for automatic load of the module when needed (or load it yourself without  ) :
    protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader( array( 'namespace' => ‘demo', 'basePath' => APPLICATION_PATH ) ); return $moduleLoader; }
  • 9. Creating and loading
    • One way to create a new pdf document:
    • Two ways to load an existing document:
      • Load it from a file:
      • Load it from a string:
    $pdf = new Zend_Pdf(); $pdf = Zend_Pdf::load($fileName); $pdf = Zend_Pdf::parse($pdfString);
  • 10. Saving
    • Save a pdf document as a file:
    • Update an existing file by using true as second parameter:
    • You can also render the pdf to a string (example for passing through http)
    $pdf->save(‘demo.pdf'); $pdf->save(‘demo.pdf‘, true); $pdfData = $pdf->render();
  • 11. Working with pages
    • Add a page to an existing file:
    • Remove a page from an existing file:
    • Reverse page order:
    $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $pdf->pages[] = $page; unset($pdf->pages[$id]); $pdf->pages = array_reverse($pdf->pages);
  • 12. Page sizes, some possibilities
    • Specify a specific size: Some other possibilities are:
    • Use x and y coords to define your page:
    $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $pdf->pages[] = $page; $page = $pdf->newPage(200, 400); $pdf->pages[] = $page; Zend_Pdf_Page::SIZE_A4_LANDSCAPE Zend_Pdf_Page::SIZE_LETTER Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE
  • 13. Page sizes, some possibilities
    • Get the height and width from a pdf page:
    $page = $pdf->pages[$id]; $width  = $page->getWidth(); $height = $page->getHeight();
  • 14. Duplicating pages
    • Duplicate a page from a pdf document to create pages faster
    • Duplicated pages share resources from the template page so you can only duplicate within the same file
    // Store template page in a separate variable $template = $pdf->pages[$templatePageIndex]; // Add new page $page1 = new Zend_Pdf_Page($template); $page1->drawText('Some text...', $x, $y); $pdf->pages[] = $page1;
  • 15. Cloning pages
    • Clone a page from any document. PDF resources are copied, so you are not bound to the same document.
    $page1 = clone $pdf1->pages[$templatePageIndex1]; $page2 = clone $pdf2->pages[$templatePageIndex2]; $page1->drawText('Some text...', $x, $y); $page2->drawText('Another text...', $x, $y); $pdf = new Zend_Pdf(); $pdf->pages[] = $page1; $pdf->pages[] = $page2;
  • 16. Colors
    • Zend_Pdf_Color supports grayscale, rgb and cmyk
    • Html style colors are also supported through Zend_Pdf_Color_Html
    // $grayLevel (float number). 0.0 (black) - 1.0 (white) $color1 = new Zend_Pdf_Color_GrayScale($grayLevel);   // $r, $g, $b (float numbers). 0.0 (min intensity) - 1.0 (max intensity) $color2 = new Zend_Pdf_Color_Rgb($r, $g, $b);   // $c, $m, $y, $k (float numbers). 0.0 (min intensity) - 1.0 (max intensity) $color3 = new Zend_Pdf_Color_Cmyk($c, $m, $y, $k); $color1 = new Zend_Pdf_Color_Html('#3366FF');
  • 17. Fonts at your disposal
    • Specify a font to use: Some other possibilities are:
    $page->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 12); Zend_Pdf_Font::FONT_COURIER Zend_Pdf_Font::FONT_COURIER_BOLD Zend_Pdf_Font::FONT_COURIER_ITALIC Zend_Pdf_Font::FONT_COURIER_BOLD_ITALIC Zend_Pdf_Font::FONT_TIMES Zend_Pdf_Font::FONT_TIMES_BOLD Zend_Pdf_Font::FONT_TIMES_ITALIC Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC Zend_Pdf_Font::FONT_HELVETICA Zend_Pdf_Font::FONT_HELVETICA_BOLD Zend_Pdf_Font::FONT_HELVETICA_ITALIC Zend_Pdf_Font::FONT_HELVETICA_BOLD_ITALIC Zend_Pdf_Font::FONT_SYMBOL Zend_Pdf_Font::FONT_ZAPFDINGBATS
  • 18. Use your own fonts
    • Only truetype fonts can be used, create the font:
    • Then use the font on the page:
    $myFont = Zend_Pdf_Font::fontWithPath('/path/to/my/special/font__.TTF'); $page->setFont($myFont, 12);
  • 19. An error with a custom font?
    • Errors can arise with embedding the font into the file or compressing the font.
    • You can use the following options to handle these errors:
      • Zend_Pdf_Font::EMBED_DONT_EMBED Do not embed the font
      • Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION Do not throw the error
      • Zend_Pdf_Font::EMBED_DONT_COMPRESS Do not compress
    • You can combine the above options to match your specific solution.
  • 20. Adding text to the page
    • Function drawtext needs 3 parameters drawText($text, $x, $y);
    • Optional you can specify character encoding as fourth parameter: drawText($text, $x, $y, $charEncoding = ‘’);
    • Example:
    $page->drawText('Hello world!', 50, 600 );
  • 21. Adding shapes to the page
    • Different possibilities for shape drawing:
      • drawLine($x1, $y1, $x2, $y2)
      • drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE)
      • drawRoundedRectangle($x1, $y1, $x2, $y2, $radius, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE)
      • drawPolygon($x, $y, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING)
      • drawCircle($x, $y, $radius, $param4 = null , $param5 = null , $param6 = null )
  • 22. Adding images to the page
    • JPG, PNG and TIFF images are now supported
    • An example:
    // Load the image $image = Zend_Pdf_Image::imageWithPath(APPLICATION_FRONT . '/images/logo.tif'); // Draw image $page->drawImage($image, 40, 764, 240, 820); // -> $image, $left, $bottom, $right, $top
  • 23. An example in detail
      • Here’s a more complete example and the result:
    $pdf = new Zend_Pdf(); $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $pdf->pages[] = $page; $page->setFont(Zend_Pdf_Font::fontWithName( Zend_Pdf_Font::FONT_HELVETICA), 12); $page->drawText('Hello world!', 50, 600 ); $image = Zend_Pdf_Image::imageWithPath(APPLICATION_FRONT . '/images/logo.tif'); $page->drawImage($image, 40, 764, 240, 820); $page->drawLine(50, 755, 545, 755); $pdf->save('demo.pdf');
  • 24. The result
  • 25. Using styles
    • Create styles to combine your own specific layout of pdf in one place:
    • After creating the style, add some elements to your style
    • Apply the style
    $mystyle = new Zend_Pdf_Style(); $mystyle->setFont(Zend_Pdf_Font::fontWithName( Zend_Pdf_Font::FONT_HELVETICA), 12); $mystyle->Zend_Pdf_Color_Rgb(1, 1, 0)); $mystyle->setLineWidth(1); $page1->setStyle($mystyle);
  • 26. Document info
    • Add information to your document through the properties:
    $pdf = Zend_Pdf::load($pdfPath);   echo $pdf->properties[‘Demo'] . " "; echo $pdf->properties[‘Dennis'] . " ";   $pdf->properties['Title'] = ‘Demo'; $pdf->save($pdfPath);
  • 27. Advanced topics
    • Zend_Pdf_Resource_Extractor class for cloning pages and share resources through the different templates
    • Linear transformations, most of them are available as from ZF 1,8 (skew, scale, …)
  • 28. Summary
    • Zend_PDF has powerful capabilities
    • Combining the extended pdf class on framework.zend.com makes life a little easier
  • 29. Recommended reading http://devzone.zend.com/article/2525 Zend_PDF tutorial by Cal Evans
  • 30. Thank you! Questions?