编辑现有的pdf导致创建新的pdf,其中旧数据被新文件覆盖

时间:2014-02-13 06:57:38

标签: php fpdf fpdi

我在编辑现有的pdf时遇到了问题。 这里我有一个pdf,我只想在pdf的每一页的第一行添加一个员工姓名。 但是当我尝试使用fpdf和fpdi执行此操作时,它将使用员工名称保存新的pdf,并且已从pdf中删除所有其他数据。 这是我用于编辑和保存pdf的代码。

<code>
<?php
define('FPDF_FONTPATH','font/');
require_once('fpdf.php');
require_once('fpdi.php');

$pdf = new FPDI();
// add a page
$pdf->AddPage();
// set the sourcefile
$pagecount = $pdf->setSourceFile('upload/linebreak.pdf');

// import page 1
$tplidx = $pdf->importPage(1);
for ($i = 1; $i < $pagecount; $i++) { 
              $tplidx = $pdf->ImportPage($i); 


                     $pdf->useTemplate($tplidx, 10, 10, 200);
                     $pdf->AddPage();

                     $pdf->SetFont('Arial');
                     $pdf->SetTextColor(0,0,0);
                     $pdf->SetFontSize(8);

                     if ($i>=1) {
                        //$pdf->SetXY(50, 124);
                        $pdf->Write(1, "Emp Name : Sanjay Singh");
                     }

                }

$pdf->Output("upload/new_linebreak_pdf.pdf", "F");
?>
<code>

我的linebreak.pdf有一些类似这样的数据(这是我们组织的员工规则..........这是我们组织的员工规则......这是员工我们组织的规则......这是我们组织的员工规则......这是我们组织的员工规则)

在此我想在第一行添加一个Employee Name但是在编辑之后它会生成这样的新pdf(Emp Name:Sanjay Singh) 其他已经存在的数据将被删除。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的问题是您以错误的顺序调用FPDI的方法。以下是要采取的步骤:

  1. 导入您要修改的页面,获取模板
  2. 在文档中添加新的空白页
  3. 将模板加载到该文档中
  4. 将其他内容写入该文档
  5. 以下是说明上述概念的简要代码示例。我测试了这个并得到了预期的输出。

    $pdf = new FPDI();
    $pageCount = $pdf->setSourceFile('file.pdf');
    
    //  Iterate through every page
    for( $pageNo=1; $pageNo<=$pageCount; $pageNo++ )
    {
        //  Import page
        $templateId = $pdf->importPage($pageNo);
        $pdf->getTemplateSize($templateId);
        $pdf->addPage('P');
        $pdf->useTemplate($templateId);
    
        //  Modify page
        $pdf->SetFont('Arial');
        $pdf->SetTextColor(0,0,0);
        $pdf->SetFontSize(8);
        $pdf->Text(50,124,"Emp Name : Sanjay Singh");
    }
    
    $pdf->Output("upload/new_linebreak_pdf.pdf", "F");