用PHP编写的HTML到PDF转换器
Dompdf while 循环 - 仅最后一条记录转换为 pdf
<?php require"../db_connection1.php";?> <?php require"../db_connection4.php";?> <?php require"../db_connection5.php";?> <?php require_once('../dompdf/autoload.inc.php') ; use Dompdf\Dompdf ; ob_start() ; if (isset($_POST["submit"])) { $payroll_date = mysqli_real_escape_string($connection5, $_POST["payroll_date"]) ; } $query = "SELECT * FROM ".$payroll_date." "; $result = mysqli_query($connection5, $query); while ($row1 = mysqli_fetch_array($result)) { $Employee_Number = $row1[0] ; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <link href="../bootstrap.min.css" rel="stylesheet"> <style type="text/css"> .SECTION-1 { margin-top:110px ; margin-left: 108px ; margin-bottom: 5px ; } </style> </head> <body> <form action = "#" method ="POST"> <div class ="SECTION-1" > <?php $query_hr_data = "SELECT * FROM applicants_final WHERE employee_number = '{$Employee_Number}' "; $result = mysqli_query($connection4, $query_hr_data ); while ($row5 = mysqli_fetch_array($result)) { $cost_center = $row5['cost_center'] ; $position = $row5['position'] ; $query = "SELECT * FROM ".$payroll_date." WHERE EE_NUMBER = '{$Employee_Number}' "; $result = mysqli_query($connection5, $query); while ($row1 = mysqli_fetch_array($result)) { $EE_NUMBER = $row1['EE_NUMBER'] ; $EE_NAME = $row1['EE_NAME'] ; $query2 = "SELECT * FROM ".$payroll_date." WHERE EE_NUMBER = '{$Employee_Number}' "; $result = mysqli_query($connection1, $query); while ($row2 = mysqli_fetch_array($result)) { $LATES_UNDERTIME_HRS = $row2['LATES_UNDERTIME'] ; $ABSENCES_HRS = $row2['ABSENCES'] ; echo "<table id ='heading'>" ; echo"<tr>" ; echo"<th id ='heading-2-1'>EE Name </th>" ; echo"<td id ='heading-2'>" .$row1['EE_NAME']." </br> </td>" ; echo"<th id ='heading-2-1'>Philhealth # </th>" ; echo"<td id ='heading-2'>" .$philhealth_number." </br> </td>" ; echo"</tr>" ; echo"<tr>" ; echo"<th id ='heading-2-1'>Basic_Salary </th>" ; echo"<td id ='heading-2'>" .number_format($basic_salary,2). "</br> </td>" ; echo"<th id ='heading-2-1'> Allowances </th>" ; echo"<td id ='heading-2'>" .number_format($deminimis_benefits,2)."</br> </td>" ; echo"</tr>" ; echo "</table>" ; echo "<table id='design-8'>" ; echo"<tr>" ; echo"<th>Lates_Undertime ( minutes ) </th>" ; echo"<td>" .$LATES_UNDERTIME_HRS. "</br> </td>" ; echo"<td>" .$LATES_UNDERTIME." </br> </td>" ; echo"</tr>" ; echo"<tr>" ; echo"<th>Absences </th>" ; echo"<td>" .$ABSENCES_HRS." </br> </td>" ; echo"<td>" .$ABSENCES." </br> </td>" ; echo"</tr>" ; echo "</table>" ; echo "<div id='design-2'> *** Payslip Confidential *** </div>" ; ?> </form> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </body> </html> <?php $html = ob_get_clean(); $dompdf = new Dompdf(); $dompdf->load_html($html); $dompdf->setPaper(array(0, 0, 612, 1100), 'portrait'); $dompdf->render(); $pdf = $dompdf->output(); $file_location = "C:/wamp/www/dbs-program/payroll-program/version-3.4/pdfReports/".$Employee_Number.".pdf" ; file_put_contents($file_location, $pdf); } } } ?> 谢谢布莱恩,我更新了代码,我只是删除了冗余数据,这样就可以了 不要太长。再次感谢您再次查看。 我想打印 50 多个 pdf 并将其保存到指定文件夹,pdf 名称为员工编号,来自 mysql数据库。现在的问题只是 while 循环中的最后一个数据正在被 转换为pdf,如果我将第一个查询的右括号转移到 html后的最后一个代码,转换后的pdf只是第一个。当我 echo $Employee_Number = $row1[0] 我得到了所有 50 多个数据。我已经尝试过了 迭代,例如 for,但它变得更复杂,因为它打印出来 pdf 的确切数量,但没有打印任何数据,希望有人 有关如何继续的帮助或提示。先谢谢你了。 I also have a similar problem.only the last record in the database gets converted into pdf.anyone to help. <?php `require_once('./dompdf/dompdf/autoload.inc.php'); include('connect.php'); use Dompdf\Dompdf;` `$sql ="SELECT fname,lname FROM worker"; $results= mysqli_query($conn,$sql); while($row=mysqli_fetch_assoc($results)){ $fname=$row['fname']; $lname=$row['lname']; $i=1; $html=''; $html .=' <table border="1" cellspacing="0"style="width:100%; text-align:center" > <tr> <th>#</th> <th>FIRST NAME</th> <th>LAST NAME</th> </tr> <tr> <td >'.$i.'</td> <td> '.$fname.'</td> <td>'.$lname.'</td> </tr> </table> '; $i++; } $dompdf= new dompdf(); $dompdf->loadhtml($html); $dompdf->setPaper('A4','landscape'); $dompdf->render(); $dompdf->stream("liseli",array("Attachment"=>0));` ?>
有没有办法禁用 PHP 中使用 DOMPDF 生成的文档的复制和粘贴? 我喜欢在我的网站中生成 pdf,并且还喜欢防止用户复制和粘贴内容。是...
当我使用 dompdf 创建 pdf 时,它会将其生成为默认宽度和高度。我想设置我创建的 pdf 的自定义宽度和高度。如果在 dompdf 中不可能,请建议其他一些
此代码将 HTML 转换为 PDF。 生成 PDF 时,图像不会出现,并显示错误,指出“未找到图像或类型未知”。我该如何解决这个问题?我已经实现了这个...
我使用 dompdf 类,我需要每个页面的页码编号 我这样做了并且有效: $dompdf = new Dompdf(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_can...
在laravel中使用DomPDF将数据导出为pdf时第二列被拉伸
我在 Laravel 项目中使用 DomPDF。它打印得很好,但它拉伸了第二列图像。我需要两列占据一半的可用空间。我将在以后分享我的代码。 CSS F...
Laravel livewire DOM PDF 文件保存但未下载
我正在使用DOM PDF打印html发票页面,该方法通过livewire方法调用,文件正确保存到公共文件夹,但我需要通过浏览器下载它而不是保存它。 通讯...
我在从 dompdf 创建 pdf 时遇到小问题。在html页面标题位置:固定内容重叠在页面标题上。页面内容是动态加载的。如何清除
使用 dompdf 和 php 的 pdf 报告中出现混乱的卡纳达语字体
[ಹೌದುಯಾರಲ್ಲಿ在从 dompdf 渲染时应该像这样显示。 这是我的代码..我使用了 noto sans kannada 常规字体 ](https://i.stack.imgur.com/ADeiA.png) ಹೌದು ಯಾರಲ್ಲಿ 文字秀...
DOMPDF 在 Laravel 文档的开头创建空白页面。我已经检查了所有 html 内容,没有空格。有人有建议吗? 下面是我试图将其放入 pdf 文件中的代码...
Dompdf page_text 使用画布在第一页之后的页面上丢失
我正在尝试在页脚中获取页面计数器。为此,我使用了在 php 中使用 getCanvas()->page_text() 函数的选项(与我无法显示的脚本版本相反)
使用 barryvdh/laravel-dompdf 在一篇论文中显示条形码和标题
我在 laravel 中使用 barryvdh/laravel-dompdf 包来制作 pdf 文件并打印它们。 我的打印机打印小尺寸的条码,例如 45mm * 30mm 我使用这段代码制作 pdf 之类的 $pdf...
建议我使用 laravel 的好 pdf 生成器。在 laravel 中使用 DOMPDF 存在引导程序、css 边框等问题
Bootstrap 基本网格系统在 DOMPDF 中不起作用。我正在使用 Laravel 版本 7.3 $pdf = \App::make('dompdf.wrapper'); $pdf->loadView('pdf.sale_invoice', compact('invoice')); 返回 $pd...
如何在 laravel 的 dompdf 中显示印地语和古吉拉特语字体
我在我的 laravel 项目中使用印地语字体使用 dompdf 生成 pdf。 我已经下载了 Noto Sans Devanagari 字体并放在 myproject\storage onts 文件夹下。 我在 blade html f 中使用过...
我正在学习 Laravel 和 DomPDF。我得到了 stackoverflow 人员的帮助,并得到了 unserstand Laravel 的帮助。现在我在将图像嵌入 PDF 时遇到问题。 我搜索了我需要使用 base64_encode 的
我收到错误 致命错误:未捕获错误:在 C:\xampp\htdocs\portalssmg\z9400b_pdf.php:16 中找不到类“dompdf\dompdf”:16 堆栈跟踪:#0 {main} 我不明白为什么。 我用
我的代码有问题,分页符不适用于长文本。我希望当文本很长时,文本可以在新页面中使用。 这是我试过的代码: 我的代码有问题,分页符不适用于长文本。我希望当文本很长时,文本可以在新页面中使用。 这是我试过的代码: <h6 style="background: #cdcbcb; font-size: 13px; margin: 0px; padding:8px;">RENCANA KEPERAWATAN</h6> <table style="table-layout:fixed;" class='table table-bordered'> <thead> <tr> <th style="width: 30%; overflow: hidden; text-overflow: ellipsis; text-align: center">No</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center">Diagnosa Keperawatan</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center">Tujuan</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center;">Intervensi</th> </tr> </thead> <tbody> <?php $no=1; ?> @foreach ($data_rencanakeperawatan as $item) <tr> <td style="text-align: center">{{$no}}</td> <td>{{$item->diagnosa_keperawatan_rencana}}</td> <td>Setelah dilakukan intervensi keperawatan selama {{ $item->jam }} jam maka {{ $item->keterangan }} dengan kriteria hasil : <?php $data_kriteria=DB::table('tb_kriteria')->where('id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); foreach ($data_kriteria as $value1) { ?> <p>• {{$value1->detail_luarankeperawatan}} ({{$value1->skor_kriteria}})</p> <?php } ?> </td> <td> <?php $data_intervensi=DB::table('tb_intervensirencana') ->join('m_detailintervensi', 'tb_intervensirencana.id_detailintervensi', '=', 'm_detailintervensi.id_detailintervensi') ->where('tb_intervensirencana.id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); $total_text=0; $jml_ket=0; $jml_intervensi=0; $jml=0; foreach ($data_intervensi as $value2) { ?> <b>• {{$value2->keterangan}}{{$jml_ket}}</b><br> {{$value2->dataintervensi}}{{$jml_intervensi}}<br> <?php } ?> </td> </tr> <?php $no++; ?> @endforeach </tbody> </table> 经过一些研究,据说 dompdf 不会在表格中创建 分页符/新页面。遗憾的是,你不能在桌子上做下一页行。我还在我的评论中加入了你可以在 div 上做一个 line break/new page。这样做会更复杂,但我在 div 上制作了这个示例表,它可以处理长文本并制作新页面。 你可以参考这个草稿开始做你的项目。 附言 Dompdf 不支持在页面之间使用表格单元格/行制作新页面。意思是如果你桌上的文字太长,它会移到下一页。此外,表格内的所有数据也将移动到下一页。 我在做研究时了解到,DOMPDF 正在渲染代码中的每个元素(1 个元素 = 1 页)。由于 table 由 (table,thead,tbody,tr,th & td) 组成,它会被视为一个元素。 截至目前,dompdf 仍未解决此问题。 参考#1 参考#2
我的代码有问题,分页符在长文本时不起作用。所以我希望当长文。新页面中可用的文本。 这是我试过的代码! 我的代码有问题,分页符在长文本时不起作用。所以我希望当长文。新页面中可用的文本。 这是我试过的代码! <h6 style="background: #cdcbcb; font-size: 13px; margin: 0px; padding:8px;">RENCANA KEPERAWATAN</h6> <table style="table-layout:fixed;" class='table table-bordered'> <thead> <tr> <th style="width: 30%; overflow: hidden; text-overflow: ellipsis; text-align: center">No</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center">Diagnosa Keperawatan</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center">Tujuan</th> <th style="width: 100%; overflow: hidden; text-overflow: ellipsis; text-align: center;">Intervensi</th> </tr> </thead> <tbody> <?php $no=1; ?> @foreach ($data_rencanakeperawatan as $item) <tr> <td style="text-align: center">{{$no}}</td> <td>{{$item->diagnosa_keperawatan_rencana}}</td> <td>Setelah dilakukan intervensi keperawatan selama {{ $item->jam }} jam maka {{ $item->keterangan }} dengan kriteria hasil : <?php $data_kriteria=DB::table('tb_kriteria')->where('id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); foreach ($data_kriteria as $value1) { ?> <p>• {{$value1->detail_luarankeperawatan}} ({{$value1->skor_kriteria}})</p> <?php } ?> </td> <td> <?php $data_intervensi=DB::table('tb_intervensirencana') ->join('m_detailintervensi', 'tb_intervensirencana.id_detailintervensi', '=', 'm_detailintervensi.id_detailintervensi') ->where('tb_intervensirencana.id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); $total_text=0; $jml_ket=0; $jml_intervensi=0; $jml=0; foreach ($data_intervensi as $value2) { ?> <b>• {{$value2->keterangan}}{{$jml_ket}}</b><br> {{$value2->dataintervensi}}{{$jml_intervensi}}<br> <?php } ?> </td> </tr> <?php $no++; ?> @endforeach </tbody> </table> 提前致谢,抱歉偶尔出现英语错误 您可以使用 "word-break" 属性使用 css 来做到这一点。 td{ word-break:break-all; } 参考