使用 PHP 在现有 PDF 文件中插入图像文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9586384/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Insert images files in existing PDF file using PHP
提问by 125369
My need is that I upload two image files and that should be added to an existing PDF file. I have read about FPDF, basing on that I have followed this post link. In case if somebody can post a simple working example/link it would be helpful for searchers like me and some more people who would also take the same route to find some helpful answers.
我需要上传两个图像文件,并将其添加到现有的 PDF 文件中。我已经阅读了关于 FPDF 的内容,基于我已经关注了这个帖子链接。如果有人可以发布一个简单的工作示例/链接,这对像我这样的搜索者以及更多也会采取相同途径找到一些有用答案的人会有所帮助。
回答by tonymarschall
It seems there is an extension called FPDIfor FPDF. Here is a blog post about how to modify an existing pdf: http://pranavom.wordpress.com/2011/03/15/modify-pdf-using-fpdffpdi-library/
似乎有一个名为FPDIfor FPDF的扩展名。这是一篇关于如何修改现有 pdf 的博客文章:http: //pranavom.wordpress.com/2011/03/15/modify-pdf-using-fpdffpdi-library/
You can place an image using FPDI like so:
您可以使用 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");
回答by James
I am using PHP, FPDF to generate a pdf from an FDF file and then insert a qrcode graphic into the pdf as well. I kept running into trouble because my empty pdf has form fields built in and inserting a graphic with other programs erased my form fields. I finally figured it out. Hope this helps someone else who is struggling with the same.
我正在使用 PHP、FPDF 从 FDF 文件生成 pdf,然后也将 qrcode 图形插入到 pdf 中。我一直遇到麻烦,因为我的空 pdf 有内置的表单域,并用其他程序插入图形删除了我的表单域。我终于弄明白了。希望这可以帮助其他正在苦苦挣扎的人。
I work for funeral home if any of the var names throw you off and this code isn't polished its been cut and pasted from tons of different sources ;)
我在殡仪馆工作,如果任何一个 var 名称让你失望,并且这段代码没有经过打磨,它是从大量不同的来源剪切和粘贴的;)
I am using the following libraries http://www.fpdf.org/and http://phpqrcode.sourceforge.net/
我正在使用以下库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 .= "%a??ó" . 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);
}
}