如何在mPDF中使用bootstrap?
How to use bootstrap in mPDF?
我目前正在使用 mpdf 从 html 生成我的 pdf。到目前为止,我传递的当前 html 能够生成带有页眉和页脚的单页 pdf。但是,如果不止一页,我的页脚会一直延伸到第二页的底部。有没有办法为每个页面添加页眉和页脚?
我试过 $pdf->setHTMLHeader,但它似乎没有接收我的 css 文件,它在我的徽标应该所在的位置留下了一个 x。我怎样才能做到这一点?我试过在各个地方搜索,但似乎找不到解决方案。
这是我的代码
public function generate_pdf($account_id,$transaction_id,$html){
$document_folder = $_SERVER['DOCUMENT_ROOT']."/".DOCUMENT_FOLDER."/".PAYMENT_RECEIPTS."/".date("Y");
$extension = ".pdf";
if(!is_dir($document_folder)){
mkdir($document_folder, 0777,true);
}
$file_name = md5($transaction_id.$account_id);
$this->load->library('m_pdf');
$pdf = $this->m_pdf->load();
$header = $this->load->view('pdfs/header','',true);
$footer = $this->load->view('pdfs/footer','',true);
$pdf->setHTMLHeader($header);
$pdf->setHTMLFooter($footer);
$pdf->AddPage('', // L - landscape, P - portrait
'', '', '', '',
5, // margin_left
5, // margin right
60, // margin top
30, // margin bottom
0, // margin header
0
); // margin footer
$pdf->WriteHTML(base64_decode($html));
$pdf->Output($document_folder."/".$file_name.$extension, "F");
$result = array(
'file_name'=>$file_name,
'file_location'=>$document_folder."/".$file_name.$extension,
'file_link'=>DOCUMENT_LOCATION."/".DOCUMENT_FOLDER."/".PAYMENT_RECEIPTS."/".date("Y")."/".$file_name.$extension
);
return $result;
exit;
}
还有,请问有什么方法可以知道PDF输出是否成功?当前 $pdf-> 仅输出 returns ""
谢谢
mPDF 不完全支持 Bootstrap 样式。一个选项是一些替代方案,例如基于 wkhtmltopdf.
的 headless-chrome
其中一个 mpdf 人员告诉我们 bootstrap 在 mpdf 中不支持 out-of-the-box,您必须使用一些自定义样式。 Github link
希望这对解决您的问题有所帮助。
就我而言,我使用的是 Bootstrap 3.3.7 和 MPDF 6.0 版。
它运行完美,没有任何错误。
$stylesheet = file_get_contents('css/bootstrap-3.3.7.min.css');
$pdf->WriteHTML($stylesheet, 1); // CSS Script goes here.
$pdf->WriteHTML($html, 2); //HTML Content goes here.
$pdf->Output();
这是 mPDF 的 Bootstrap CSS 文件:https://github.com/kartik-v/yii2-mpdf/blob/master/src/assets/kv-mpdf-bootstrap.css
它是封装 mPDF 的 kartik-v/yii2-mpdf PHP 库的一部分。
我目前正在使用 mpdf 从 html 生成我的 pdf。到目前为止,我传递的当前 html 能够生成带有页眉和页脚的单页 pdf。但是,如果不止一页,我的页脚会一直延伸到第二页的底部。有没有办法为每个页面添加页眉和页脚?
我试过 $pdf->setHTMLHeader,但它似乎没有接收我的 css 文件,它在我的徽标应该所在的位置留下了一个 x。我怎样才能做到这一点?我试过在各个地方搜索,但似乎找不到解决方案。
这是我的代码
public function generate_pdf($account_id,$transaction_id,$html){
$document_folder = $_SERVER['DOCUMENT_ROOT']."/".DOCUMENT_FOLDER."/".PAYMENT_RECEIPTS."/".date("Y");
$extension = ".pdf";
if(!is_dir($document_folder)){
mkdir($document_folder, 0777,true);
}
$file_name = md5($transaction_id.$account_id);
$this->load->library('m_pdf');
$pdf = $this->m_pdf->load();
$header = $this->load->view('pdfs/header','',true);
$footer = $this->load->view('pdfs/footer','',true);
$pdf->setHTMLHeader($header);
$pdf->setHTMLFooter($footer);
$pdf->AddPage('', // L - landscape, P - portrait
'', '', '', '',
5, // margin_left
5, // margin right
60, // margin top
30, // margin bottom
0, // margin header
0
); // margin footer
$pdf->WriteHTML(base64_decode($html));
$pdf->Output($document_folder."/".$file_name.$extension, "F");
$result = array(
'file_name'=>$file_name,
'file_location'=>$document_folder."/".$file_name.$extension,
'file_link'=>DOCUMENT_LOCATION."/".DOCUMENT_FOLDER."/".PAYMENT_RECEIPTS."/".date("Y")."/".$file_name.$extension
);
return $result;
exit;
}
还有,请问有什么方法可以知道PDF输出是否成功?当前 $pdf-> 仅输出 returns ""
谢谢
mPDF 不完全支持 Bootstrap 样式。一个选项是一些替代方案,例如基于 wkhtmltopdf.
的 headless-chrome其中一个 mpdf 人员告诉我们 bootstrap 在 mpdf 中不支持 out-of-the-box,您必须使用一些自定义样式。 Github link
希望这对解决您的问题有所帮助。
就我而言,我使用的是 Bootstrap 3.3.7 和 MPDF 6.0 版。 它运行完美,没有任何错误。
$stylesheet = file_get_contents('css/bootstrap-3.3.7.min.css');
$pdf->WriteHTML($stylesheet, 1); // CSS Script goes here.
$pdf->WriteHTML($html, 2); //HTML Content goes here.
$pdf->Output();
这是 mPDF 的 Bootstrap CSS 文件:https://github.com/kartik-v/yii2-mpdf/blob/master/src/assets/kv-mpdf-bootstrap.css
它是封装 mPDF 的 kartik-v/yii2-mpdf PHP 库的一部分。