Skip to content

Commit

Permalink
feat: add dompdf
Browse files Browse the repository at this point in the history
  • Loading branch information
Michel Roux committed Jun 23, 2023
1 parent 857cad1 commit d92a730
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/Backend/Dompdf/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
vendor
36 changes: 36 additions & 0 deletions src/Backend/Dompdf/Dompdf.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

declare(strict_types=1);

namespace KnpLabs\Snappy\Backend\Dompdf;

use ArrayAccess;
use Dompdf\Dompdf as DompdfLib;
use KnpLabs\Snappy\Core\FileToPdf;
use KnpLabs\Snappy\Core\StringToPdf;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\StreamInterface;
use SplFileInfo;

final class Dompdf implements FileToPdf, StringToPdf
{
public function __construct(private StreamFactoryInterface $streamFactory)
{
}

public function generateFromFile(SplFileInfo $file, ArrayAccess|array $options = []): StreamInterface
{
$dompdf = new DompdfLib();
$dompdf->loadHtmlFile($file->getPath());
$dompdf->render();
return $this->streamFactory->createStream($dompdf->output());
}

public function generateFromString(string $html, ArrayAccess|array $options = []): StreamInterface
{
$dompdf = new DompdfLib();
$dompdf->loadHtml($html);
$dompdf->render();
return $this->streamFactory->createStream($dompdf->output());
}
}
30 changes: 30 additions & 0 deletions src/Backend/Dompdf/composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "snappy/dompdf",
"require": {
"php": ">=8.1",
"dompdf/dompdf": "^2.0",
"psr/http-message": "^2.0",
"psr/http-factory": "^1.0",
"knplabs/snappy-core": "dev-main"
},
"autoload": {
"psr-4": {
"KnpLabs\\Snappy\\Backend\\Dompdf\\": "./"
},
"exclude-from-classmap": ["/spec/"]
},
"autoload-dev": {
"psr-4": {
"spec\\KnpLabs\\Snappy\\Backend\\Dompdf\\": "spec/"
}
},
"require-dev": {
"phpspec/phpspec": "^7.4"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/KnpLabs/snappy-core"
}
]
}
5 changes: 5 additions & 0 deletions src/Backend/Dompdf/phpspec.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
suites:
default:
namespace: KnpLabs\Snappy\Backend\Dompdf
psr4_prefix: KnpLabs\Snappy\Backend\Dompdf
src_path: '%paths.config%'
21 changes: 21 additions & 0 deletions src/Backend/Dompdf/spec/DompdfSpec.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace spec\KnpLabs\Snappy\Backend\Dompdf;

use Dompdf\Dompdf as DompdfLib;
use KnpLabs\Snappy\Backend\Dompdf\Dompdf;
use PhpSpec\ObjectBehavior;

class DompdfSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->shouldHaveType(Dompdf::class);
}

function it_generate_from_string(DompdfLib $dompdf)
{
$dompdf->output()->willReturn('<--PDF string-->');
$this->generateFromString('<html />')->shouldReturn('<--PDF string-->');
}
}
4 changes: 2 additions & 2 deletions src/Backend/WkHtmlToPdf/WkHtmlToPdf.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
namespace KnpLabs\Backend\WkHtmlToPdf;

use ArrayAccess;
use KnpLabs\Core\FileToPdf;
use KnpLabs\Snappy\Core\FileToPdf;
use Psr\Http\Message\StreamInterface;
use SplFileInfo;

final class WkHtmlToPdf implements FileToPdf
{
public function generate(SplFileInfo $file, ArrayAccess|array $options = []): StreamInterface
public function generateFromFile(SplFileInfo $file, ArrayAccess|array $options = []): StreamInterface
{
}
}

0 comments on commit d92a730

Please sign in to comment.