GeneratePdf.php in PDF using mPDF 8.2
File
src/Controller/GeneratePdf.php
View source
<?php
namespace Drupal\pdf_using_mpdf\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\node\NodeInterface;
use Drupal\pdf_using_mpdf\Conversion\ConvertToPdf;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
class GeneratePdf extends ControllerBase {
protected $entityTypeManager;
protected $moduleHandler;
protected $convertToPdf;
public function __construct(ConvertToPdf $convert, EntityTypeManagerInterface $entityTypeManager, ModuleHandlerInterface $moduleHandler) {
$this->convertToPdf = $convert;
$this->entityTypeManager = $entityTypeManager;
$this->moduleHandler = $moduleHandler;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('pdf_using_mpdf.conversion'), $container
->get('entity_type.manager'), $container
->get('module_handler'));
}
public function generate($node = NULL) {
$view = $this->entityTypeManager
->getViewBuilder('node')
->view($node);
$renderedNode = render($view)
->__toString();
$this->moduleHandler
->alter('mpdf_html', $renderedNode, $node);
$settings = $this->convertToPdf
->getConfig();
$this->moduleHandler
->alter('mpdf_settings', $settings, $node);
$this->convertToPdf
->convert($renderedNode, $settings, [
'node' => $node,
]);
$url = Url::fromRoute('entity.node.canonical', [
'node' => $node
->id(),
], [
'absolute' => TRUE,
]);
return new RedirectResponse($url
->toString());
}
}