Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > FPDF c страницы с разными параметрами


Автор: Ninazu 1.5.2013, 15:44
Стоит задача добавить водный знак на уже существующий PDF.
Казалось бы тривиальная задача. Вооружившись найденными на просторах модулями FPDF и FPDI. Всё бы хорошо. Но они коверкают "нестандартные документы" вроде этого.
user posted image
Получается вот такая кака с фиксированными страницами
user posted image
Так копирую cтраницы из оригинального документа.
Код

$pagecount = $pdf->setSourceFile($fname);
for ($n = 1; $n <= $pagecount; $n++) {
  $pdf->AddPage();
  $tplidx = $pdf->ImportPage($n);
  // $tplidx-> ????
  $pdf->useTemplate($tplidx);
}
$pdf->Output($tmpname);

Может кто-то уже сталкивался? Либо знает место где пофиксить, а то модули громадные я в них теряюсь

Автор: Ninazu 2.5.2013, 17:31
Может кому-то пригодиться
Код

$pagecount = $pdf->setSourceFile($fname);
for ($n = 1; $n <= $pagecount; $n++) {
    $tplidx = $pdf->ImportPage($n);
    $specs = $pdf->getTemplateSize($tplidx);
    $mixd = array($specs['w'], $specs['h']);
    $pdf->addPage($specs['w'] < $specs['h'] ? 'P' : 'L',$mixd);
    $pdf->useTemplate($tplidx);
}
$pdf->Output($tmpname);

                

Автор: IgorIV 2.5.2013, 19:15
Ninazu, а ты бы не мог сказать в чём разница между кодами?
А так - спасибо. Пригодится ...

Автор: Ninazu 2.5.2013, 19:20
Просто в первом посте я еще не знал как узнать параметры страницы, и выставить их при добавлении новой

Алгоритм получился такой

1. Открываем файл источник
2. В цикле проходим по всем страницам.
3. Получаем текущую страницу
4. Узнаём её высоту и ширину
5. Смотрим пропорции и определяем ориентацию, альбомная/книжная
6. Создаём новый лист уже с учётом ориентации и размеров страницы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)