FPDF / FPDI addPage() Orientation
我正在使用以下代码将新页面添加到现有的PDF文档中并保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | require('addons/fpdf.php'); require('addons/fpdi.php'); $pdf = new FPDI(); $pagecount = $pdf->setSourceFile($orgpdfpath); for($i = 1; $i <= $pagecount; $i++){ $pdf->addPage(); $tplidx = $pdf->importPage($i); $pdf->useTemplate($tplidx); } $pdf->addPage($pdforientation); $pdf->Image($imgpath,$pdfxaxis,$pdfyaxis,$pdfwith,$pdfheight); $pdf->Output($orgpdfpath,'F'); |
如果我的文档为A4,第1页:纵向,第2页:纵向,第3页:纵向等,则效果很好。
如果添加横向A4页面,它也可以使用。但是,在我添加了一个横向页面并尝试添加一个肖像后,该风景被移回了一个肖像,并且文档的整个格式中断了。
我怀疑这与循环内的addPage()有关系。为什么在应用-> useTemplate时不能正确旋转?
我监督了一个叫做-> getTemplateSize()的函数。
这是一个有效的代码段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $pdf = new FPDI(); $pagecount = $pdf->setSourceFile($orgpdfpath); for($i = 1; $i <= $pagecount; $i++){ $tplidx = $pdf->importPage($i); $specs = $pdf->getTemplateSize($tplidx); $pdf->addPage($specs['h'] > $specs['w'] ? 'P' : 'L'); $pdf->useTemplate($tplidx); } $pdf->addPage($pdforientation); $pdf->Image($imgpath,$pdfxaxis,$pdfyaxis,$pdfwith,$pdfheight); $pdf->Output($orgpdfpath,'F'); |
如果您定义书房方向,这可能会对一个或另一个有所帮助,并且不适用于pdf生成。我在横向模式下在AddPage()上更改了宽度和高度。可能应该自动完成此操作,但是在我的情况下,与PDFmerger(fpdf / fpdi的包装器类)结合使用就不会。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $fpdi = new FPDI; $count = $fpdi->setSourceFile($filename); for($i=1; $i<=$count; $i++) { $template = $fpdi->importPage($i); $size = $fpdi->getTemplateSize($template); $orientation = ($size['h'] > $size['w']) ? 'P' : 'L'; if ($orientation =="P") { $fpdi->AddPage($orientation, array($size['w'], $size['h'])); } else { $fpdi->AddPage($orientation, array($size['h'], $size['w'])); } $fpdi->useTemplate($template); } |
顺便说一句,如果您不能保证所有文档都为A4(这不是您的问题,但这是我的问题导致我问到这个问题),也可以使用模板的大小来设置通过在第二个arg:
中将大小作为数组传递来生成文件的页面大小
1 2 3 4 | $pdf->AddPage( ( $size['w'] > $size['h'] ) ? 'L' : 'P', [ $size['w'], $size['h'] ] ); |