Add merge
This commit is contained in:
parent
8654d13e81
commit
18650ba7ad
|
@ -10,7 +10,14 @@ use Log;
|
||||||
|
|
||||||
abstract class BaseCompiler implements Responsable
|
abstract class BaseCompiler implements Responsable
|
||||||
{
|
{
|
||||||
protected File $file;
|
public function __construct(protected ?File $file = null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function fromFile(string $file): static
|
||||||
|
{
|
||||||
|
return new static(new File($file, false));
|
||||||
|
}
|
||||||
|
|
||||||
public function compile(Document $document): self
|
public function compile(Document $document): self
|
||||||
{
|
{
|
||||||
|
@ -41,6 +48,32 @@ abstract class BaseCompiler implements Responsable
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<int, Documents> $documents
|
||||||
|
*/
|
||||||
|
public function merge(array $documents): self
|
||||||
|
{
|
||||||
|
$outfile = '/tmp/' . Str::uuid()->toString() . '.pdf';
|
||||||
|
$paths = array_map(fn ($document) => static::compile($document)->getPath(), $documents);
|
||||||
|
$command = collect([
|
||||||
|
'pdfjam --nup 1x1 --outfile ' . $outfile,
|
||||||
|
...array_map(fn ($path) => escapeshellarg($path), $paths),
|
||||||
|
])->implode(' ');
|
||||||
|
|
||||||
|
exec($command, $output, $returnVar);
|
||||||
|
|
||||||
|
foreach ($paths as $path) {
|
||||||
|
@unlink($path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== $returnVar) {
|
||||||
|
Log::error('Merging failed', ['output' => $output]);
|
||||||
|
throw (new CompilerException('Compilation failed.'))->setOutput($output);
|
||||||
|
}
|
||||||
|
|
||||||
|
return static::fromFile($outfile);
|
||||||
|
}
|
||||||
|
|
||||||
public function storeAs(string $directory, string $name, string $disk): string
|
public function storeAs(string $directory, string $name, string $disk): string
|
||||||
{
|
{
|
||||||
$contents = $this->file->getContent();
|
$contents = $this->file->getContent();
|
||||||
|
|
Loading…
Reference in New Issue