FPDF, FPDI - как с помощью PHP объединить отдельные файлы с уникальным текстом?

Я застрял в использовании fpdf и fpdi.

Я использую этот код для создания 1 pdf-файла из 5 или более файлов (! Важно) и хотел бы ввести уникальный текст на каждой странице. код в его текущей форме помещает page01test на каждую страницу, а не page02test на страницу 2 и т. д.

Каждый импортированный документ состоит из одной страницы.

Я получил базу этого кода из: http://www.setasign.com/products/fpdi/demos/concatenate-fake/

require('fpdf.php');
require('fpdi.php');
class ConcatPdf extends FPDI
{
public $files = array();

public function setFiles($files)
{
    $this->files = $files;
}

public function concat()
{
    foreach($this->files AS $file) {
        $pageCount = $this->setSourceFile($file);
        for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
            $tplIdx = $this->ImportPage($pageNo);
            $this->AddPage();
            $this->useTemplate($tplIdx);
            $this->AddFont('NotoSans', '', 'notosans.php');
            $this->SetFont('NotoSans', '', 18);
            $this->SetTextColor(63,76,89);

            if ($pageNo == 1) {
                $this->SetXY(55, 94);
                $this->Write(5, 'page01test');
            }
            if ($pageNo == 2) {
                $this->SetXY(55, 94);
                $this->Write(5, 'page02test');
            }
            if ($pageNo == 3) {
                $this->SetXY(55, 94);
                $this->Write(5, 'page03test');
            }
            if ($pageNo == 4) {
                $this->Write(5, 'page04test');
            }
            if ($pageNo == 5) {
                $this->SetXY(55, 94);
                $this->Write(5, 'page05test');
            }
        }           
    }
 }
}


$pdf = new ConcatPdf();
$pdf->setFiles(array("Proposal1.pdf", "Proposal2.pdf","Proposal3.pdf", "Proposal4.pdf","Proposal5.pdf"));
$pdf->concat();
$pdf->Output();

person Searlee    schedule 31.07.2014    source источник
comment
У вас есть вопрос или проблема?   -  person Sean    schedule 31.07.2014
comment
Извините, я не понял, что не очень ясно дал понять. он не работает в текущей форме, мне было интересно, как я могу изменить код, чтобы текст на каждой странице был уникальным, поэтому page01test на странице 1, page02test на странице 2 и т. д.   -  person Searlee    schedule 31.07.2014
comment
Код выглядит нормально ... Вы убедились, что это не проблема с кешем? Попробуйте заставить браузер загрузить новую версию, добавив случайный параметр get к URL-адресу.   -  person Jan Slabon    schedule 01.08.2014
comment
Он также не работает при добавлении параметра get. Я в тупике ...   -  person Searlee    schedule 01.08.2014


Ответы (1)


Я играл с этим и сам нашел ответ методом проб и ошибок,

require('customervalues.php');
require('fpdf.php');
require('fpdi.php');

class ConcatPdf extends FPDI
{
public $files = array();

public function setFiles($files)
{
    $this->files = $files;
}

public function concat()
{
    foreach ($this->files AS $file) {
        $pageCount = $this->setSourceFile($file);
        for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
            $tplIdx = $this->ImportPage($pageNo);
            $this->AddPage();
            $this->useTemplate($tplIdx);
            $this->AddFont('NotoSans', '', 'notosans.php');
            $this->SetFont('NotoSans', '', 18);
            $this->SetTextColor(63,76,89);
            if ($file == 'Proposal1.pdf') {
                $this->SetXY(55, 94);
                $this->Write(5, 'page01test');
            }
            if ($file == 'Proposal2.pdf') {
                $this->SetXY(55, 94);
                $this->Write(5, 'page02test');
            }
            if ($file == 'Proposalxl.pdf') {
                $this->SetXY(55, 94);
                $this->Write(5, 'page03test');
            }
            if ($file == 'Proposal4.pdf') {
                $this->SetXY(55, 94);
                $this->Write(5, 'page04test');
                $this->SetXY(55, 150);
                $this->Write(5, 'page04test2');
            }
            if ($file == 'Proposal5.pdf') {
                $this->SetXY(55, 94);
                $this->Write(5, 'page05test');
            }

        }           
    }
}
}

$pdf = new ConcatPdf();
$pdf->setFiles(array("Proposal1.pdf", "Proposal2.pdf","Proposalxl.pdf", "Proposal4.pdf","Proposal5.pdf"));
$pdf->concat();
$pdf->Output();

Это позволяет мне писать уникальный текст на каждой странице и экспортировать его как окончательный документ. могут быть более дешевые способы сделать это, но они подходят для моих нужд.

person Searlee    schedule 01.08.2014
comment
Разве уникальный текст на каждой странице не сильно отличается от уникального текста для каждого документа? Ваш результат не соответствует вашему первоначальному вопросу. - person Jan Slabon; 01.08.2014
comment
Первоначальный вопрос гласит, что каждый файл будет иметь уникальный текст, каждый файл - это только одна страница, извините, я не разъяснил это, но я не смог найти другого способа сделать это, так как код, который вы сказали, выглядел нормально не сработало. - person Searlee; 04.08.2014