diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 9742f07..40f6292 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -8,5 +8,10 @@ jobs: steps: - uses: actions/checkout@v3 + - uses: php-actions/composer@v6 # or alternative dependency management - - uses: php-actions/phpunit@v3 \ No newline at end of file + + - name: Install QPDF & Run PHPUnit + run: | + sudo apt install -y qpdf + vendor/bin/phpunit --color=always \ No newline at end of file diff --git a/src/Pdf.php b/src/Pdf.php index 087feb8..c178604 100644 --- a/src/Pdf.php +++ b/src/Pdf.php @@ -115,6 +115,14 @@ public function getPages() return $this->pages; } + private function checkFolderIfExists($target) + { + $folder = dirname($target); + if (!empty($folder) && $folder !== '.' && !file_exists($folder)) { + mkdir($folder); + } + } + /** * Merge all added pages in the object into a single output file. * @@ -124,6 +132,11 @@ public function getPages() */ public function merge($target) { + if (empty($target)) { + return false; + } + $this->checkFolderIfExists($target); + $cmd = $this->getCommand(); $cmd->addArg('--empty', null, false); $cmd->addArg('--pages', $this->pages); @@ -148,6 +161,11 @@ public function split($target, $pagesPerGroup=1) throw new \Exception("Error! Currently unable to split when more than one PDF file is specified."); } + if (empty($target)) { + return false; + } + $this->checkFolderIfExists($target); + $cmd = $this->getCommand(); $cmd->addArg('--split-pages=', $pagesPerGroup, false); $cmd->addArg('', $this->pages, false); @@ -180,6 +198,11 @@ public function rotate($target, $direction='+90', $pageString=null) throw new \Exception("Error! Currently unable to rotate when more than one PDF file is specified."); } + if (empty($target)) { + return false; + } + $this->checkFolderIfExists($target); + $cmd = $this->getCommand(); $cmd->addArg('--rotate=', $rotationCmd, false); $cmd->addArg('', $this->pages, false); diff --git a/tests/PdfTest.php b/tests/PdfTest.php index d000126..c0b17da 100644 --- a/tests/PdfTest.php +++ b/tests/PdfTest.php @@ -10,6 +10,8 @@ class PdfTest extends TestCase public function testGetVersion() { + echo $this->getCmdLocation(); + $pdf = new Pdf(); $version = $pdf->getVersion(); @@ -23,33 +25,44 @@ public function testGetVersion() public function testMerge() { $pdf = new Pdf(); + $pdf->addPage(__DIR__ . "/files/TestPdf.pdf"); $pdf->addPage(__DIR__ . "/files/TestPdf2.pdf"); - $pdf->merge(__DIR__ . "/output/test-merge.pdf"); + + $result = $pdf->merge(__DIR__ . "/output/test-merge.pdf"); + $this->assertTrue($result); $this->assertEmpty($pdf->getError()); } public function testSplit() { $pdf = new Pdf(); + $pdf->addPage(__DIR__ . "/files/TestPdfTwoPage.pdf"); - $pdf->split(__DIR__."/output/test-split.pdf"); + + $result = $pdf->split(__DIR__."/output/test-split.pdf"); + $this->assertTrue($result); $this->assertEmpty($pdf->getError()); } public function testRotate() { $pdf = new Pdf(); + $pdf->addPage(__DIR__ . "/files/TestPdfTwoPage.pdf"); - $pdf->rotate(__DIR__ . "/output/rotated.pdf", "+90", "1"); + + $result = $pdf->rotate(__DIR__ . "/output/rotated.pdf", "+90", "1"); + $this->assertTrue($result); $this->assertEmpty($pdf->getError()); } public function testGetPageCount() { $pdf = new Pdf(); + $pdf->addPage(__DIR__ . "/files/TestPdfTwoPage.pdf"); $pdf->addPage(__DIR__ . "/files/TestPdf.pdf"); + $count = $pdf->getPageCount(); $this->assertEmpty($pdf->getError()); $this->assertEquals(3, $count);