2013-02-06 24 views
1

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

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

  • TCPDF不能修改,只能结合FPDI(和FPDI只能处理PDF格式的版本升级到1.4免费版本)
  • Zend_PDF(如上所述)只能处理文件为PDF版本最多1.4。也许这是一个想法,从github尝试来自ZF2的Zend_Pdf版本?
  • FPDF只能处理文件为PDF版本1.4,因为我发现

是否有我需要的任何其他PHP PDF库?

+0

你是否真的遇到过Zend_Pdf的问题?页面是PDF中明确定义的独立对象,因此如果您使用Zend_Pdf打开PDF文件,并且只需添加大量附加页面,则机会非常高(如果Zend_Pdf表现良好),那么事情将继续发挥作用。 –

+0

是的,我在版本1.5中遇到了PDF问题。 错误:“交叉引用流尚不支持。” –

+1

@DavidvanDriessche根据[Zend_PdfEinführung](http://framework.zend.com/manual/1.12/de/zend.pdf.introduction.html#fnid1),仅支持加载V1.4(Acrobat 5)PDF文档。我认为这意味着不支持交叉引用流。 rescueAnn似乎需要他们的支持。 – mkl

回答

0

它似乎FPDI可以做不同的PDF文档的mergin,这样你就可以建立你的第一页的那么你的其他页面,并将其与指定的顺序(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?

+0

你说得对。但实际上我正在寻找一种合并的自由可能性。 如果我找不到,我会记住这一点。无论如何,购买PDFlib将会更加昂贵。 –

相关问题