2012-09-20 14 views
6

Mam na swoim serwerze plik pdf, który po pobraniu wymaga dołączenia tekstu do każdej strony. Używam fpdf, aby spróbować otworzyć plik, dołączyć tekst do każdej strony, zamknąć plik i służyć do przeglądarki.Używanie fpdf do modyfikacji istniejącego pliku PDF w php

$pdf = new FPDI(); 

$pdf->setSourceFile($filename); 
// import page 1 
$tplIdx = $pdf->importPage(1); 
//use the imported page and place it at point 0,0; calculate width and height 
//automaticallay and ajust the page size to the size of the imported page 
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true); 

// now write some text above the imported page 
$pdf->SetFont('Arial', '', '13'); 
$pdf->SetTextColor(0,0,0); 
//set position in pdf document 
$pdf->SetXY(20, 20); 
//first parameter defines the line height 
$pdf->Write(0, 'gift code'); 
//force the browser to download the output 
$pdf->Output('gift_coupon_generated.pdf', 'D'); 

header("location: ".$filename); 

Na minutę to po prostu stara się umieścić jakiś tekst w dowolnym miejscu na pdf i zapisać go, ale pojawia się błąd

FPDF error: You have to add a page first! 

Jeśli uda mi się to zrobić to ja wtedy trzeba go dołączyć tekst do każdej strony w dokumencie, a nie tylko 1, nie wiem jak to zrobić, po zapoznaniu się z dokumentacją

Odpowiedz

9

Wypróbuj poniższy

require_once('fpdf.php'); 
require_once('fpdi.php'); 

$pdf =& new FPDI(); 
$pdf->AddPage(); 

Strona ta służy jako szablon, a następnie

$pdf->setSourceFile($filename); 
// import page 1 
$tplIdx = $pdf->importPage(1); 
//use the imported page and place it at point 0,0; calculate width and height 
//automaticallay and ajust the page size to the size of the imported page 
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true); 

Daj mi znać, jeśli masz jakiekolwiek błędy

+2

pracował dla mnie tylko przy użyciu wartości Null w $ x & $ y '$ outPdf-> useTemplate ($ outPdf-> importPage ($ i), null, null, 0, 0, true);'. W przeciwnym razie odcina strony do A4. – juanmf

5

Ponieważ chcesz wszystkie strony z tekstem, jednym ze sposobów na to jest umieszczenie kodu w pętli .

Jak to:

// Get total of the pages 
$pages_count = $pdf->setSourceFile('your_file.pdf'); 

for($i = 1; $i <= $pages_count; $i++) 
{ 
    $pdf->AddPage(); 

    $tplIdx = $pdf->importPage($i); 

    $pdf->useTemplate($tplIdx, 0, 0); 


    $pdf->SetFont('Arial'); 
    $pdf->SetTextColor(255,0,0); 
    $pdf->SetXY(25, 25); 
    $pdf->Write(0, "This is just a simple text"); 
} 
Powiązane problemy