class WkhtmltopdfController in wkhtmltopdf 8
Same name and namespace in other branches
- 2.0.x src/Controller/WkhtmltopdfController.php \Drupal\wkhtmltopdf\Controller\WkhtmltopdfController
Base for Controller.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\wkhtmltopdf\Controller\WkhtmltopdfController
Expanded class hierarchy of WkhtmltopdfController
File
- src/
Controller/ WkhtmltopdfController.php, line 15
Namespace
Drupal\wkhtmltopdf\ControllerView source
class WkhtmltopdfController extends ControllerBase {
public $settings;
public $request;
public $filesystem;
/**
* {@inheritdoc}
*/
public function __construct(ConfigFactory $config, Request $request, FileSystemInterface $filesystem) {
$this->settings = $config
->get('wkhtmltopdf.settings');
$this->request = $request;
$this->filesystem = $filesystem;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('request_stack')
->getCurrentRequest(), $container
->get('file_system'));
}
/**
* Generate pdf file.
*
* @return Symfony\Component\HttpFoundation\RedirectResponse
* Redirect
*/
public function generatePdf() {
$url = $this->request->query
->get('url');
$binary = $this->settings
->get('wkhtmltopdf_bin');
$path = $this->filesystem
->realpath('public://wkhtmltopdf');
$parameters = '--javascript-delay 5000';
$parameters .= $this->settings
->get('wkhtmltopdf_zoom') ? ' --zoom ' . $this->settings
->get('wkhtmltopdf_zoom') : '';
$file_path = "public://wkhtmltopdf/" . urlencode($url) . '.pdf';
if (!$this->filesystem
->prepareDirectory($file_path)) {
$this->filesystem
->mkdir($path);
}
$filename = urlencode($url) . '.pdf';
$file_path_physical = $path . '/' . $filename;
$command = $binary . ' ' . $parameters . ' ' . $url . ' ' . $file_path_physical;
$lock = \Drupal::lock();
if ($lock
->acquire(__FILE__) !== FALSE) {
shell_exec($command);
$lock
->release(__FILE__);
}
else {
while ($lock
->acquire(__FILE__) === FALSE) {
$lock
->wait(__FILE__, 3);
}
if ($lock
->acquire(__FILE__) !== FALSE) {
shell_exec($command);
$lock
->release(__FILE__);
}
}
$force_download = $this->settings
->get('wkhtmltopdf_download');
if ($force_download) {
$this
->download($file_path_physical, $filename);
return new RedirectResponse($url);
}
$url_redirect = file_create_url($file_path);
return new RedirectResponse($url_redirect);
}
/**
* Force download and now redirect.
*
* @param string $file_path_physical
* File path.
* @param string $filename
* File name.
*/
public function download($file_path_physical, $filename) {
header("Content-type: octet/stream");
header("Content-disposition: attachment; filename=" . $filename . ";");
header("Content-Length: " . filesize($file_path_physical));
readfile($file_path_physical);
exit;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
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. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. | |
WkhtmltopdfController:: |
public | property | ||
WkhtmltopdfController:: |
public | property | ||
WkhtmltopdfController:: |
public | property | ||
WkhtmltopdfController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
WkhtmltopdfController:: |
public | function | Force download and now redirect. | |
WkhtmltopdfController:: |
public | function | Generate pdf file. | |
WkhtmltopdfController:: |
public | function |