【问题标题】:Which PDF-Library can add pages in an existing PDF > 1.4?哪个 PDF 库可以在现有 PDF > 1.4 中添加页面?
【发布时间】:2013-02-06 09:01:24
【问题描述】:

我需要在现有 PDF 文档的第一页之后和最后一页中添加页面。 我曾经用 Zend_Pdf 实现它,但发现它只能处理交叉引用表未压缩为流的 PDF(PDF 1.5 版中引入的功能)。

所以我正在寻找一个 PHP PDF-Library,它可以修改现有的 PDF 文档,其中包含对象和存储在流中的外部参照表,如 ISO-32000-1(基于 PDF-1.7)中所述。

  • TCPDF 不能修改,只能与FPDI 结合使用(并且FPDI 在免费版中只能处理最高1.4 的PDF-Version)
  • Zend_PDF(如上所述)只能处理最高 1.4 版本的 PDF 文件。也许从 github 尝试 ZF2 的 Zend_Pdf 版本是一个想法?
  • 我发现 FPDF 只能处理 PDF 版本 1.4 的文件

还有其他 PHP PDF 库满足我的需要吗?

【问题讨论】:

  • 您真的遇到过 Zend_Pdf 的问题吗?页面是 PDF 中定义明确的独立对象,因此如果您使用 Zend_Pdf 打开一个 PDF 文件并且您所做的只是添加一些额外的页面,那么事情将继续工作的可能性非常高(如果 Zend_Pdf 表现良好)。
  • 是的,我在 1.5 版中遇到了 PDF 问题。错误:“尚不支持交叉引用流。”
  • @DavidvanDriessche 根据Zend_Pdf Einführung,仅支持加载 V1.4 (Acrobat 5) PDF 文档。我认为这意味着不支持交叉引用流。 rescueAnn 似乎需要他们的支持。
  • 啊,我的错 - 有道理。

标签: php pdf fpdf zend-pdf pdflib


【解决方案1】:

似乎 FPDI 可以合并不同的 pdf 文档,因此您可以先构建第一页,然后再构建其他页面,然后按指定顺序将其合并为一个页面 (Merge PDF files with PHP)

class concat_pdf extends FPDI {
     var $files = array();
     function setFiles($files) {
          $this->files = $files;
     }
     function concat() {
          foreach($this->files AS $file) {
               $pagecount = $this->setSourceFile($file);
               for ($i = 1; $i <= $pagecount; $i++) {
                    $tplidx = $this->ImportPage($i);
                    $s = $this->getTemplatesize($tplidx);
                    $this->AddPage('P', array($s['w'], $s['h']));
                    $this->useTemplate($tplidx);
               }
          }
     }
}

/* uses example :
$pdf =& new concat_pdf();
$pdf->setFiles(array("doc.pdf","pauta.pdf", "4bp.pdf", "5bp.pdf"));
$pdf->concat();
//$pdf->Output("newpdf.pdf", "I");//for printing on screen
$pdf->Output("newpdf.pdf", "F");//for saving it
*/

但是对于 1.4 以上的版本,使用了一个新的压缩,并且 FPDI 通过解析器包支持它,但它不是免费的(100 欧元)。你也可以去Is there a way to make FPDF/FPDI or Zend_Pdf support the parsing of PDFs greater than 1.4?看看。

【讨论】:

  • 你是对的。但实际上我正在寻找一种免费的可能性来进行合并。如果我找不到,我会记住这一点。无论如何,购买 PDFlib 会贵得多。
猜你喜欢
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多