You are here

public function FrxMPDF::render in Forena Reports 7.4

Same name and namespace in other branches
  1. 7.3 docformats/FrxMPDF.inc \FrxMPDF::render()

Overrides FrxDocument::render

File

docformats/FrxMPDF.inc, line 30
FrxMPDF.inc PDF document via MPDF Library @author davidmetzler

Class

FrxMPDF
@file FrxMPDF.inc PDF document via MPDF Library @author davidmetzler

Code

public function render($r, $format, $options = array()) {

  // To Do
  // The option switch off links on PDF will bee good here too
  $disable_links = variable_get('forena_pdf_disable_links', TRUE);
  $skin_data = Frx::Data()
    ->getContext('skin');
  $page_data = isset($skin_data['mpdf']['page']) ? $skin_data['mpdf']['page'] : array(
    'orientation' => 'P',
  );
  $html = $r->html;
  if ($disable_links) {
    $html = preg_replace('/<a href=\\"(.*?)\\">(.*?)<\\/a>/', "\\2", $html);
  }
  $mpdf = new mPDF('UTF-8');
  $mpdf
    ->AddPageByArray($page_data);
  $output = '<html><head>';
  $output .= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>';
  $css = '';
  foreach (Frx::Skin()->stylesheets as $type => $sheets) {
    foreach ($sheets as $sheet) {
      switch ($type) {
        case 'all':
        case 'print':
        case 'screen':
        case 'pdf':
          if (strpos($sheet, 'http:') === 0 || strpos($sheet, 'https:') === 0) {
            $output .= "    <link rel='stylesheet' type='text/css' href='{$sheet}'> \n";
          }
          else {
            $css .= file_get_contents($sheet);
          }

          //echo $sheet;
          break;
      }
    }
  }
  if (@$options['css'] || isset($r->rpt_xml->head->style)) {
    $output .= '<style type="text/css">';
    $output .= $css;
    if (isset($r->rpt_xml->head->style)) {
      $sheet = (string) $r->rpt_xml->head->style;
      $output .= $sheet;
    }
    $output .= '</style>';
  }
  $output .= '<title>' . $r->title . "</title></head><body class='forena-report {$link_class}'><h1>" . $r->title . '</h1>' . $html;
  $output .= '</body></html>';
  $mpdf
    ->WriteHTML($output);

  // $pdf = $mpdf->Output('', 'S');
  $filename = basename($_GET['q']);
  $pdf = $mpdf
    ->Output($filename, 'I');
  return $pdf;
}