Refresh
This commit is contained in:
89
app/Analyzers/PdfAnalyzer.php
Executable file
89
app/Analyzers/PdfAnalyzer.php
Executable file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace App\Analyzers;
|
||||
|
||||
use Smalot\PdfParser\Parser;
|
||||
|
||||
/**
|
||||
* Extract information from a PDF file.
|
||||
*/
|
||||
class PdfAnalyzer extends Analyzer
|
||||
{
|
||||
/**
|
||||
* PDF parser.
|
||||
*
|
||||
* @var \Smalot\PdfParser\Parser
|
||||
*/
|
||||
protected $parser;
|
||||
|
||||
/**
|
||||
* Analyzes document.
|
||||
*/
|
||||
public function analyze()
|
||||
{
|
||||
if (empty($this->body)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->extractDetails();
|
||||
$this->storeDetailsOnDisk();
|
||||
$this->applyDetailsToDocument();
|
||||
|
||||
$this->document->description = (string) view('partials.details.pdf')->with([
|
||||
'details' => $this->details,
|
||||
'url' => asset(str_replace('public', 'storage', $this->document->getStoragePath()).'/body'),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store some details in database. This method uses an array to map document
|
||||
* properties to metadata properties.
|
||||
*
|
||||
* @param mixed $mappings
|
||||
*/
|
||||
protected function applyDetailsToDocument($mappings = [])
|
||||
{
|
||||
$mappings = [
|
||||
'title' => 'Title',
|
||||
];
|
||||
|
||||
parent::applyDetailsToDocument($mappings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an instance of PDF parser.
|
||||
*
|
||||
* @return \Smalot\PdfParser\Parser
|
||||
*/
|
||||
private function getParser()
|
||||
{
|
||||
if (!$this->parser) {
|
||||
$this->parser = new Parser();
|
||||
}
|
||||
|
||||
return $this->parser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse PDF content.
|
||||
*
|
||||
* @param mixed $content
|
||||
*/
|
||||
private function parseContent($content)
|
||||
{
|
||||
$parser = $this->getParser();
|
||||
|
||||
return $parser->parseContent($content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of meta data included in PDF.
|
||||
*/
|
||||
private function extractDetails()
|
||||
{
|
||||
$data = $this->parseContent($this->body);
|
||||
$this->details = $data->getDetails();
|
||||
|
||||
return $this->details;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user