MPDF横向模式失效:CodeIgniter中始终生成纵向PDF怎么办?
解决CodeIgniter中mPDF无法生成横向PDF的问题
你遇到的始终生成纵向PDF的问题,核心原因是mPDF构造函数的参数传递方式错误。咱们来一步步分析和解决:
问题根源
你把mPDF构造函数的所有参数拼成了一个字符串'"en-GB-x","Letter-L","","",10,10,10,10,6,3',但mPDF的构造函数需要接收多个独立的参数,而不是一个整体字符串。这样传入的话,mPDF只会把整个字符串当作第一个参数(语言模式),后面的页面格式等参数完全没被正确解析,所以默认使用了纵向页面。
解决方案
你有两种方式可以修正这个问题:
方式1:正确传递构造函数参数
直接把每个参数单独传入mPDF的构造函数,第二个参数指定横向纸型(比如Letter-L表示横向的Letter纸):
public function downloadstatisticsWeek1() { $data = []; $html = $this->load->view('pdf/weeklyKeyIndicatorReportWeek1', $data, true); $pdfFilePath = "Pcdom Statistics As of ". date('F d Y')." .pdf"; $this->load->library('pcdom_pdf_converter'); // 注意:这里去掉了外层的引号和逗号拼接,直接传递独立参数 $pdfer = new mPDF('en-GB-x', 'Letter-L', '', '', 10, 10, 10, 10, 6, 3); $pdfer->WriteHTML($html); $pdfer->output($pdfFilePath, "D"); }
方式2:创建实例后强制切换横向
如果构造函数的参数设置不方便调整,也可以在创建mPDF实例后,调用AddPage()方法指定横向:
public function downloadstatisticsWeek1() { $data = []; $html = $this->load->view('pdf/weeklyKeyIndicatorReportWeek1', $data, true); $pdfFilePath = "Pcdom Statistics As of ". date('F d Y')." .pdf"; $this->load->library('pcdom_pdf_converter'); $pdfer = new mPDF('en-GB-x', 'Letter', '', '', 10, 10, 10, 10, 6, 3); // 添加这行代码,强制切换为横向页面 $pdfer->AddPage('L'); $pdfer->WriteHTML($html); $pdfer->output($pdfFilePath, "D"); }
补充说明
Letter-L中的L是Landscape(横向)的缩写,对应的纵向是P(Portrait)。如果需要其他纸型的横向,比如A4横向,可以用A4-L代替Letter-L。
内容的提问来源于stack exchange,提问作者Fel
相关产品推荐
相关产品推荐

