2012-03-06 88 views
0

我需要上傳兩個圖像文件,並將其添加到現有的PDF文件中。我已經閱讀了關於FPDF的文章,基於此,我遵循這個帖子link。如果有人可以發佈一個簡單的工作示例/鏈接,這對像我這樣的搜索者以及一些也會採用相同路線尋找一些有用答案的人有所幫助。使用PHP插入現有PDF文件中的圖像文件

+0

將圖像添加到現有的PDF - 這應該出現在現有的頁面還是新的?如果前者,請記住,您真的只能渲染現有內容afaik的頂部 - 如果您想用插入的圖片重新排列文檔,則需要從頭開始重新渲染。 – halfer 2012-03-06 15:17:27

+0

圖片應該在現有網頁上顯示的信息 – 125369 2012-03-06 15:20:29

+0

太好了,@ tonymarschall的答案應該會讓你感到滿意。 – halfer 2012-03-06 15:23:09

回答

4

對於FPDF,似乎有一個名爲FPDI的擴展名。下面是有關如何修改現有的PDF博客文章:http://pranavom.wordpress.com/2011/03/15/modify-pdf-using-fpdffpdi-library/

您可以將使用FPDI像這樣的圖像:

$pdf = new FPDI(); 
$pdf->AddPage(); 
$pdf->setSourceFile("MySource"); 
$template = $pdf->importPage(1); 
$pdf->useTemplate($template); 
$pdf->Image('MyImage.jpg', $x, $y, $width, $height); 
$pdf->Output($outputPath, "F"); 
+0

嗨託尼,我跟着你提到的例子,我可以用圖像創建一個pdf,但即使我的原始pdf只包含一個頁面,創建的PDF有一個第一頁,其中是空白的,在第二頁,我得到了我想要的內容。任何想法如何消除這一點,並獲得第一頁所需的變化。如果你能解決這個問題,我也會接受你的回答。謝謝 – 125369 2012-03-06 15:42:05

+0

不確定,嘗試刪除第一個'$ pdf-> AddPage();'但這是另一個問題。 – tonymarschall 2012-03-06 15:45:24

+0

感謝託尼指出,答案接受:)只是一個更基本的問題,是有可能增加/減少圖像尺寸或圖像尺寸是標準的。 – 125369 2012-03-06 15:50:30

1

我使用PHP,FPDF生成從FDF文件的PDF和然後在PDF中插入一個qrcode圖形。我一直在遇到麻煩,因爲我的空pdf已經內置了表單字段,並在其他程序中插入了圖形刪除了我的表單字段。我終於弄明白了。希望這可以幫助那些正在爲之奮鬥的人。

我的殯儀館工作,如果任何一個變種的名稱把你扔出這個代碼不拋光其被切斷,從噸的不同來源的粘貼;)

我使用以下庫http://www.fpdf.org/http://phpqrcode.sourceforge.net/

for($count=0;$count<$doc_list_length;$count++){ 

    //create FDF file 
    $id = rand(11111,99999); 
    $filename = $populated_pdf_path . $casenumber.$doc_list[$count].".fdf";  
    $file = fopen($filename,"w"); 
    $filecontents = "%FDF-1.2". PHP_EOL; 
    $filecontents .= "%âãÏÓ" . PHP_EOL; 
    $filecontents .= "1 0 obj" . PHP_EOL; 
    $filecontents .= "<<" .PHP_EOL; 
    $filecontents .= "/FDF << /Fields [ "; 
    $filecontents .= "<</T(name)/V($name)>>"; 
    $filecontents .= "] " . PHP_EOL; 
    $filecontents .= "/F (empty_pdf/$doc_list[$count].pdf) "; 
    $filecontents .= "/ID [ <$id>" . PHP_EOL; 
    $filecontents .= "] >> " . PHP_EOL; 
    $filecontents .= ">> ". PHP_EOL; 
    $filecontents .= "endobj" . PHP_EOL; 
    $filecontents .= "trailer" . PHP_EOL; 
    $filecontents .= "<<" . PHP_EOL; 
    $filecontents .= "/Root 1 0 R" . PHP_EOL . PHP_EOL; 
    $filecontents .= ">>" . PHP_EOL; 
    $filecontents .= "%%EOF"; 
    fwrite($file, $filecontents); 
    fclose($file); 

    //insert image on this document only 
    //generate qrcode 
    if($doc_list[$count] == "checklist"){ 

     $qrCodeFileName = $cemetery."qrcode.png"; 
     if(!file_exists($populated_pdf_path.$qrCodeFileName)){ 
      include('include/phpqrcode/qrlib.php'); 
      $codeContents = "http://www.asuperduperwebaddress.com"; 
      QRcode::png($codeContents, $populated_pdf_path.$qrCodeFileName); 
     } 

     if(!file_exists($populated_pdf_path.$cemetery."qrcode.pdf")){ 
      //make pdf with image 
      require_once('include/fpdf.php'); 
      $image = $populated_pdf_path.$qrCodeFileName; 
      $pdf = new FPDF(); 
      $pdf->AddPage(); 
      $pdf->Image($image, 183, 250, 25, 25, 'PNG'); 
      $pdf->Output($populated_pdf_path.$cemetery."qrcode.pdf"); 
     } 

     //setup file paths for pdf output 
     $tempFile = $populated_pdf_path . $casenumber.$doc_list[$count]."temp.pdf"; 
     $pdfExampleFile = $populated_pdf_path . $casenumber.$doc_list[$count].".pdf"; 
     $pdfFile = $empty_pdf_path . $doc_list[$count] . ".pdf"; 
     if($doc_list[$count] == "checklist") 
     $fdfFile = $filename; 
     $fdfTemplateFile = $filename; 

     //fill pdf 
     $command = "pdftk $pdfFile fill_form $fdfTemplateFile output $tempFile 2> fill_form.log"; 
     passthru($command); 

     //stamp pdf with qrcode 
     $command = "pdftk " . $tempFile . " stamp " . $populated_pdf_path.$cemetery . "qrcode.pdf output " . $pdfExampleFile; 
     passthru($command); 
    } 
    else{ 
     //setup file paths for pdf output 
     $pdfExampleFile = $populated_pdf_path . $casenumber.$doc_list[$count].".pdf"; 
     $pdfFile = $empty_pdf_path . $doc_list[$count] . ".pdf"; 
     if($doc_list[$count] == "checklist") 
     $fdfFile = $filename; 
     $fdfTemplateFile = $filename; 

     //fill pdf 
     $command = "pdftk $pdfFile fill_form $fdfTemplateFile output $pdfExampleFile 2> fill_form.log"; 
     passthru($command); 
    } 

} 
+0

謝謝。我必須做出一個改變,$ pdf-> Output調用需要一個dest參數。我用: $ pdf->輸出(「F」,$ filename); – NoelHunter 2017-04-13 13:20:30

相關問題