2012-05-09 11 views
10

Devo unire i file PDF quando un utente deve. I file sono già esistenti e tutto è a posto. Sto utilizzando il codice di vuoto sanitario per unire i file:FPDI unisce i file PDF, appare una linea strana

class concat_pdf extends FPDI 
{ 
    var $files = array(); 

    function setFiles($files) 
    { 
     $this->files = $files; 
    } 

    function concat() 
    { 
     foreach($this->files AS $file) 
     { 
      $pagecount = $this->setSourceFile($file); 

      for($i = 1; $i <= $pagecount; $i++) 
      { 
       $this->AddPage('P'); 
       $tplidx = $this->ImportPage($i); 
       $this->useTemplate($tplidx); 
      } 
     } 
    } 
} 

$pdf = new concat_pdf(); 
$pdf->setFiles($files); //$files is an array with existing PDF files. 
$pdf->concat(); 
$pdf->Output("bulk.pdf", "D"); 

Tutti i file vengono fusi e tutti i contenuti è lì. Il problema è che nella parte superiore di ogni pagina del nuovo file appare una linea nera. I contenuti, i margini, ecc. Sono tutti assolutamente uguali al file originale, ma questa linea esce dal nulla (che posso dire). Non è spesso, ma è chiaramente visibile. Non ha problemi con l'altro contenuto o altro, ma non è necessario lì e ho bisogno di rimuoverlo.

Ho provato a cambiare il secondo parametro della funzione ImportPage() con tutte le opzioni descritte nello documentation, ma non c'è alcuna differenza. Poiché questa è l'unica cosa che vedo che posso cambiare in queste poche righe di codice, non so davvero cosa stia causando la linea nera. Ho cercato problemi simili, ma finora - senza fortuna. Qualcuno ha un'idea? Grazie in anticipo!

before after

+0

Vuoi aggiungere uno screenshot? - probabilmente sarebbe il modo migliore per illustrare il problema. – halfer

+0

Ho aggiunto degli screenshot, ma dal momento che non riesco a rivelare il contenuto dei file, ho solo tagliato ciò che si vede in alto quando si apre lo stesso file - una volta normale, una volta fuso con altri file. Tutto ciò che segue è assolutamente identico. – Nikoloff

risposta

1

devo soluzione di questo problema. L'intestazione e il piè di pagina predefiniti in tcpdf contengono la riga. È necessario cancellare il corpo di metodi piè di pagina() e l'intestazione() in classe TCPDF on line 4214.

18

Una cosa di meglio da fare in quanto non sarà necessario modificare la sorgente è di aggiungere le linee:

$this->setPrintHeader(false); 
    $this->setPrintFooter(false); 

all'inizio della funzione concat().

+2

Grazie, semplice ma efficace. :) – illuzive

2

Per evitare di modificare la libreria TCPDF, sovrascrivere i metodi Piè di pagina e Intestazione nella classe estesa.

class concat_pdf extends FPDI 
{ 
    public function Footer() {} 
    public function Header() {} 
}