2016-10-06 37 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)は、SetaPDF-Mergerのように、低レベルで動作し、この動作を修正するdemoをビルドする他の非フリーPHPコンポーネントを提供しています。

+0

ありがとうございました。私はFPDIを使用してページを抽出しているオリジナルのpdfを作成しています。ページを個別に抽出できるように、イメージを1つの辞書に保存しないようにする方法がありますか? –

+0

いいえ、FPDFは単一のグローバル・リソース・ディクショナリを使用するためです。 –

関連する問題