如何使用html2pdf同时生成多个PDF



我想为MySQL数据库中包含的每个idsample同时生成多个单独的PDF文件。我设法生成了一个没有任何问题的PDF,但其他PDF没有生成。例如,我有两个表:run0112201728S52PRO, run011220178FS22LEJ,我想要这两个idsamples的单独PDF文件:28S52PRO8FS22LEJ

我的idsample包含在表名中,因此首先,我查询和子字符串以获取存储到数组中的idsample。然后,我循环查找每个idsample以获得Lastname和First name。

以下是我所做的:

<?php
ob_start();
//Connect to MySQL database
require_once 'configphp';
require_once dirname(__FILE__).'/vendor/autoload.php';

use SpipuHtml2PdfHtml2Pdf;
use SpipuHtml2PdfExceptionHtml2PdfException;
use SpipuHtml2PdfExceptionExceptionFormatter;
//define the name of the tables
$tablename='run01122017';
//GET idecht that we gonna cut from the result_array
$query2 = "select DISTINCT SUBSTRING(TABLE_NAME,12,8) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME like 'run01122017%'";
$result2 = mysqli_query($conn,$query2) or die ("no query");
//We store idsample into an array
while($row2 = mysqli_fetch_assoc($result2))
{
$idEcht_array[] = $row2;

}
$index=1;
$arraysizeECHT=sizeof($idEcht_array);
for($i=0;$i<=$arraysizeECHT-1;$i++){

//Query to pick up Idsample information from PAT table
$FetchIdPat="SELECT Lastname, Firstname FROM PAT WHERE idEcht='".implode(",",$idEcht_array[$i])."'";
$PerformIdPAT=mysqli_query($conn,$FetchIdPat) or die(mysqli_error($conn));
?>
<h2>TITLE OF THE DOC</h2>
<hr/>
<?php
while($rowIDPat =  mysqli_fetch_assoc($PerformIdPAT)) { 
?>
Pat:&nbsp;<?php echo $rowIDPat["Lastname"]."&nbsp;".$rowIDPat["Firstname"];?>
<?php
$content = ob_get_clean();

try
{

$html2pdf = new Html2Pdf('P', 'A4', 'fr');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$content=ob_end_clean();
$html2pdf->Output($tablename.'-'.implode(",",$idEcht_array[$i]).'-Report.pdf');

unset($html2pdf);

}
catch(HTML2PDF_exception $e) {
echo $e;
exit;
}
$index++;
} //end of the while
} //end of the for
mysqli_close($conn);
?>

您谈到下载:请记住http协议允许每个请求下载一个

如果您的意图是:

  1. 执行请求
  2. 生成所有pdf
  3. 启动所有N次下载

这是不可能的。

尝试通过验证进行调试:

  • 第一个查询生成多个结果
  • $html2pdf->Output((使用不同的文件名

下面是已清理的代码

<?php
//Connect to MySQL database
require_once 'configphp';
require_once __DIR__ . '/vendor/autoload.php';
use SpipuHtml2PdfHtml2Pdf;
use SpipuHtml2PdfExceptionHtml2PdfException;
use SpipuHtml2PdfExceptionExceptionFormatter;
//define the name of the tables
$tablename = 'run01122017';
//GET idecht that we gonna cut from the result_array
$query2 = "select DISTINCT SUBSTRING(TABLE_NAME,12,8) as idEcht FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME like '$tablename%'";
$result2 = mysqli_query($conn, $query2) or die ("no query");
while ($row2 = mysqli_fetch_assoc($result2)) {
//Query to pick up Idsample information from PAT table
$idEcht = $row2['idEcht'];
$FetchIdPat = "SELECT Lastname, Firstname FROM PAT WHERE idEcht='$idEcht'";
$PerformIdPAT = mysqli_query($conn, $FetchIdPat) or die(mysqli_error($conn));
$content = "<h2>TITLE OF THE DOC</h2>n<hr/>n";
while ($rowIDPat = mysqli_fetch_assoc($PerformIdPAT)) {
$content .= "Pat:&nbsp;" . $rowIDPat["Lastname"] . "&nbsp;" . $rowIDPat["Firstname"] . "n";
try {
$html2pdf = new Html2Pdf('P', 'A4', 'fr');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$content = ob_end_clean();
$html2pdf->Output("$tablename-$idEcht-Report.pdf");
unset($html2pdf);
} catch (HTML2PDF_exception $e) {
echo $e;
exit;
}
} //end of the while $PerformIdPAT
} //end of the while $result2
mysqli_close($conn);

最新更新