public static function cutPDF($pdf, $mode, $out)
{
- return self::_getFile(['operation' => 'cutpdf',
- 'pdf' => $pdf,
- 'out' => $out,
- 'mode' => $mode,
- ], 0, false, true);
+ return static::lock($pdf, 'cut_' . $mode, function () use ($pdf, $mode, $out) {
+ if (file_exists($out) && filesize($out) > 0 && filemtime($out) >= filemtime($pdf)) {
+ return $out;
+ }
+ return self::_getFile(['operation' => 'cutpdf',
+ 'pdf' => $pdf,
+ 'out' => $out,
+ 'mode' => $mode,
+ ], 0, false, true);
+ });
}
public static function trimPDF($pdf, $out)
{
- return self::_getFile(['operation' => 'trimpdf',
- 'pdf' => $pdf,
- 'out' => $out,
- ], 0, false, true);
+ return static::lock($pdf, 'trim', function () use ($pdf, $out) {
+ if (file_exists($out) && filesize($out) > 0 && filemtime($out) >= filemtime($pdf)) {
+ return $out;
+ }
+ return self::_getFile(['operation' => 'trimpdf',
+ 'pdf' => $pdf,
+ 'out' => $out,
+ ], 0, false, true);
+ });
}
public static function splitPDF($pdf, $out)
public static function extractLinks($pdf, $out)
{
- return self::_getFile(['operation' => 'extractlinks',
- 'pdf' => $pdf,
- 'out' => $out], 0, false, true);
+ return static::lock($pdf, 'links', function () use ($pdf, $out) {
+ return self::_getFile(['operation' => 'extractlinks',
+ 'pdf' => $pdf,
+ 'out' => $out], 0, false, true);
+ });
}
public static function extractTexts($pdf, $out, $mode, $extractionMethod, $ignoreSeparators)
{
- return self::_getFile(
- ['operation' => 'extracttexts',
- 'pdf' => $pdf,
- 'out' => $out,
- 'mode' => $mode,
- 'method' => $extractionMethod,
- 'ignoreseparators' => $ignoreSeparators], 0, false, true);
+ return static::lock($pdf, 'texts_' . $mode . '_' . $extractionMethod . '_' . md5($ignoreSeparators), function () use ($pdf, $out, $mode, $extractionMethod, $ignoreSeparators) {
+ return self::_getFile(
+ ['operation' => 'extracttexts',
+ 'pdf' => $pdf,
+ 'out' => $out,
+ 'mode' => $mode,
+ 'method' => $extractionMethod,
+ 'ignoreseparators' => $ignoreSeparators], 0, false, true);
+ });
}
public static function extractHighlightsData($pdf, $out, $mode, $ignoreSeparators)
{
- return self::_getFile(
- ['operation' => 'extracthightlightsdata',
- 'pdf' => $pdf,
- 'out' => $out,
- 'mode' => $mode,
- 'ignoreseparators' => $ignoreSeparators], 0, false, true);
+ return static::lock($pdf, 'texts_' . $mode . '_' . md5($ignoreSeparators), function () use ($pdf, $out, $mode, $ignoreSeparators) {
+ return self::_getFile(
+ ['operation' => 'extracthightlightsdata',
+ 'pdf' => $pdf,
+ 'out' => $out,
+ 'mode' => $mode,
+ 'ignoreseparators' => $ignoreSeparators], 0, false, true);
+ });
}
/**