Usage
This chapter describes how to use the bundle.
Specifying the URL to the Gotenberg Server
The bundle uses the GOTENBERG_URL
environment variable to determine the URL to
the Gotenberg server. You can override it using the standard Symfony
environment variable mechanism.
General Usage
Callers will interact with the PdfGeneratorInterface
to generate PDF files.
The PdfGeneratorInterface
is a high-level interface that abstracts away the
implementation details of the underlying PDF generator.
namespace Rekalogika\Contracts\Print;
use Psr\Http\Message\StreamInterface;
interface PdfGeneratorInterface
{
public function generatePdfFromHtml(
string $htmlContent,
PaperInterface $paper,
PageLayoutInterface $pageLayout,
?string $header = null,
?string $footer = null,
): StreamInterface;
}
To get an instance of PdfGeneratorInterface
, you can usually autowire it in
your controller or service:
namespace App\Controller;
use Rekalogika\Contracts\Print\PdfGeneratorInterface;
class AppController
{
public function index(PdfGeneratorInterface $pdfGenerator)
{
// ...
}
}
generatePdfFromHtml()
returns a PSR-7 StreamInterface
containing the
resulting PDF file. To get the raw PHP resource, call detach()
on the result.
Paper Size
The method generatePdfFromHtml
requires a $paper
parameter containing a
PaperInterface
instance. It defines the paper size of the PDF output. You can
use the Paper
class to create a paper size:
use Rekalogika\Print\Paper;
$a4Paper = Paper::A4(); // A4
$letterPaper = Paper::Letter(); // Letter
$customPaper = Paper::inMm(200, 300); // Custom paper size in mm
$customPaperInInches = Paper::inInches(7, 10); // Custom paper size in inches
There are many other paper sizes defined in the class.
Page Layout
The method generatePdfFromHtml
requires a $pageLayout
parameter containing
a PageLayoutInterface
instance. It defines the orientation of the page and
its margins. You can use the PageLayout
class to create a page layout:
use Rekalogika\Print\PageLayout;
use Rekalogika\Contracts\Print\PageOrientation;
// Portrait with 30mm margins
$layout = PageLayout::inMm(PageOrientation::Portrait, 30);
// Landscape with 2 inches of vertical margin and 1 inch of horizontal margin
$layout = PageLayout::inInches(PageOrientation::Landscape, 2, 1);
// Portrait with 10mm top margin, 20mm right margin, 30mm bottom margin, and
// 40mm left margin
$layout = PageLayout::inMm(PageOrientation::Portrait, 10, 20, 30, 40);
Header and Footer
The $header
and $footer
parameters of generatePdfFromHtml
are optional.
You can use them to specify the HTML content of the header and footer of the PDF
file. Read the Header and
Footer chapter of the
Gotenberg documentation to learn more.