<path value="$PROJECT_DIR$/vendor/cubist/net" />
</include_path>
</component>
- <component name="PhpProjectSharedConfiguration" php_language_level="8.0">
+ <component name="PhpProjectSharedConfiguration" php_language_level="7.3">
<option name="suggestChangeDefaultLanguageLevel" value="false" />
</component>
</project>
\ No newline at end of file
}
+ public static function split($pdf, $out)
+ {
+
+ $lock = $pdf . '.split.lock';
+ $returnAfterSleep = false;
+
+ usleep(rand(100000, 2000000));
+
+ while (file_exists($lock)) {
+ $returnAfterSleep = true;
+ sleep(5);
+ }
+ if ($returnAfterSleep) {
+ return;
+ }
+
+ touch($lock);
+
+ Files::mkdir($out);
+ $pdftk = new CommandLine('pdftk');
+ $pdftk->setArg(null, $pdf);
+ $pdftk->setArg(null, 'burst');
+ $pdftk->setArg(null, 'uncompress');
+ $pdftk->setArg(null, 'output');
+ $pdftk->setArg(null, $out . '/p%d.pdf');
+ $pdftk->execute();
+
+
+ for ($i = 1; true; $i++) {
+ // Remove annotations : https://gist.github.com/stefanschmidt/5248592
+ $file = sprintf($out . '/p%d.pdf', $i);
+ if (!file_exists($file)) {
+ break;
+ }
+ $to = sprintf($out . '/s%d.pdf', $i);
+ `LANG=C LC_CTYPE=C sed -n '/^\/Annots/!p' $file > $to`;
+ if (file_exists($to)) {
+ if (filesize($to) > 0) {
+ unlink($file);
+ rename($to, $file);
+ } else {
+ unlink($to);
+ }
+ }
+ }
+ unlink($lock);
+ }
+
}