我正在使用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 :(得分:1)
看起来没有人知道这个问题......直到现在。以下是FPDI工作流程的基础知识,直接来自documentation:
这是一个简单的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
循环的起点和终点即可。这个概念不是为了隐藏&#34;一个页面,而只是导入我们想要在最终结果中看到的页面。
这是一个简单的例子。我将定义一些常量来表示不同的页面添加方案:
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
,那么如果文档原来有4页或更多页面,我只会将2-4页作为输出。如果我使用3页文档,我会得到第2-3页。您应该更改最适合您需求的条件,因为我不知道您计划导入的PDF文件的性质,但我想在这篇文章中您应该能够弄清楚如何使用FPDI需要知道的一切选择性地包括源PDF文档中的某些页面。快乐的编码!