这看起来是最简单的事情,但我无法让它工作。
我需要将文本添加到多页 pdf 的第一页(可以是任意页数)
在两页 pdf 上使用此代码(没有 for 循环,只使用 $pdf->importPage(2))我最终得到两页,但第二页是第一页的重复。文本仅写在第一页上,这很好,但我需要输出 pdf 中包含的所有页面。这是我的代码
// Original file with multiple pages
$fullPathToFile = 'full/path/to/file.pdf';
class PDF extends FPDI {
var $_tplIdx;
function Header() {
global $fullPathToFile;
if (is_null($this->_tplIdx)) {
$this->setSourceFile($fullPathToFile);
$this->_tplIdx = $this->importPage(1);
}
$this->useTemplate($this->_tplIdx);
}
function Footer() {}
}
// initiate PDF
$pdf = new PDF();
$pdf->setFontSubsetting(true);
// add a page
$pdf->AddPage();
// The new content
$pdf->SetFont("helvetica", "B", 14);
$pdf->Text(10,10,'Some text here');
// How to get the number of pages of original pdf???
// $numPages = $pdf->getNumPages(???);
// Carry on adding all remaining pages starting from page 2
for($i=2;$i<=$numPages;$i++) {
// Add another page
$pdf->AddPage();
// Do I need to declare the source file here?
// $pdf->setSourceFile($fullPathToWD);
$pdf->importPage($i);
}
// Output the file as forced download
$pdf->Output('theNewFile.pdf', 'D');
文档链接
TCPDF 类
http://www.tcpdf.org/doc/code/classTCPDF.html#a5171e20b366b74523709d84c349c1ced
FPDI 类(class)
http://www.setasign.de/support/manuals/fpdi/
FPDF_TPL 类
http://www.setasign.de/support/manuals/fpdf-tpl/
最佳答案
解决了我的问题...
// Original file with multiple pages
$fullPathToFile = 'full/path/to/file.pdf';
class PDF extends FPDI {
var $_tplIdx;
function Header() {
global $fullPathToFile;
if (is_null($this->_tplIdx)) {
// THIS IS WHERE YOU GET THE NUMBER OF PAGES
$this->numPages = $this->setSourceFile($fullPathToFile);
$this->_tplIdx = $this->importPage(1);
}
$this->useTemplate($this->_tplIdx);
}
function Footer() {}
}
// initiate PDF
$pdf = new PDF();
$pdf->setFontSubsetting(true);
// add a page
$pdf->AddPage();
// The new content
$pdf->SetFont("helvetica", "B", 14);
$pdf->Text(10,10,'Some text here');
// THIS PUTS THE REMAINDER OF THE PAGES IN
if($pdf->numPages>1) {
for($i=2;$i<=$pdf->numPages;$i++) {
$pdf->endPage();
$pdf->_tplIdx = $pdf->importPage($i);
$pdf->AddPage();
}
}
// Output the file as forced download
$pdf->Output('theNewFile.pdf', 'D');
您可以通过添加此行的第一部分来获得页数
$this->numPages = $this->setSourceFile($fullPathToFile);
并查看倒数第二个代码块 - for 循环添加页面的其余部分。
不知道是不是应该这样操作?我在几个地方读到它甚至不可能实现这一点,而且文档中也没有提供代码。但是,这有效,希望它可以帮助某人。
关于php - 多页的 TCPDF 和 FPDI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14546275/