You are here

class DocRaptorPDF in Forena Reports 8

Provides PDF file exports using Doc Raptor PDF Generation Service

Plugin annotation


@FrxDocument(
  id= "pdf-docraptor",
  name="PDF Generation using Doc Raptor web services",
  ext="pdf"
)

Hierarchy

Expanded class hierarchy of DocRaptorPDF

File

forena_pdf/src/FrxPlugin/Document/DocRaptorPDF.php, line 19
PrincePDF

Namespace

Drupal\forena_pdf\FrxPlugin\Document
View source
class DocRaptorPDF extends DocumentBase {
  private $docraptor_key;
  private $docraptor_url;
  private $docraptor_test;
  public function __construct() {
    $this->content_type = 'application/pdf';
    $config = \Drupal::config('forena_pdf.settings');
    $this->docraptor_key = $config
      ->get('docraptor_key');
    $this->docraptor_url = $config
      ->get('docraptor_url');
    $this->docraptor_test = $config
      ->get('docraptor_test');
  }
  public function flush() {
    $options = [];
    $css = '';
    $disable_links = \Drupal::config('forena.pdf.settings')
      ->get('disable_links');
    $html = $this->write_buffer;
    if ($disable_links) {
      $html = preg_replace('/<a href=\\"(.*?)\\">(.*?)<\\/a>/', "\\2", $html);
    }
    $link_class = $disable_links ? 'prince-disable-links' : '';
    $output = '<html><head>';
    $output .= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>';
    if (isset($options['css']) || isset($r->rpt_xml->head->style)) {
      $output .= '<style type="text/css">';
      $output .= $css;
      if (isset($r->rpt_xml->head->style) || isset($r->rpt_xml->head->style)) {
        $sheet = (string) $r->rpt_xml->head->style;
        $output .= $sheet;
      }
      $output .= '</style>';
    }
    $output .= '<title>' . $this->title . "</title></head><body class='forena-report {$link_class}'><h1>" . $this->title . '</h1>' . $html . '</body></html>';
    $api_key = $this->docraptor_key;
    if ($api_key) {
      $service_url = $this->docraptor_url;
      $url = "{$service_url}?user_credentials={$api_key}";
      $name = 'report.pdf';
      $post_array = array(
        'doc[name]' => $name,
        'doc[document_type]' => 'pdf',
        'doc[test]' => $this->docraptor_test ? 'true' : 'false',
        'doc[document_content]' => $output,
      );
      $postdata = http_build_query($post_array);
      $opts = array(
        'http' => array(
          'method' => 'POST',
          'header' => 'Content-type: application/x-www-form-urlencoded',
          'content' => $postdata,
        ),
      );
      $context = stream_context_create($opts);
      $doc = file_get_contents($url, false, $context);
      return $doc;
    }
    else {
      drupal_set_message(t('No Docraptor API Key Configured'), 'error');
      return '';
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DocRaptorPDF::$docraptor_key private property
DocRaptorPDF::$docraptor_test private property
DocRaptorPDF::$docraptor_url private property
DocRaptorPDF::flush public function Write the output to disk. Overrides DocumentBase::flush
DocRaptorPDF::__construct public function
DocumentBase::$buffer public property
DocumentBase::$charset public property
DocumentBase::$commands protected property
DocumentBase::$content_type public property
DocumentBase::$filename protected property
DocumentBase::$file_name public property
DocumentBase::$format public property
DocumentBase::$headers public property
DocumentBase::$libraries public property
DocumentBase::$parameters_form public property
DocumentBase::$skin protected property
DocumentBase::$skin_name protected property
DocumentBase::$title public property
DocumentBase::$write_buffer protected property
DocumentBase::addAjaxCommand public function
DocumentBase::check_markup public function Wrapper function for check output to default the right type.
DocumentBase::clear public function Clear the buffer Overrides DocumentInterface::clear
DocumentBase::convertCharset public function Perform character set conversion
DocumentBase::footer public function No default footer. Overrides DocumentInterface::footer 1
DocumentBase::getAjaxCommands public function
DocumentBase::header public function Default implementation to put in content type based headers. Overrides DocumentInterface::header 8
DocumentBase::setFilename public function Overrides DocumentInterface::setFilename
DocumentBase::setSkin public function Overrides DocumentInterface::setSkin
DocumentBase::write public function Write Overrides DocumentInterface::write
FrxAPI::app public function Returns containing application service
FrxAPI::currentDataContext public function Get the current data context.
FrxAPI::currentDataContextArray public function
FrxAPI::dataManager public function Returns the data manager service
FrxAPI::dataService public function Return Data Service
FrxAPI::documentManager public function Returns the fornea document manager
FrxAPI::error public function Report an error
FrxAPI::getDataContext public function Get the context of a specific id.
FrxAPI::getDocument public function Get the current document
FrxAPI::getReportFileContents public function Load the contents of a file in the report file system.
FrxAPI::innerXML function Enter description here... 1
FrxAPI::popData public function Pop data off of the stack.
FrxAPI::pushData public function Push data onto the Stack
FrxAPI::report public function Run a report with a particular format. 1
FrxAPI::reportFileSystem public function Get the current report file system.
FrxAPI::setDataContext public function Set Data context by id.
FrxAPI::setDocument public function Change to a specific document type.
FrxAPI::skins public function Get list of skins.