我的服务器上有一大堆pdfs,下载时需要在每页上附加文字。我正在使用fpdf尝试打开文件,将文本附加到每个页面,关闭文件并提供给浏览器。
$pdf = new FPDI();
$pdf->setSourceFile($filename);
// import page 1
$tplIdx = $pdf->importPage(1);
//use the imported page and place it at point 0,0; calculate width and height
//automaticallay and ajust the page size to the size of the imported page
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);
// now write some text above the imported page
$pdf->SetFont('Arial', '', '13');
$pdf->SetTextColor(0,0,0);
//set position in pdf document
$pdf->SetXY(20, 20);
//first parameter defines the line height
$pdf->Write(0, 'gift code');
//force the browser to download the output
$pdf->Output('gift_coupon_generated.pdf', 'D');
header("location: ".$filename);
在这一刻,这只是试图将一些文本放在pdf的任何地方并保存但我得到错误
FPDF error: You have to add a page first!
如果我能做到这一点,那么我需要它将文本附加到文档中的每个页面而不仅仅是1,不知道如何阅读文档后如何做到这一点
答案 0 :(得分:10)
尝试以下
require_once('fpdf.php');
require_once('fpdi.php');
$pdf =& new FPDI();
$pdf->AddPage();
将此页面用作模板,然后
$pdf->setSourceFile($filename);
// import page 1
$tplIdx = $pdf->importPage(1);
//use the imported page and place it at point 0,0; calculate width and height
//automaticallay and ajust the page size to the size of the imported page
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);
如果您有任何错误,请告诉我
答案 1 :(得分:5)
由于您希望所有页面都包含文本,因此一种方法是将代码放在循环中。
像这样:
// Get total of the pages
$pages_count = $pdf->setSourceFile('your_file.pdf');
for($i = 1; $i <= $pages_count; $i++)
{
$pdf->AddPage();
$tplIdx = $pdf->importPage($i);
$pdf->useTemplate($tplIdx, 0, 0);
$pdf->SetFont('Arial');
$pdf->SetTextColor(255,0,0);
$pdf->SetXY(25, 25);
$pdf->Write(0, "This is just a simple text");
}
答案 2 :(得分:1)
您可以使用Dhek图形工具设计JSON格式的模板,定义稍后要在现有PDF上添加的区域(边界,名称,...)(使用FPDF和动态数据)。请参阅https://github.com/cchantep/dhek/blob/master/README.md#php-integration上的文档。