You are here

function pdf_export_render in PDF Export 7

Handle the html as PDF.

1 string reference to 'pdf_export_render'
pdf_export_menu in ./pdf_export.module
Implements hook_menu().

File

./pdf_export.module, line 89
PDF Export module.

Code

function pdf_export_render() {
  $scheme = _pdf_export_get_scheme_wrapper();
  $pdf_path = $scheme
    ->getUri();
  if (!file_prepare_directory($scheme
    ->realpath(), FILE_CREATE_DIRECTORY)) {
    _pdf_export_error(t('Not able to create or access to the pdf generation folder.'));
  }
  $html = $_POST['html'];
  $filename = $_POST['filename'];
  $css_theme = $_POST['css_theme'];
  $css_paths = $_POST['css_paths'];
  if (empty($html)) {
    _pdf_export_error(t('No html to render.'));
  }
  if (empty($filename)) {
    _pdf_export_error(t('Undefined filename.'));
  }
  $library_name = variable_get('pdf_export_library', 'mpdf');
  $processor = _pdf_export_processor_load($library_name);
  if (empty($processor)) {
    _pdf_export_error(t('Could not load the processor for "@library".', array(
      '@library' => $library_name,
    )));
  }
  $library_loaded = $processor
    ->loadLibrary();
  if (!$library_loaded) {
    _pdf_export_error(t('Could not load the library "@library".', array(
      '@library' => $library_name,
    )));
  }
  $rewrite_basic_auth = variable_get('pdf_export_rewrite_basic_auth', FALSE);
  if (!empty($css_theme) && !empty($css_paths)) {
    $theme_path = drupal_get_path('theme', $css_theme);
    $base_path = _pdf_export_get_base_path($theme_path, $rewrite_basic_auth);
    $processor
      ->setBasePath($base_path);

    // Including css files.
    $css_files = explode(' ', $css_paths);
    foreach ($css_files as $css_file) {
      $css_path = $theme_path . '/' . $css_file;
      if (!file_exists($css_path)) {
        _pdf_export_error(t('CSS file "@filename" is missing.', array(
          '@filename' => $css_file,
        )));
      }
      $processor
        ->addCssStyles(file_get_contents($css_path));
    }
  }
  if ($rewrite_basic_auth) {
    $html = preg_replace_callback("/(<img[^>]*?src *= *[\"'])(https?:\\/\\/)([a-z|\\.|\\-|0-9]*)([^\"']*).?(\".*?>)/i", '_pdf_export_prepend_basic_auth_callback', $html);
  }
  if (variable_get('pdf_export_debug', FALSE)) {
    $processor
      ->enableDebug();
  }

  // Let other modules alter the HTML.
  drupal_alter('pdf_export_html', $html, $filename);
  $processor
    ->setHtml($html);
  $pdf_path = file_create_filename($filename, $pdf_path);
  $real_filename = explode('/', $pdf_path);
  $real_filename = $real_filename[count($real_filename) - 1];
  $processor
    ->save($pdf_path);
  drupal_json_output((object) array(
    'url' => url('pdf_export/download/' . $real_filename . '/' . $filename),
  ));
  drupal_exit();
}