Quick and dirty example, that works:

// load pdf file
$pdf = Zend_Pdf::load('FILENAME');

// Create new Style
$style = new Zend_Pdf_Style();
$fontH = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD);
$style->setFont($fontH, 32);
 
// Mark page as modified
foreach ($pdf->pages as $page){
    $page->saveGS()
         ->setAlpha(0.25)
         ->setStyle($style)
         ->rotate(0, 0, M_PI_2/3); 

    $page->drawText('Modified by Zend Framework!', 150, 0)
         ->restoreGS();
}

// send to browser as file download
header("Content-Disposition: inline; filename=result.pdf"); 
header("Content-type: application/x-pdf"); 
echo $pdf->render(); 


If produces a pdf with the text "Modified by Zend Framework!" toward the
bottom of the file, on all the pages.


-----Original Message-----
From: Terre Porter [mailto:[email protected]] 
Sent: Friday, August 07, 2009 12:12 PM
To: [email protected]
Subject: RE: [fw-general] Zend_pdf doesn't commit changes


Did you try something like this after you add your water mark?

header("Content-Disposition: inline; filename=result.pdf");
header("Content-type: application/x-pdf"); echo $pdf->render();

I'm just now getting to a point to start using Zend_PDF so i've not tested
this yet.

Terre

-----Original Message-----
From: Tim Everson [mailto:[email protected]]
Sent: Friday, August 07, 2009 11:30 AM
To: [email protected]
Subject: Re: [fw-general] Zend_pdf doesn't commit changes


The initial problem is still there - changes are not rendered in the
document until it is saved, so how do I commit inline changes to stream to
the browser?  This is a common problem I am sure, to stamp a document with a
watermark before rendering it to the browser, but without changing the
original document.  It is possible to work around by creating a temporary
file, then streaming that, but this causes potential file access conflicts
from users requesting the same file, and housecleaning and potential
permission problems that should not be there - plus it adds significant
overhead to an already memory intensive operation (it takes a while to read,
watermark, save, and re-read an 800 page PDF).

If anyone has any insight, please help out a Zend framework newb.

Regards,
Tim Everson



Tim Everson wrote:
> 
> I am trying to modify a document in memory and then render the result 
> to the browser without actually changing the document.  This sounds 
> easy, with Zend_pdf->render(), but I am finding that my changes to the 
> document are not in the rendered document.  So to workaround, I assume 
> I must save the document to a temporary file, then open THAT file in a 
> new zend_pdf object and render it to the browser, right?  Wrong again.  
> I am baffled to find that the originally opened document is actually 
> rendered instead, no changes applied.  After the script runs, if I 
> manually open the temporary PDF file it created, my changes are there.
> 
> Is there some sort of commit action that must be performed to get the 
> changes to render before the script ends?  I cannot find an instance 
> of anyone talking about this before - maybe its just me.  Here's my code:
> 
> if(isset($argv[1])){
>   $srcPDF = $argv[1];
>   
>   try{
>     $ZendPDF = & new Zend_Pdf($srcPDF, 0, true);
>     /**
>      *  Stamp each page "UNRELEASED" in transparent gray Helvetica
>      */
>     
>     $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
>     $color = new Zend_Pdf_Color_Html('#000000'); //black
>     
>     foreach($ZendPDF->pages AS $PDFpg){
>       //calculate the fontsize to use based on the dimensions of the page
>       $fontSize = intval($PDFpg->getHeight() / 10);
>       $PDFpg->rotate(($PDFpg->getWidth() / 2), ($PDFpg->getHeight() / 
> 2),
> 45)
>             ->setFont($font, $fontSize)
>             ->setFillColor($color) //also sets font color
>             ->setAlpha(0.2) //half opaque
>             ->drawText('U N R E L E A S E D', ($PDFpg->getWidth() / 2) 
> -
> (4 * $fontSize), ($PDFpg->getHeight() / 2) - ($fontSize / 2) );
>     }
>     
>     
>     //page changes are NOT committed at this point
>     echo $ZendPDF->render(); //renders string data back to caller
>     unset($ZendPDF);
> 
>   } 
>   catch (Zend_Exception $e) {
>     die("Caught exception: " . get_class($e) . "\n" . "Message: " .
> $e->getMessage() . "\n");  
>   }
> } else {
>   die("No source file");
> }
> 

--
View this message in context:
http://www.nabble.com/Zend_pdf-doesn%27t-commit-changes-tp24850906p24866882.
html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to