我使用MPDF库,我想写这将在一个呼叫建立多个PDF文件的编码(用一个开口:test.php的)。问题:总是只有第一个文件被下载。我知道,可能这个问题似乎是愚蠢的,我试图潜入深海到谷歌,但我无法弄清楚如何解决这个问题。也许有人会导致我在正确的道路上? 我的逻辑是: - 我有一个阵列的所有订单;每个订单我想创建PDF。 - 我环路阵列,每次调用MPDF库
test.php的
$myorders = [
0 => array (
'FirstName' => 'Asia',
'LastName' => 'Basia',
'OrderNr' => '123'
),
1 => array (
'FirstName' => 'Madzia',
'LastName' => 'Siasia',
'OrderNr' => '456'
)
];
for ($i=0; $i < count($myorders); $i++) {
$FirstName = $myorders[$i]['FirstName'];
$LastName = $myorders[$i]['LastName'];
$OrderNr = $myorders[$i]['OrderNr'];
require 'invoice.php';
}
invoice.php
require 'MPDF57/mpdf.php';
$mpdf=new mPDF();
$mpdf->Bookmark('Start of the document');
$mpdf->WriteHTML('test test' . $FirstName);
$mpdf->Output("filename{$OrderNr}.pdf",'D');
只有filename123.pdf下载。这难道不是可以下载多个文件?我究竟做错了什么?
为您更新的问题的答案是:
Ofcourse您可以创建多个PDF文件并将其保存到光盘上。你只需要放置PDF生成代码,您在for循环中。
请参考下文提到的代码:
require 'MPDF57/mpdf.php';
for ($i=0; $i < count($myorders); $i++) {
$FirstName = $myorders[$i]['FirstName'];
$OrderNr = $myorders[$i]['OrderNr'];
$mpdf=new mPDF();
$mpdf->Bookmark('Start of the document');
$mpdf->WriteHTML('test test' . $FirstName);
$mpdf->Output("filename{$OrderNr}.pdf", 'F');
}
你怎么能指望这样的特征。
你应该这样做使用了不同的方法。首先使用MPDF将文件保存到光盘,然后创建一个zip文件,并做出可供下载。
App::import('Vendor', 'mpdf', array('file' => 'mpdf' . DS . 'mpdf.php'));
$zip = new ZipArchive();
$zip->open('filename.zip', ZipArchive::CREATE);
if($zip->open('filename.zip'))
{
for ($i=0; $i < count($myorders); $i++)
{
$FirstName = $myorders[$i]['FirstName'];
$OrderNr = $myorders[$i]['OrderNr'];
$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13);
$mpdf->Bookmark('Start of the document');
$mpdf->SetDisplayMode('fullpage');
$mpdf->setHeader('hello');
$mpdf->WriteHTML('test test' . $FirstName);
$content = $mpdf->Output('filename'.$OrderNr.'.pdf','F');
$zip->addFile($content,'hellofilename'.$OrderNr.'.pdf');
}
}
else
{
echo "cant open!!";exit;
}
$zip->close();
$archfilename = 'filename.zip';
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename = $archfilename");
header("Pragma: no-cache");
header("Expires: 0");
readfile("filename.zip");
exit;
?>
希望这可以帮助 :) :)
下面是生成多个PDF文件并保存在一些directory.I使用的睡眠和时间函数生成唯一的文件名,这样它会覆盖同名现有文件的代码。
<?php
$record = array('BMW','Mercedes','Toyota');
include_once("../lib/MPDF57/mpdf.php");
foreach($record as $value){
$filename = time().'Performance_review.pdf';
sleep(2);
$mpdf=new mPDF();
$mpdf->WriteHTML($value);
$get_pdf = $mpdf->Output('../pdf-output/'.$filename,'F');
}?>