You are here

public static function Pdf::buildResponse in PDF Generator 8

Same name and namespace in other branches
  1. 2.0.x src/Plugin/views/display/Pdf.php \Drupal\pdf_generator\Plugin\views\display\Pdf::buildResponse()

Builds up a response with the rendered view as content.

Parameters

string $view_id: The view ID.

string $display_id: The display ID.

array $args: (optional) The arguments of the view.

Return value

\Symfony\Component\HttpFoundation\Response The built response.

Overrides ResponseDisplayPluginInterface::buildResponse

File

src/Plugin/views/display/Pdf.php, line 100

Class

Pdf
The plugin that handles a feed, such as RSS or atom.

Namespace

Drupal\pdf_generator\Plugin\views\display

Code

public static function buildResponse($view_id, $display_id, array $args = []) {
  $build = static::buildBasicRenderable($view_id, $display_id, $args);
  $view = Views::getView($view_id);
  $view
    ->setDisplay($display_id);
  $renderer = \Drupal::service('renderer');
  $output = [
    '#markup' => (string) $renderer
      ->renderRoot($build),
  ];
  if ($view->display_handler
    ->getOption('sitename_title') === 1) {
    $config = \Drupal::config('system.site');
    $titleValue = $config
      ->get('name');
  }
  elseif ($view->display_handler
    ->getOption('field_title') === 1) {
    $fieldName = $view->display_handler
      ->getOption('select_field_title');
    $entityTypeManager = \Drupal::entityTypeManager();
    $node = $entityTypeManager
      ->getStorage('node')
      ->load(reset($args));
    $titleValue = $node
      ->get($fieldName)->value;
  }
  else {
    $titleValue = $view
      ->getTitle();
  }
  $title = [
    '#markup' => $titleValue,
    '#allowed_tags' => Xss::getHtmlTagList(),
  ];
  $pageSize = !empty($view->display_handler
    ->getOption('paper_size')) ? $view->display_handler
    ->getOption('paper_size') : 'a4';
  $disposition = !empty($view->display_handler
    ->getOption('paper_disposition')) ? $view->display_handler
    ->getOption('paper_disposition') : 'portrait';
  $textCss = !empty($view->display_handler
    ->getOption('inline_css')) ? $view->display_handler
    ->getOption('inline_css') : NULL;
  $fileCss = !empty($view->display_handler
    ->getOption('file_css')) ? $view->display_handler
    ->getOption('file_css') : NULL;
  $response = \Drupal::service('pdf_generator.dompdf_generator')
    ->getResponse($title, $output, FALSE, [], $pageSize, $disposition, $textCss, $fileCss);
  return $response;
}