如何从 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。