FPDI输出文件大小

时间:2016-10-06 16:47:51

标签: php pdf pdf-generation fpdf fpdi

我正在使用FPDFFPDI从pdf文档中提取2页,通常大约28页。 pdf文件基本上是一个页面,图像完全填满每页,大约35-40mb。

使用FPDI从完整文档中提取最后2页并创建新文件时,新2页文件的文件大小几乎保持不变。任何想法为什么会这样?

以下是用于提取的基本代码:

public function extractPagesFromFile($file, $outputFileName, $numPages = 2) {
  $pageCount = $this->_fpdf->setSourceFile($file);
  if ($numPages < 0 || $numPages > $pageCount) {
    return false;
  }
  for ($pageNo = $pageCount - $numPages + 1; $pageNo < $pageCount + 1; $pageNo++) {
    $tplIdx = $this->_fpdf->ImportPage($pageNo);
    if (!isset($s)) {
      $s = $this->_fpdf->getTemplatesize($tplIdx);
    }
    $this->_fpdf->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h']));
    $this->_fpdf->useTemplate($tplIdx);
  }

  $this->_fpdf->Output('F', $outputFileName);
  $this->_fpdf->cleanUp();
}

1 个答案:

答案 0 :(得分:0)

FPDI复制页面的所有资源。我想你文件中的所有图像都位于一个资源字典中。因此,所有这些都将被复制。从现有PDF文档中提取页面时,这是一个常见问题。在不解析和解释页面内容流的情况下,不可能知道应该复制哪些资源。 FPDI atm没有解决方案。

无论如何,我们(Setasign)提供其他非免费的PHP组件,例如SetaPDF-Merger,它们在较低级别上工作,我们为此构建demo来修复此行为。< / p>