我需要定期填写现有的Excel表格并将其导出为PDF。但我无法做到让内容适合页面。
$spreadsheet = IOFactory::load(Storage::path('Time&Attendance Template.xltx'));
$sheet = $spreadsheet->getActiveSheet();
$pdfWriter = new Tcpdf($spreadsheet);
$sheet->getCell('A1')->setValue(Str::random());
$pdfWriter->setPaperSize(PageSetup::PAPERSIZE_A4);
$pdfWriter->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$pdfWriter->save($file = Storage::path('test.pdf'));
结果:
Excel Online 中的同一文件,无需任何缩放设置,适合一页 PDF 页面:
PS。我尝试了 mpdf 和 dompdf 生成器。他们得到的字体行非常错误,对我来说与原始字体不够接近。
我也不明白为什么垂直对齐不起作用。 TCPDF 似乎忽略了单元格的垂直对齐。
手动调整单元格和字体大小:
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(10);
在单元格中换行文本:
$spreadsheet->getActiveSheet()->getDefaultStyle()->getAlignment()->setWrapText(true);
这应该可以解决你的问题