class DomPdf in Entity Print 8
@PdfEngine( id = "dompdf", label = @Translation("Dompdf") )
To use this implementation you will need the DomPDF library, simply run
composer require "dompdf/dompdf 0.7.0-beta3"
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\entity_print\Plugin\PdfEngineBase implements PdfEngineInterface
- class \Drupal\entity_print\Plugin\EntityPrint\PdfEngine\DomPdf implements ContainerFactoryPluginInterface
- class \Drupal\entity_print\Plugin\PdfEngineBase implements PdfEngineInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of DomPdf
File
- src/
Plugin/ EntityPrint/ PdfEngine/ DomPdf.php, line 26
Namespace
Drupal\entity_print\Plugin\EntityPrint\PdfEngineView source
class DomPdf extends PdfEngineBase implements ContainerFactoryPluginInterface {
/**
* @var \Dompdf\Dompdf
*/
protected $pdf;
/**
* Keep track of HTML pages as they're added.
*
* @var string
*/
protected $html = '';
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, Request $request) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->pdf = new DompdfLib($this->configuration);
$this->pdf
->setBaseHost($request
->getHttpHost())
->setProtocol($request
->getScheme() . '://');
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('request_stack')
->getCurrentRequest());
}
/**
* {@inheritdoc}
*/
public static function getInstallationInstructions() {
return t('Please install with: @command', [
'@command' => 'composer require "dompdf/dompdf 0.7.0-beta3"',
]);
}
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'enable_html5_parser' => TRUE,
'enable_remote' => TRUE,
'default_paper_size' => 'letter',
];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$paper_sizes = array_combine(array_keys(CPDF::$PAPER_SIZES), array_map(function ($value) {
return ucfirst($value);
}, array_keys(CPDF::$PAPER_SIZES)));
$form['default_paper_size'] = [
'#title' => $this
->t('Paper Size'),
'#type' => 'select',
'#options' => $paper_sizes,
'#default_value' => $this->configuration['default_paper_size'],
'#description' => $this
->t('The page size to print the PDF to.'),
];
$form['enable_html5_parser'] = [
'#title' => $this
->t('Enable HTML5 Parser'),
'#type' => 'checkbox',
'#default_value' => $this->configuration['enable_html5_parser'],
'#description' => $this
->t('Note, this library doesn\'t work without this option enabled.'),
];
$form['enable_remote'] = [
'#title' => $this
->t('Enable Remote URLs'),
'#type' => 'checkbox',
'#default_value' => $this->configuration['enable_remote'],
'#description' => $this
->t('This settings must be enabled for CSS and Images to work unless you manipulate the source manually.'),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function addPage($content) {
// We must keep adding to previously added HTML as loadHtml() replaces the
// entire document.
$this->html .= (string) $content;
$this->pdf
->loadHtml($this->html);
}
/**
* {@inheritdoc}
*/
public function send($filename = NULL) {
$this->pdf
->render();
// Dompdf doesn't have a return value for send so just check the error
// global it provides.
if ($errors = $this
->getError()) {
throw new PdfEngineException(sprintf('Failed to generate PDF: %s', $errors));
}
// The Dompdf library internally adds the .pdf extension so we remove it
// from our filename here.
$filename = preg_replace('/\\.pdf$/i', '', $filename);
// If the filename received here is NULL, force open in the browser
// otherwise attempt to have it downloaded.
$this->pdf
->stream($filename, array(
'Attachment' => (bool) $filename,
));
}
/**
* {@inheritdoc}
*/
protected function getError() {
global $_dompdf_warnings;
if (is_array($_dompdf_warnings)) {
return implode(', ', $_dompdf_warnings);
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public static function dependenciesAvailable() {
return class_exists('Dompdf\\Dompdf');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DomPdf:: |
protected | property | Keep track of HTML pages as they're added. | |
DomPdf:: |
protected | property |
Overrides PdfEngineBase:: |
|
DomPdf:: |
public | function |
Add a string of HTML to a new page. Overrides PdfEngineInterface:: |
|
DomPdf:: |
public | function |
Form constructor. Overrides PdfEngineBase:: |
|
DomPdf:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
DomPdf:: |
public | function |
Gets default configuration for this plugin. Overrides PdfEngineBase:: |
|
DomPdf:: |
public static | function |
Checks if the PDF engine dependencies are available. Overrides PdfEngineInterface:: |
|
DomPdf:: |
protected | function | ||
DomPdf:: |
public static | function |
Gets the installation instructions for this PDF engine. Overrides PdfEngineBase:: |
|
DomPdf:: |
public | function |
Send the PDF contents to the browser. Overrides PdfEngineInterface:: |
|
DomPdf:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PdfEngineBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PdfEngineBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
PdfEngineBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurablePluginInterface:: |
|
PdfEngineBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurablePluginInterface:: |
|
PdfEngineBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
1 |
PdfEngineBase:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
2 |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |