driver = $driver ?: new DefaultDriver; } /** * Add raw PDF from string */ public function addRaw(string $content, PagesInterface $pages = null): void { $this->sources[] = new RawSource($content, $pages); } /** * Add PDF from file */ public function addFile(string $filename, PagesInterface $pages = null): void { $this->sources[] = new FileSource($filename, $pages); } /** * Add files using iterator * * @param iterable $iterator Set of filenames to add * @param PagesInterface $pages Optional pages constraint used for every added pdf */ public function addIterator(iterable $iterator, PagesInterface $pages = null): void { foreach ($iterator as $filename) { $this->addFile($filename, $pages); } } /** * Merges loaded PDFs */ public function merge(): string { return $this->driver->merge(...$this->sources); } /** * Reset internal state */ public function reset(): void { $this->sources = []; } }