2016-10-06 7 views
0

Я использую FPDF и FPDI, чтобы извлечь 2 страницы из pdf-документа, который обычно составляет около 28 страниц. PDF-файлы - это в основном страница с изображением, заполняющим каждую страницу целиком и размером около 35-40 МБ.Размер выходного файла 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 использует один глобальный словарь ресурсов. –