SONATA создает PDF-файл с помощью knpSnappyPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 SONATA создает PDF-файл с помощью knpSnappy

Сообщение Anonymous »

Я хочу интегрировать экспорт PDF в мое приложение SONATA ADMIN. Для этого я установил KnpSnappy Bundle и SonataExporterBundle.
Я следовал старому руководству, найденному в Google, но в итоге оно не сработало.

config. yml:

Код: Выделить всё

knp_snappy:
pdf:
enabled:    true
binary:     /usr/local/bin/wkhtmltopdf
options:    []
image:
enabled:    true
binary:     /usr/local/bin/wkhtmltoimage
options:    []
temporary_folder: %kernel.cache_dir%/snappy
services.yml:

Код: Выделить всё

    sonata.admin.exporter:
class: AppBundle\Export\Exporter
calls:
- ["setKnpSnappyPdf", ["@knp_snappy.pdf"]]
- ["setTemplateEngine", ["@templating"] ]
в администраторе модели я добавил это:

Код: Выделить всё

    public function getExportFormats() {
return array_merge(parent::getExportFormats(), array('pdf'));
}
Я создал AppBundle/Export/Exporter.php:

Код: Выделить всё

    namespace AppBundle\Export;

use Exporter\Source\SourceIteratorInterface;
use Symfony\Component\HttpFoundation\Response;
use Sonata\AdminBundle\Export\Exporter as BaseExporter;

class Exporter extends BaseExporter
{
protected $knpSnappyPdf;
protected $templateEngine;

public function getResponse($format, $filename, SourceIteratorInterface $source)
{
if ('pdf' != $format) {
return parent::getResponse($format, $filename, $source);
}

$html = $this->templateEngine->renderView('AppBundle:Export:pdf.html.twig', array(
'source' => $source
));
$content = $this->knpSnappyPdf->getOutputFromHtml($html);

return new Response($content, 200, array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('attachment; filename=%s', $filename)
));
}

public function setKnpSnappyPdf($service)
{
$this->knpSnappyPdf = $service;
}

public function setTemplateEngine($service)
{
$this->templateEngine = $service;
}
}
ошибка:

Код: Выделить всё

RuntimeException:
Invalid "pdf" format, supported formats are : "csv, json, xls, xml"

at vendor/sonata-project/exporter/src/Exporter.php:52
at Exporter\Exporter->getResponse('pdf', 'export_model_2018_04_20_15_44_05.pdf', object(DoctrineORMQuerySourceIterator))
(vendor/sonata-project/admin-bundle/src/Controller/CRUDController.php:952)
at Sonata\AdminBundle\Controller\CRUDController->exportAction(object(Request))
(vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:151)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:68)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:202)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(web/app_dev.php:31)
at require('/var/www/html/acianovintra/web/app_dev.php')
(vendor/symfony/symfony/src/Symfony/Bundle/WebServerBundle/Resources/router.php:42)
Можете ли вы сказать мне, что я сделал не так?

Подробнее здесь: https://stackoverflow.com/questions/499 ... -knpsnappy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»