Preparing the Source
Next step is to prepare the source – that is, the data WeasyPrint will use to render your PDF and return it to your application for processing.
The prepareSource
method takes a single argument that represents your source data.
Here’s the method signature:
php
use WeasyPrint\Objects\Source;
use Illumintate\Support\Contracts\Renderable;
public function prepareSource(Source|Renderable|string $source): static
The $source
argument may be one of the following:
WeasyPrint\Objects\Source
if you are preparing a Source instance manually. TheSource::new
constructor accepts aRenderable
or astring
.Illumintate\Support\Contracts\Renderable
if you are passing in an instance of something that is renderable, ie it implements therender
method. This might be a Laravel View, which also accepts an array of data. For more information, see the Laravel documentation on views.string
if you are passing in an already-rendered piece of HTML, or asking WeasyPrint to fetch and render the source from an external URL.
Each of these options are detailed below:
Source Object
If you would like to use the Source
object, you may instantiate it as follows:
php
use WeasyPrint\Objects\Source;
use WeasyPrint\Facade as WeasyPrint;
$source = Source::new('<p>WeasyPrint rocks!</p>');
$service = WeasyPrint::prepareSource($source);
Renderable
A Renderable is simply a class that implements the Renderable
contract, described above.
php
use Illumintate\Support\Contracts\Renderable;
class MyRenderable implements Renderable
{
public function render(): string
{
return 'string with rendered HTML data…';
}
}
// …
$service = WeasyPrint::prepareSource(new MyRenderable);
String
If you prefer to pass in a string:
php
use WeasyPrint\Facade as WeasyPrint;
$service = WeasyPrint::prepareSource('<p>WeasyPrint rocks!</p>');