【发布时间】:2018-10-05 09:42:35
【问题描述】:
我正在尝试查找 setasign/fpdi 代码的示例。
我有一个多页的 pdf 文档。我想创建一个新的 pdf 来导入每个页面并添加一个背景(这个背景是另一个 pdf 文档 - 纵向或横向取决于根 pdf 页面)+一些额外的文本。
我找不到这个问题的正确示例,希望有人可以帮助我解决这个问题。
【问题讨论】:
标签: fpdi
我正在尝试查找 setasign/fpdi 代码的示例。
我有一个多页的 pdf 文档。我想创建一个新的 pdf 来导入每个页面并添加一个背景(这个背景是另一个 pdf 文档 - 纵向或横向取决于根 pdf 页面)+一些额外的文本。
我找不到这个问题的正确示例,希望有人可以帮助我解决这个问题。
【问题讨论】:
标签: fpdi
我找到了答案,我会在这里发布。也许有更好的方法... :-)
$portrait_backgroundpdf = "pdf/background_portrait.pdf";
$landscape_backgroundpdf = "pdf/background_landscape.pdf";
$originalpdf = "pdf/original.pdf";
// First get number of pages + orientations of original pdf
$temp_pdf = new Fpdi();
$count = $temp_pdf->setSourceFile($originalpdf);
$sizes = [];
for ($pageNo = 1; $pageNo <= $count; $pageNo++) {
$templateId = $temp_pdf->importPage($pageNo);
$size = $temp_pdf->getTemplateSize($templateId);
$sizes[$pageNo] = $size['orientation'];
}
// sizes is now an array like this example:
// [
// 1 => "P", <-- portrait
// 2 => "P", <-- portrait
// 3 => "L", <-- landscape
// 4 => "L", <-- landscape
// ]
// Now start the new PDF
$pdf = new Fpdi();
foreach($sizes as $page => $size) {
$pdf->AliasNbPages();
$pdf->AddPage();
if ($size == "P") {
$pdf->setSourceFile($portrait_backgroundpdf);
} else {
$pdf->setSourceFile($landscape_backgroundpdf);
}
$tplId = $pdf->importPage(1);
$pdf->useImportedPage($tplId, 0, 0, null);
$pdf->setSourceFile($pdfurl.$pastepdf);
$template = $pdf->importPage($page);
$pdf->useTemplate($template, 10, 30, 180);
// Do other pdf stuff here per page
}
$pdf->Output();
【讨论】: