如何使用PHP更改文件的Title属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP更改文件的Title属性相关的知识,希望对你有一定的参考价值。
用户使用我的php应用程序上传PDF文件,然后将它们存储在S3上。稍后其他用户查看文件,我在浏览器中显示“内联”。
问题是PDF的“标题”属性显示在浏览器选项卡中,通常会显示网站标题。由于它是由执行原始上传的用户设置的,因此它是任意的,因此我需要更改它。我该怎么做呢?
我认为Title是文件的扩展属性,但是安装了Ubuntu的xattr,当我在文件上运行它时,它什么也没有返回,所以也许我错了。
当我在S3上查看对象元数据时,没有提到Title属性,因此我不知道它在S3上的存储位置和方式。
我的偏好是使用OS调用重写Title属性,而不是安装另一个PHP扩展(例如xattr)。
编辑:这是返回响应的Laravel控制器方法
public function displayFile($id)
{
$headers = ['Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline'];
return response(Storage::disk('private')->get("files/{$id}.pdf"), 200, $headers);
}
当你说'内联'时,你究竟是什么意思?您所描述的内容似乎更像是将它们指向文档URL。在这种情况下,标题将是PDF中包含的标题,只有一些PDF编辑器可以更改。我知道没有一个不会破坏文件(特别是那些具有交互式内容的文件)对于PHP来说很糟糕。如果您有权访问本机应用程序,可以尝试使用exiftool:https://askubuntu.com/questions/27381/how-to-edit-pdf-metadata-from-command-line
您可能想要做的是将文档显示在html文件中,如下所示:https://www.w3docs.com/snippets/html/how-to-embed-pdf-in-html.html注意:对各种浏览器进行大量测试,尤其是移动设备; PDF嵌入在移动浏览器中是众所周知的古怪。
您应该可以向Content-Disposition 添加任意文件名以进行内联查看,就像您下载时一样。尝试这样的事情:
$headers = ['Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="WhateverYouWantTheUsersToSee"'];
(实际上不知道是否需要转义那些引号;如果没有,请取出反斜杠。)
以上是关于如何使用PHP更改文件的Title属性的主要内容,如果未能解决你的问题,请参考以下文章
满足条件后如何更改 CSS 样式属性? PHP、JS、CSS
在创建VSCode片段时,如何将变量转换为title-case(如TitleCase)?