It is necessary to do this yesterday and here, as without any external non-PHP libraries that need to be installed. Only two libs and libs are needed, and they are easy to get.
Now you can use the class below to achieve watermarks
/** MAKE SURE TO HAVE THE INCLUDES RUNNING PROPERLY */ require_once('FPDF/fpdf.php'); require_once('FPDI/fpdi.php'); class WaterMark { public $pdf, $file, $newFile, $wmText = "STACKOVERFLOW"; /** $file and $newFile have to include the full path. */ public function __construct($file, $newFile) { $this->pdf =& new FPDI(); $this->file = $file; $this->newFile = $newFile; } /** $file and $newFile have to include the full path. */ public static function applyAndSpit($file, $newFile) { $wm = new WaterMark($file, $newFile); if($wm->isWaterMarked()) return $wm->spitWaterMarked(); else{ $wm->doWaterMark(); return $wm->spitWaterMarked(); } } /** @todo Make the text nicer and add to all pages */ public function doWaterMark() { $currentFile = $this->file; $newFile = $this->newFile; $pagecount = $this->pdf->setSourceFile($currentFile); for($i = 1; $i <= $pagecount; $i++){ $this->pdf->addPage(); $tplidx = $this->pdf->importPage($i); $this->pdf->useTemplate($tplidx, 10, 10, 100); // now write some text above the imported page $this->pdf->SetFont('Arial', 'I', 40); $this->pdf->SetTextColor(255,0,0); $this->pdf->SetXY(25, 135); $this->_rotate(55); $this->pdf->Write(0, $this->wmText); $this->_rotate(0); } $this->pdf->Output($newFile, 'F'); } public function isWaterMarked() { return (file_exists($this->newFile)); } public function spitWaterMarked() { return readfile($this->newFile); } protected function _rotate($angle,$x=-1,$y=-1) { if($x==-1) $x=$this->pdf->x; if($y==-1) $y=$this->pdf->y; if($this->pdf->angle!=0) $this->pdf->_out('Q'); $this->pdf->angle=$angle; if($angle!=0){ $angle*=M_PI/180; $c=cos($angle); $s=sin($angle); $cx=$x*$this->pdf->k; $cy=($this->pdf->h-$y)*$this->pdf->k; $this->pdf->_out(sprintf( 'q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm', $c,$s,-$s,$c,$cx,$cy,-$cx,-$cy)); } } }
Now you can run this as:
WaterMark::applyAndSpit($fileWithFullPath);
haknick
source share