как добавить изображения на несколько страниц в pdf и скачать полный pdf

Я начал работать с fpdi с fpdf, и я пытаюсь добавить более одного изображения на несколько страниц, и, в конце концов, я хочу загрузить один PDF-файл с изображениями поверх страниц PDF. Проблема в том, что всегда загружается только последний PDF-файл с последней страницей. Почему я не могу скачать один файл со всеми изображениями?

foreach ($signatures as $signa) {
  $fileContent = file_get_contents('http://www.africau.edu/images/default/sample.pdf','rb');
  $pageCount = $pdf->setSourceFile(StreamReader::createByString($fileContent));
  $pdf->setSourceFile(StreamReader::createByString($fileContent));
  $tplId = $pdf->importPage($signa->page);
  $pdf->useTemplate($tplId, 10, 10, 100);
  $pdf->Image('signature.jpg', $signa->position->x, $signa->position->y, $signa->size->width, $signa->size->height);

  if($signa->page === 2) {
    $pdf->Output('D');   
  }
}

person Baruch Mashasha    schedule 26.03.2020    source источник
comment
Если вы не создадите PDF-файл в виде файла, а затем загрузите его после того, как закончите его создание, вы не сможете отправить в браузер более одного PDF-файла.   -  person Dave    schedule 26.03.2020
comment
Хорошо, как я могу дождаться завершения всего, а затем загрузить полный файл? @Дэйв   -  person Baruch Mashasha    schedule 26.03.2020
comment
Измените оператор вывода для записи в файл, затем используйте соответствующие заголовки и readfile для отправки вновь созданного файла в браузер.   -  person Dave    schedule 26.03.2020
comment
У вас нет примера? @Дэйв   -  person Baruch Mashasha    schedule 26.03.2020
comment
Боюсь, это не так, как работает SO. Документация для FPDF показывает параметры для output и способ отправки файла в браузер, который легко найти (с помощью Google или здесь, на SO). Это довольно тривиально, поскольку у вас уже есть большая часть того, что вам нужно.   -  person Dave    schedule 26.03.2020


Ответы (1)


Я нашел это решение и оно работает для меня.

Решение по моему коду:

$pdf = new Fpdi();
foreach ($signatures as $signa) {
$pdf->AddPage();
$fileContent = file_get_contents('http://www.africau.edu/images/default/sample.pdf','rb');
$pdf->setSourceFile(StreamReader::createByString($fileContent));
$tplId = $pdf->importPage($signa->page);
$pdf->useTemplate($tplId, 10, 10, 100);
$pdf->Image('signature.png', $signa->position->x, $signa->position->y, $signa->size->width, $signa->size->height);
}
$pdf->Output('newpdf1.pdf', 'D');   
person Baruch Mashasha    schedule 26.03.2020
comment
Вы должны переместить file_get_contents() за пределы цикла! И удалите 2-й параметр. Если это URI локального файла, вместо этого следует использовать локальный путь! - person Jan Slabon; 26.03.2020