use DOMNode;
use DOMXPath;
use Cubist\PDF\CommandLine\FWSTK;
+use Illuminate\Support\Facades\Cache;
class PDFTools
{
if (!file_exists($pdf)) {
throw new \Exception('Unable to parse infos of ' . $pdf . ' : file not found');
}
- $fwstk = new FWSTK();
- $fwstk->setArg('--input ' . $pdf);
- $fwstk->setArg('--infos');
- $fwstk->execute();
- $out = $fwstk->getOutput();
-
- $pdfinfo = new CommandLine('pdfinfo');
- $pdfinfo->setArg('-box');
- $pdfinfo->setArg('f', 1);
- $pdfinfo->setArg('l', 100000);
- $pdfinfo->setArg(null, $pdf);
- $pdfinfo->execute();
- $out .= "\n";
- $out .= $pdfinfo->getOutput();
-
- return self::parseInfos($out);
+
+ $cacheKey = 'pdf_infos_' . Files::hashFileAttributes($pdf);
+
+ return Cache::rememberForever($cacheKey, function () use ($pdf) {
+ $fwstk = new FWSTK();
+ $fwstk->setArg('--input ' . $pdf);
+ $fwstk->setArg('--infos');
+ $fwstk->execute();
+ $out = $fwstk->getOutput();
+
+ $pdfinfo = new CommandLine('pdfinfo');
+ $pdfinfo->setArg('-box');
+ $pdfinfo->setArg('f', 1);
+ $pdfinfo->setArg('l', 100000);
+ $pdfinfo->setArg(null, $pdf);
+ $pdfinfo->execute();
+ $out .= "\n";
+ $out .= $pdfinfo->getOutput();
+
+ return self::parseInfos($out);
+ });
}
/**