如何从 Symfony 控制器设置 PDF 页面标题?
How to set PDF page title from Symfony Controller?
这是我在控制器中的方法:
/**
* @Route("/bilgi/agr", name="user_agreement")
*/
public function agr(): Response
{
$response = new BinaryFileResponse(__DIR__ . '/../../public/docs/User_Agreement.pdf');
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $response->getFile()->getFileName());
return $response;
}
我希望看到页面标题为 User_Agreement.pdf,但实际上是 agr
。这是不合适的。我无法更改路线,因为它正在用于其他几个 classes/files。
有什么方法可以设置自定义标题或至少是文件名?当我保存文件时,我看到文件名为 User_Agreement.pdf
,所以文件名也是正确的。
如果这不可能,是否有解决方法可以在 twig/html 中显示它?
你不能。 <title>
" 是 HTML 元素,而不是 PDF 元素。
如果浏览器直接呈现 PDF(如 many/most 现在所做的那样),他们唯一可以用于“标题”的是请求的 URL。 agr
你的情况。
这基本上是服务器端无法控制的。它只是发送响应,浏览器决定如何显示它,以及在通常为 <title>
元素保留的 space 中显示什么。
使用 Content-Disposition
header,您可以提示浏览器他们应该为 end-user 建议的文件名称,但仅此而已。
如果您绝对需要这个,是的,您可以发送常规 HTML 响应并以某种方式在页面上显示 PDF inlined/embedded。
这是我在控制器中的方法:
/**
* @Route("/bilgi/agr", name="user_agreement")
*/
public function agr(): Response
{
$response = new BinaryFileResponse(__DIR__ . '/../../public/docs/User_Agreement.pdf');
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $response->getFile()->getFileName());
return $response;
}
我希望看到页面标题为 User_Agreement.pdf,但实际上是 agr
。这是不合适的。我无法更改路线,因为它正在用于其他几个 classes/files。
有什么方法可以设置自定义标题或至少是文件名?当我保存文件时,我看到文件名为 User_Agreement.pdf
,所以文件名也是正确的。
如果这不可能,是否有解决方法可以在 twig/html 中显示它?
你不能。 <title>
" 是 HTML 元素,而不是 PDF 元素。
如果浏览器直接呈现 PDF(如 many/most 现在所做的那样),他们唯一可以用于“标题”的是请求的 URL。 agr
你的情况。
这基本上是服务器端无法控制的。它只是发送响应,浏览器决定如何显示它,以及在通常为 <title>
元素保留的 space 中显示什么。
使用 Content-Disposition
header,您可以提示浏览器他们应该为 end-user 建议的文件名称,但仅此而已。
如果您绝对需要这个,是的,您可以发送常规 HTML 响应并以某种方式在页面上显示 PDF inlined/embedded。