需求:
将页面中内容以pdf形式导出
准备:
TCPDF 地址: https://tcpdf.org/
思路:
前端获取到要导出页面的html传递给后端,后端通过tcpdf来进行导出操作。
前端代码如下:
//......
//要导出的内容
//......
导出pdf
//......
function exPdf() {
var html = document.getElementById("pdf-content").innerHTML;
$("#html_vaue").val(html);
$('#html_form').submit();
}
后端代码如下:
class PdfController
{
public function getPage($html){
$pageHtml = <<
html>
{$html}
EOF;
return $pageHtml;
}
/**
* 生成pdf文件
*/
public function createPdfAction(){
//引入tcpdf
$door = dirname( $this->container->get('kernel')->getRootDir() ). DIRECTORY_SEPARATOR;
require_once implode('/', [$door, 'vendor/tecnickcom/tcpdf/tcpdf.php']);
//生成pdf文件名以及对应内容
$html = $this->getPage(self::$request->get("html",""));
$file_name = self::$request->get("file_name","pdf".time()).'.pdf';
//替换\n
$html = str_replace("\n","",$html);
//TCPDF使用
$pdf = new \TCPDF();
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(false);
$pdf->SetFont('stsongstdlight', '', 10, '', false);
$pdf->AddPage();
//写入html I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output($file_name, 'D');
exit();
}
}
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25393.html
微信打赏
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力! 如果您想成为作者,请点我