我正在使用FPDF http://www.fpdf.org/和FPDI http://www.setasign.com/products/fpdi/about/
我有一个2页的pdf文件。 我需要将第一页导入新的pdf并在第一页上添加两个文本。然后我需要复制该页面,以便生成的pdf可能包含两个相同内容的页面。
我正在使用的代码是
require_once ('fpdf/fpdf.php');
require_once ('fpdf/fpdi.php');
$file = "myexistingpdf.pdf";
$pdf = &new FPDI();
$pdf -> AddPage();
$pagecount = $pdf -> setSourceFile($file);
$tpl = $pdf -> importPage(1);
$pdf -> useTemplate($tpl);
$pdf -> SetY(116);
$pdf -> SetX(-300);
$pdf -> SetFont('Times', 'B', 9);
$pdf -> Cell(0, 10, "Hello World", 0, 0, 'C');
$pdf -> SetY(22);
$pdf -> SetX(-358);
$pdf -> SetFont('Times', 'B', 8);
$pdf -> Cell(0, 10, "Date:", 0, 0, 'C');
$pdf -> Output("pdf.pdf", "I");
这很好用,我正在将现有pdf的第一页导入到新的pdf并且正在修改,但我不知道如何在不复制上述代码的情况下复制这个修改过的页面。知道怎么做吗?
答案 0 :(得分:0)
通常,您应该了解自己NOT modify a PDF document with FPDI。
您可以将代码放入一个简单的循环中以获得所需的结果:
$pdf = new FPDI();
$pagecount = $pdf -> setSourceFile($file);
$tpl = $pdf->importPage(1);
for ($i = 2; $i > 0; $i--) {
$pdf->AddPage();
$pdf->useTemplate($tpl);
$pdf->SetY(116);
$pdf->SetX(-300);
$pdf->SetFont('Times', 'B', 9);
$pdf->Cell(0, 10, "Hello World", 0, 0, 'C');
$pdf->SetY(22);
$pdf->SetX(-358);
$pdf->SetFont('Times', 'B', 8);
$pdf->Cell(0, 10, "Date:", 0, 0, 'C');
}
$pdf->Output("pdf.pdf", "I");
另一种解决方案可能是使用FPDF_TPL(FPDI的一部分)的模板功能:
$pdf = new FPDI();
$pagecount = $pdf -> setSourceFile($file);
$tpl = $pdf->importPage(1);
$pdf->AddPage();
// create the template
$newTpl = $pdf->beginTemplate();
$pdf->useTemplate($tpl);
$pdf->SetY(116);
$pdf->SetX(-300);
$pdf->SetFont('Times', 'B', 9);
$pdf->Cell(0, 10, "Hello World", 0, 0, 'C');
$pdf->SetY(22);
$pdf->SetX(-358);
$pdf->SetFont('Times', 'B', 8);
$pdf->Cell(0, 10, "Date:", 0, 0, 'C');
$pdf->endTemplate();
// now use the template
$pdf->useTemplate($newTpl);
// and again on the next page
$pdf->AddPage();
$pdf->useTemplate($newTpl);
$pdf->Output("pdf.pdf", "I");