FPDI удалить страницу из вывода PDF

я использую FPDF а также FPDI сделать следующее

require_once('pdfs/fpdf.php');
require_once('pdfs/fpdi.php');

// initiate FPDI
$pdf = new FPDI();
// set the sourcefile
$pdf->setSourceFile('pdfs/originals/document.pdf');

//for ($i = 1; $i < 43; $i++) {
for ($i = 1; $i < 10; $i++) {

$pdf->AddPage();
$tplidx = $pdf->ImportPage($i);
$pdf->useTemplate($tplidx, 10, 0, 200);

С этим есть ли способ скрыть страницу от окончательного вывода в зависимости от операторов if? Например, если $middlepages равно или больше 2, мне нужно показать 2 определенные страницы, но если $middlepages 1, мне нужно показать только первую страницу из 2.

0

Решение

Похоже, никто не дошел до этого вопроса … до сих пор. Вот основы рабочего процесса FPDI, прямо с их документация:

  1. Определите документ, чтобы взять страницы из
  2. Импортировать существующую страницу документа
  3. Использовать импортированную страницу на странице, созданной с помощью FPDF

Это простой пример FPDI в действии:

$pdf = new FPDI();
$pageCount = $pdf->setSourceFile('file.pdf');

//  Iterate through every page
for( $pageNo=1; $pageNo<=$pageCount; $pageNo++ )
{
$templateId = $pdf->importPage($pageNo);

//  Determine if page is portrait or landscape
$size = $pdf->getTemplateSize($templateId);

if( $size['w']>$size['h'] )
$pageFormat = 'L';  //  landscape
else
$pageFormat = 'P';  //  portrait

$pdf->addPage($pageFormat,array($size['w'],$size['h']));
$pdf->useTemplate($templateId);
}

$pdf->Output();

Большой! Теперь давайте посмотрим на ваше конкретное желание, которое заключается в добавлении только определенного количества страниц. Как видите, мы используем for цикл для перебора всех импортированных страниц документа, начиная со страницы 1 и заканчивая последней страницей включительно. Если вы хотите изменить, какие страницы добавляются, все, что вам нужно сделать, это изменить начальную и конечную точки для for петля. Идея не в том, чтобы «скрыть» страницу, а в том, чтобы импортировать только те страницы, которые мы хотим видеть в конечном результате.

Вот простой пример. Я собираюсь определить некоторые константы для представления различных схем добавления страниц:

const PDF_FIRSTPAGE     = 1;
const PDF_MIDDLEPAGES   = 2;

Перед циклом импорта страниц я пройду через этот переключатель, чтобы определить начальную и конечную страницы для каждого условия. Это после первоначального объявления PDF. Обратите внимание, как я проверяю значения $pageCount чтобы я не пытался импортировать несуществующие страницы:

switch( $loopCondition )
{
//  By default, include everything
default:
$pageStart  = 1;
$pageEnd    = $pageCount;
break;
//  Include only the first page
case PDF_FIRSTPAGE:
$pageStart  = 1;
$pageEnd    = 1;
break;
//  Include pages 2-4, but only if those pages exist
case PDF_MIDDLEPAGES:
if( $pageCount>=2 )
{
$pageStart = 2;
if( $pageCount>=4 )
{
$pageEnd = 4;
}
else
{
$pageEnd = $pageCount;
}
}
else
{
$pageStart  = 1;
$pageEnd    = 1;
}
break;
}

Наконец, я изменяю for цикл вы видели выше:

for( $pageNo=$pageStart; $pageNo<=$pageEnd; $pageNo++ )

Теперь, если я установлю свою переменную $loopCondition равно PDF_MIDDLEPAGES Я получаю только страницы 2-4, если в документе изначально было 4 или более страниц. Если я использую 3-страничный документ, я получаю страницы 2-3. Вы должны изменить условия так, чтобы они наилучшим образом соответствовали вашим потребностям, поскольку я не знаю природу файлов PDF, которые вы планируете импортировать, но я думаю, что с помощью этого поста вы сможете выяснить все, что вам нужно знать о том, как использовать FPDI выборочно включать определенные страницы из исходного документа PDF. Удачного кодирования!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]