2012-03-06 6 views
0

. Мне нужно, чтобы я загрузил два файла изображений и должен быть добавлен в существующий файл PDF. Я читал о FPDF, основываясь на том, что я следил за этим сообщением link. В случае, если кто-то может опубликовать простой рабочий пример/ссылку, это было бы полезно для таких пользователей, как я и еще несколько людей, которые также поехали бы по тому же пути, чтобы найти полезные ответы.Вставить файлы изображений в существующий файл PDF, используя PHP

+0

Добавление изображения в существующий PDF - должно ли оно отображаться на существующей странице или на новой? Если первое, помните, что вы действительно можете сделать только верхнюю часть существующего содержимого afaik - если вы хотите перепланировать документ с вставленным изображением, вам нужно повторно отобразить с нуля. – halfer

+0

для информации, изображения должны отображаться на существующей странице – 125369

+0

Отлично, ответ от @tonymarschall должен отсортировать вас тогда. – halfer

ответ

4

Похоже, что есть расширение под названием FPDI для FPDF. Вот блог о том, как изменить существующий 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 имеет первую страницу, BLANK, а на второй странице я получаю содержимое, которое я хотел. Любая идея, как устранить это и получить необходимые изменения на первой странице. Я также согласился бы на ваш ответ, если бы вы могли разобраться в этом. Спасибо – 125369

+0

Не уверен, попробуйте удалить первый '$ pdf-> AddPage();' Но это еще один вопрос. – tonymarschall

+0

спасибо за тони за то, что указали его, ответ был принят :) еще один основной вопрос: возможно ли увеличить/уменьшить размер изображения или стандартные размеры изображения. – 125369

1

Я использую PHP, FPDF для генерации PDF из файла FDF и затем вставьте графику qrcode в файл pdf. Я все время сталкивался с трудностями, потому что мой пустой 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