Редактирование существующей PDF-страницы с несколькими файлами с использованием FPDF и FPDI
Я – usinf FPDI, чтобы отредактировать существующий файл PDF, и его работа идеально подходит для одной страницы. Как можно видеть, я редактирую мой $tplIdx = $pdf->importPage(1);
первая страница. У меня есть шестистраничный файл pdf и вам нужно добавить 2 переменные на другой странице.
Возможно ли это? Как?
<?php require_once('fpdf.php'); require_once('fpdi.php'); // initiate FPDI $pdf = new FPDI(); // add a page $pdf->AddPage(); // set the sourcefile $pdf->setSourceFile('ex.pdf'); // import page 1 $tplIdx = $pdf->importPage(1); // use the imported page and place it at point 10,10 with a width of 100 mm $pdf->useTemplate($tplIdx, 10, 10, 200); // now write some text above the imported page $pdf->SetFont('Arial'); $pdf->SetTextColor(255,0,0); $pdf->SetXY(50, 50); $pdf->Write(0, "Ajay Patel"); $pdf->Output('newpdf1.pdf', 'D'); ?>
Заранее спасибо !
3 Solutions collect form web for “Редактирование существующей PDF-страницы с несколькими файлами с использованием FPDF и FPDI”
Трудно попробовать без установки FPDI. Но основная идея будет следующей, я верю:
<?php require_once('fpdf.php'); require_once('fpdi.php'); // initiate FPDI $pdf = new FPDI(); /* <Virtual loop> */ $pdf->AddPage(); $pdf->setSourceFile('ex.pdf'); $tplIdx = $pdf->importPage(1); $pdf->useTemplate($tplIdx, 10, 10, 200); // now write some text above the imported page $pdf->SetFont('Arial'); $pdf->SetTextColor(255,0,0); $pdf->SetXY(50, 50); $pdf->Write(0, "Ajay Patel"); /* </Virtual loop/> */ $pdf->AddPage(); //$pdf->setSourceFile('ex.pdf'); $tplIdx = $pdf->importPage(2); $pdf->useTemplate($tplIdx, 10, 10, 200); // dynamic parameter based on your page $pdf->SetFont('Arial'); $pdf->SetTextColor(255,0,0); $pdf->SetXY(50, 50); $pdf->Write(0, "Ajay Patel2"); $pdf->Output('newpdf1.pdf', 'D'); ?>
Если это сработает, вы можете избавиться от второго блока кода и выйти из этого цикла (и динамического позиционирования).
Спасибо @JA Ваша идея работает для меня
Я просто написал ответ другим, чтобы помочь им
<?php require_once('fpdf.php'); require_once('fpdi.php'); // initiate FPDI $pdf = new FPDI(); // add a page $pdf->AddPage(); // set the sourcefile $pdf->setSourceFile('newpdf.pdf'); // import page 1 $tplidx = $pdf->importPage(1); for ($i = 1; $i < 6; $i++) { $tplidx = $pdf->ImportPage($i); $pdf->useTemplate($tplidx, 10, 10, 200); $pdf->AddPage(); $pdf->SetFont('Arial'); $pdf->SetTextColor(0,0,0); $pdf->SetFontSize(8); if ($i==3) { $pdf->SetXY(50, 124); $pdf->Write(1, "Ajay Patel"); $pdf->SetXY(50, 133); $pdf->Write(1, date("d/m/Y")); } if ($i==4) { $pdf->SetXY(50, 171); $pdf->Write(1, "Ajay Patel"); $pdf->SetXY(50, 185); $pdf->Write(1, date("d/m/Y")); } } $pdf->Output('newpdf1.pdf', 'D'); ?>
Вы должны действительно использовать возвращаемое значение setSourceFile для перебора по всем страницам:
Описание
public int FPDI::setSourceFile ( string $filename )
В зависимости от версии PDF-документа используемого документа версия PDF в результирующем документе будет скорректирована до более высокой версии.
параметры
$filename : string // A valid path to the PDF document from which pages should be imported from
Возвращаемые значения
Количество страниц в документе