【问题标题】:Editing a existing pdf lead to creating a new pdf where old data is overwritten by the new file编辑现有的 pdf 会导致创建新的 pdf,其中旧数据被新文件覆盖
【发布时间】:2014-02-13 06:57:38
【问题描述】:

我在编辑现有 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 有类似这样的数据(这是我们组织的员工规则............这是我们组织的员工规则......这是员工我们组织的规则.....这是我们组织的员工规则....这是我们组织的员工规则)

在此我想在第一行添加一个员工姓名,但编辑后它将生成新的 pdf 像这样(Emp Name : Sanjay Singh) 其他已经属于他们的数据将被删除。

提前致谢!

【问题讨论】:

    标签: php fpdf fpdi


    【解决方案1】:

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

    1. 导入要修改的页面,获取模板
    2. 向文档添加新的空白页
    3. 将模板加载到该文档中
    4. 向该文档写入其他内容

    这里是说明上述概念的简短代码示例。我已经对此进行了测试并得到了预期的输出。

    $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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多