EntityPrintPdfBuilder.php in Entity Print 8
File
src/EntityPrintPdfBuilder.php
View source
<?php
namespace Drupal\entity_print;
use Drupal\Core\Entity\EntityInterface;
use Drupal\entity_print\Event\PdfEvents;
use Drupal\entity_print\Event\PreSendPdfEvent;
use Drupal\entity_print\Event\PreSendPdfMultipleEvent;
use Drupal\entity_print\Plugin\PdfEngineInterface;
use Drupal\entity_print\Renderer\RendererFactoryInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class EntityPrintPdfBuilder implements PdfBuilderInterface {
protected $rendererFactory;
protected $dispatcher;
public function __construct(RendererFactoryInterface $renderer_factory, EventDispatcherInterface $event_dispatcher) {
$this->rendererFactory = $renderer_factory;
$this->dispatcher = $event_dispatcher;
}
public function getEntityRenderedAsPdf(EntityInterface $entity, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE) {
$pdf_engine
->addPage($this->rendererFactory
->create($entity)
->getHtml($entity, $use_default_css, TRUE));
$this->dispatcher
->dispatch(PdfEvents::PRE_SEND, new PreSendPdfEvent($pdf_engine, $entity));
$filename = $force_download ? $this
->generateFilename($entity) : NULL;
return $pdf_engine
->send($filename);
}
public function getMultipleEntitiesRenderedAsPdf(array $entities, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE) {
$pdf_engine
->addPage($this->rendererFactory
->create($entities)
->getHtmlMultiple($entities, $use_default_css, TRUE));
$this->dispatcher
->dispatch(PdfEvents::PRE_SEND_MULTIPLE, new PreSendPdfMultipleEvent($pdf_engine, $entities));
$filename = $force_download ? $this
->generateMultiFilename($entities) : NULL;
return $pdf_engine
->send($filename);
}
public function getEntityRenderedAsHtml(EntityInterface $entity, $use_default_css = TRUE, $optimize_css = TRUE) {
return $this->rendererFactory
->create($entity)
->getHtml($entity, $use_default_css, $optimize_css);
}
protected function generateFilename(EntityInterface $entity, $with_extension = TRUE) {
$filename = preg_replace("/[^A-Za-z0-9 ]/", '', $entity
->label());
if (!$filename) {
$filename = $entity
->getEntityTypeId();
}
return $with_extension ? $filename . '.pdf' : $filename;
}
protected function generateMultiFilename(array $entities, $with_extension = TRUE) {
$filename = '';
foreach ($entities as $entity) {
$filename .= $this
->generateFilename($entity, FALSE) . '-';
}
$filename = rtrim($filename, '-');
return $with_extension ? $filename . '.pdf' : $filename;
}
}