2016-10-06 2 views
0

일반적으로 약 28 페이지 인 pdf 문서에서 2 페이지를 추출하려면 FPDFFPDI을 사용하고 있습니다. 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과 같은 다른 비 자유 PHP 구성 요소를 제공합니다. 하위 구성 요소는이 동작을 수정하는 demo을 빌드합니다.

+0

정보 주셔서 감사합니다. 나는 FPDI를 사용하여 페이지를 추출하는 원본 pdf를 만들었습니다. 페이지를 개별적으로 추출 할 수 있도록 이미지를 단일 사전에 저장하지 않도록하는 방법이 있습니까? –

+0

아니요. FPDF는 단일 전역 리소스 사전을 사용하기 때문에 아니요. –