我正在使用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。是否无法下载多个文件?我究竟做错了什么?
答案 0 :(得分:5)
您更新的问题的答案是:
当然,您可以创建多个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');
}
答案 1 :(得分:0)
您如何期待这样的功能。
您应该使用不同的方法。首先使用mpdf将文件保存到光盘,然后创建一个zip文件并使其可供下载。
答案 2 :(得分:0)
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;
?>
希望这会有所帮助:):)
答案 3 :(得分:0)
下面是生成多个PDF文件并将其保存在某个目录中的代码。我使用sleep和time函数生成唯一的文件名,以便它覆盖同名的现有文件。
<?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');
}?>