2016-10-06 131 views
0

我使用FPDFFPDI從通常約28頁長的pdf文檔中提取2頁。 pdf文件基本上是一個頁面,每頁完整填充圖片,大約35-40mb。FPDI輸出文件大小

當使用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(); 
} 

回答

0

FPDI副本頁面的所有資源。我猜你文件中的所有圖像都位於單個資源字典中。因爲這一切都將被複制。從現有PDF文檔中提取頁面時,這是一個常見問題。在不分析和解釋頁面內容流的情況下,不可能知道應該複製哪些資源。對於FPDI atm,沒有解決方案。

無論如何,我們(Setasign)提供其他非免費PHP組件,例如SetaPDF-Merger,它們在較低級別上工作,我們將爲其構建修復此行爲的demo

+0

感謝您的信息。我正在創建原始pdf,我也正在使用FPDI提取頁面。有沒有辦法,當這樣做,迫使圖像不被存儲在一個單一的字典,因此可以單獨提取頁面? –

+0

不,因爲FPDF使用單個全局資源字典。 –