Я пытаюсь сгенерировать pdf из webURL с помощью пакета snappy:
class PagesController extends AbstractController
{
/**
* @Route("/pdf", name="pdf")
*/
public function pdf(Request $request)
{
$snappy = $this->get("knp_snappy.pdf");
$snappy->setOption("encoding","UTF-8");
$filename = "mypdf";
$webSiteURL = "http://www.stackoverflow.com";
return new Response(
$snappy->getOutput($webSiteURL),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="'.$filname.'.pdf"'
)
);
}
Но когда я пытаюсь открыть PDF, я получаю сообщение об ошибке:
Служба "knp_snappy.pdf" не найдена: даже если она существует в приложении
контейнер, контейнер внутри "App \ Controller \ PagesController" является
меньший сервисный локатор, который знает только о «доктрине»,
"form.factory", "http_kernel", "parameter_bag", "request_stack",
"router", "security.authorization_checker",
"security.csrf.token_manager", "security.token_storage", "сериализатор",
услуги "сессия" и "веточка". Попробуйте использовать внедрение зависимостей вместо
Это мой файл config / packages / knp_snappy.yaml:
knp_snappy:
pdf:
enabled: true
binary: /usr/local/bin/wkhtmltopdf
options: []
image:
enabled: true
binary: /usr/local/bin/wkhtmltoimage
options: []
Один из подходов к решению этой проблемы состоял в том, что я попытался добавить use Knp\Component\Pager\PaginatorInterface;
к своему контроллеру, но затем я получил сообщение об ошибке:
Невозможно определить аргумент контроллера для
«App \ Controller \ PagesController :: pdf ()»: аргумент $ paginator
подсказка типа с несуществующим классом или интерфейсом:
"Knp \ Component \ Пейджер \ PaginatorInterface".
Другим подходом к решению этой проблемы было добавление в мой контроллер:
public static function getSubscribedServices(): array
{
$services = parent::getSubscribedServices();
$services['fos_elastica.manager'] = RepositoryManagerInterface::class;
$services['knp_paginator'] = PaginatorInterface::class;
return $services;
}
Но тогда я получаю сообщение об ошибке:
Служба "App \ Controller \ PagesController" зависит от
несуществующая служба "App \ Controller \ RepositoryManagerInterface".