我正在使用以下代码将新页面添加到我现有的PDF文档中并保存。
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()的函数。下面是一个工作片段:
$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');
BTW,如果你不能保证你的所有文档都是A4(这不是你的问题,但正是我的问题导致了这个问题),你也可以使用模板的大小来设置你生成的文件的页面大小,方法是在第二个arg:中以数组的形式传递大小
$pdf->AddPage(
( $size['w'] > $size['h'] ) ? 'L' : 'P',
[ $size['w'], $size['h'] ]
);
如果您定义了den方向,而它在pdf生成中不起作用,那么这可能会有所帮助。我在AddPage()上更改了横向模式下的宽度和高度。这可能应该自动完成,但在我的案例中,结合fpdf/fpdi的包装类PDFmerger,它并没有。
$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);
}