2016-08-22 3 views
0

PDF 파일의 메타 데이터를 가져 오는 데 사용되었습니다. 나는 SMALOT pdf Parser와 TCPDF Parser를 사용하여 파일을 파싱했다.PHP PDF 파서 SMALOt 및 TCPDF 파서

나는 smalot pdf 구문을 사용하여 pdf 파일을 구문 분석 한 다음 TCPDF 파서 라이브러리를 사용하여 pdf 파일의 메타 데이터와 내용을 가져옵니다. 그 작은 PDF 파일에 대한 노력하지만 10 MB 또는 큰 PDF 파일 메모리 제한 exhuasted 및 실행 중지하고 어떤 오류가 발생하지 구문 분석. 1024M 메모리 제한을 설정합니다.

public function parseFile($filename) 
{ 
    return $this->parseContent($filename); 
} 
public function parseContent($filename) 
    { 
     // Create structure using TCPDF Parser. 
     ob_start(); 
     $parser = new \TCPDF_PARSER(file_get_contents($filename)); 
     list($xref, $data) = $parser->getParsedData(); 
//   print_r($tcpdf->getParsedData()); 
//   $parser = new \TCPDF_PARSER(ltrim($content)); 

     list($xref, $data) = $parser->getParsedData(); 
     unset($parser); 
     ob_end_clean(); 

     if (isset($xref['trailer']['encrypt'])) 
     { 
      throw new \Exception('Secured pdf file are currently not supported.'); 
     } 

     if (empty($data)) 
     { 
      throw new \Exception('Object list not found. Possible secured file.'); 
     } 

     // Create destination object. 
     $document = new Document(); 
     $this->objects = array(); 

     foreach ($data as $id => $structure) 
     { 
      $this->parseObject($id, $structure, $document); 
      unset($data[$id]); 
     } 

     $document->setTrailer($this->parseTrailer($xref['trailer'], $document)); 
     $document->setObjects($this->objects); 

     return $document; 
    } 
+0

질문/문제가 무엇입니까? 그 코드의 어느 부분이 의도 한대로 작동하지 않습니까? – cypherabe

+0

나는 smalot pdf 구문을 사용하여 pdf 파일을 구문 분석 한 다음 TCPDF 파서 라이브러리를 사용하여 pdf 파일의 메타 데이터와 내용을 얻습니다. 그 작은 PDF 파일에 대한 노력하지만 10 MB 또는 큰 PDF 파일 메모리 제한 exhuasted 및 실행 중지하고 어떤 오류가 발생하지 구문 분석. 1024M 메모리 제한을 설정합니다. – ankita

답변

-1

더 나쁜 라이브러리의 맨 위에 구축하는 진부한 라이브러리입니다. 아직 자체를 "독립형"이라고합니다. 메모리 누수가있는 것으로 알려진 문제이므로 gc_collect_cycles();을 실행하여 가비지 수집을 강제 실행하면 도움이되는 것으로보고되었습니다. 보고 된 문제에 대한 자세한 내용은 Github 라이브러리 페이지를 확인하십시오.

https://github.com/Setasign/FPDI에서 FPDI를 시도해 볼 수 있습니다. 더 나은 방법이 무엇인지 잘 모르는 경우가 있습니다. 모든 PHP 라이브러리가 PDF를 처리하기 때문에 같은 쓰레기가없는 것 같습니다.