2015-07-30 6 views
0

J'essaie d'ajouter Raddyx Technologies texte filigrane en pdf en utilisant fpdf et FPDI. Le filigrane apparaît sur toutes les pages, mais toutes les pages de mon filigrane apparaissent sous l'image avec plus d'espace. Je veux que mon image de filigrane soit ajoutée à l'image existante sur le pdf. J'utilise le code suivant pour ajouter du texte filigraneAjouter un filigrane image sur une autre image en pdf php

<?php 
require('fpdf/fpdf.php'); 
require_once 'FPDI/fpdi.php'; 

class PDF_Rotate extends FPDI { 

    var $angle = 0; 

    function Rotate($angle, $x = -1, $y = -1) { 
     if ($x == -1) 
      $x = $this->x; 
     if ($y == -1) 
      $y = $this->y; 
     if ($this->angle != 0) 
      $this->_out('Q'); 
     $this->angle = $angle; 
     if ($angle != 0) { 
      $angle*=M_PI/180; 
      $c = cos($angle); 
      $s = sin($angle); 
      $cx = $x * $this->k; 
      $cy = ($this->h - $y) * $this->k; 
      $this->_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)); 
     } 
    } 

    function _endpage() { 
     if ($this->angle != 0) { 
      $this->angle = 0; 
      $this->_out('Q'); 
     } 
     parent::_endpage(); 
    } 

} 

$fullPathToFile = "recipe.pdf"; 

class PDF extends PDF_Rotate { 

    var $_tplIdx; 

    function Header() { 
     global $fullPathToFile; 

     //Put the watermark 
     //$this->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World', 40, 100, 100, 0, 'PNG'); 
     $this->SetFont('Arial', 'B', 50); 
     $this->SetTextColor(255, 192, 203); 
     $this->RotatedText(20, 230, 'Raddyx Technologies', 45); 

     if (is_null($this->_tplIdx)) { 

      // THIS IS WHERE YOU GET THE NUMBER OF PAGES 
      $this->numPages = $this->setSourceFile($fullPathToFile); 
      $this->_tplIdx = $this->importPage(1); 
     } 
     $this->useTemplate($this->_tplIdx, 0, 0, 200); 


    } 

    function RotatedText($x, $y, $txt, $angle) { 
     //Text rotated around its origin 
     $this->Rotate($angle, $x, $y); 
     $this->Text($x, $y, $txt); 
     $this->Rotate(0); 
    } 

} 


$pdf = new PDF(); 
//$pdf = new FPDI(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial', '', 12); 


for ($i = 0; $i < 25; $i++) { 
    $pdf->MultiCell(0, 5, $txt, 0, 'J'); 
}*/ 


if($pdf->numPages>1) { 
    for($i=2;$i<=$pdf->numPages;$i++) { 
     //$pdf->endPage(); 
     $pdf->_tplIdx = $pdf->importPage($i); 
     $pdf->AddPage(); 
    } 
} 

$pdf->Output(); 
?> 

Socuce: https://github.com/chinmay235/php-pdf-watermark

Mon fichier PDF existant - http://trackprintorders.com/recipe.pdf

Sortie: enter image description here

Répondre

0

Ce problème apparaît lorsque vous mettez le filigrane en premier, puis l'image. Vous devez utiliser RotatedText après avoir importé une page ou une image.

Vous pouvez utiliser la fonction dans la méthode footer, cela permettra d'utiliser le filigrane dans toutes les pages.

De plus, ce filigrane est en texte brut et n'utilisera aucune transparence.