Похоже, никто не задавался этим вопросом... до сих пор. Вот основы рабочего процесса FPDI, прямо из их документации а>:
- Определите документ, из которого нужно взять страницы
- Импорт существующей страницы документа
- Используйте импортированную страницу на странице, созданной с помощью 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. Удачного кодирования!
person
Muhammad Abdul-Rahim
schedule
06.05.2015