【问题标题】:Using FPDI to open a PDF and write text to it使用 FPDI 打开 PDF 并向其写入文本
【发布时间】:2017-09-19 20:19:00
【问题描述】:

我正在尝试使用此库打开 PDF 并向其中添加文本:

https://www.setasign.com/products/fpdi/downloads/

这是演示代码:

https://www.setasign.com/products/fpdi/demos/simple-demo/#p-283

我已经为此工作了好几天,但我已经无能为力了。关于无法找到此文件或未定义该类的一系列错误一直是不间断的。有没有一种简单的方法来包含一个类文件并开始使用它?使用 Composer 似乎把很多文件放在了一个地方,以至于我几乎无法理解我应该做什么。

非常感谢您。

【问题讨论】:

    标签: php pdf fpdi


    【解决方案1】:

    我会在这里尝试回答你的问题,因为我也遇到过同样的事情。

    所以,我首先下载了您已经完成的 FPDI。在挣扎并弄清楚为什么我无法让它工作之后,我发现我错过了另一个图书馆。所以,去这里:FPDF

    一旦你下载了它,并将它包含在同一个文件夹中并包含它,你应该很高兴。例如:

    require_once("_include/fpdf/fpdf.php");
    require_once("_include/fpdi/src/autoload.php");
    use setasign\Fpdi\Fpdi;
    

    一旦你在文件的顶部有了它,你就可以尝试类似的东西:

    $newfname = 'tempFile'.date("Y-m-d h:m:s").'.pdf';
       $file = fopen ($url, 'rb');
       if ($file) {
           $newf = fopen ("_data/$newfname", 'wb');
           if ($newf) {
               while(!feof($file)) {
                   fwrite($newf, fread($file, 1024 * 8), 1024 * 8);
               }
           }
       }
       if ($file) {
           fclose($file);
       }
       if ($newf) {
           fclose($newf);
       }
    
       $pdfName = $filename.".pdf";
       $file = fopen("_data/$newfname", 'rb');
       if($file) {
           $newPdfF = fopen("_data/$pdfName", 'wb');
           if($newPdfF) {
               // Now let us use this file to try and remove the bottom logos.
               $pdf = new Fpdi();
               $pageCount = $pdf->setSourceFile($file);
               // Iterate through our pages
               for($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
                   // import our page
                   $templateId = $pdf->importPage($pageNo);
                   // Add our new page
                   $pdf->AddPage();
    
                   $pdf->useTemplate($templateId, ['w'=>200, 'h'=>200]);
                   $pdf->SetFont('Helvetica');
                   $pdf->setX(170);
                   $pdf->Write(0, $fileDateRun); // For writing text
                   $pdf->Image('images/image.png', 0, 257); // For writing an image
              }
              $pdf->Output('D', "_data/$pdfName");
              unlink("_data/$newfname"); // delete temp file
              unlink("_data/$pdfName"); // delete the other temp file
          }
      }
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的回答!我相信我做了一些类似于你所做的事情来让它工作。由于超出预算且时间紧迫,我没有时间发布我的解决方案。
    • @RobinBaker - 太棒了。我知道你的问题在我回答时已经相当老了。但是,如果其他人正在寻找答案,那就在这里。如果您想接受答案,那就太好了。
    • 唯一的问题是,当你这样做时,所有链接都会丢失...... :(
    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多