Plone 自定义文件视图以在浏览器中查看PDF
我仍然在为我们的内部网运行Plone 3.0.6。我试图升级到当前版本,但总是遇到障碍。等我有更多时间的时候,我会再来一次 现在,我只需要定制/portal\u skins/plone\u content/file\u view,让它在浏览器中打开pdf附件,而不是下载它们。我们正在安装一个新的信息亭系统,该系统将在浏览器中显示PDF,但无法浏览和查看文件系统中的文件 我已经做了很多搜索,并找到了其他做过这件事的人,但不是我正在运行的版本。我不是任何类型的开发人员,所以我不知道他们在我的系统上做了什么 以下是文件视图的当前代码Plone 自定义文件视图以在浏览器中查看PDF,plone,Plone,我仍然在为我们的内部网运行Plone 3.0.6。我试图升级到当前版本,但总是遇到障碍。等我有更多时间的时候,我会再来一次 现在,我只需要定制/portal\u skins/plone\u content/file\u view,让它在浏览器中打开pdf附件,而不是下载它们。我们正在安装一个新的信息亭系统,该系统将在浏览器中显示PDF,但无法浏览和查看文件系统中的文件 我已经做了很多搜索,并找到了其他做过这件事的人,但不是我正在运行的版本。我不是任何类型的开发人员,所以我不知道他们在我的系统上做
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="en"
metal:use-macro="here/main_template/macros/master"
i18n:domain="plone">
<body>
<div metal:fill-slot="main">
<tal:main-macro metal:define-macro="main"
tal:define="size python:here.getObjSize(here);
content_type here/get_content_type|here/Format;
kssClassesView context/@@kss_field_decorator_view;
getKssClasses nocall:kssClassesView/getKssClassesInlineEditable">
<div tal:replace="structure provider:plone.abovecontenttitle" />
<h1 class="documentFirstHeading">
<metal:field use-macro="python:here.widget('title', mode='view')">
Title
</metal:field>
</h1>
<div tal:replace="structure provider:plone.belowcontenttitle" />
<p class="documentDescription">
<metal:field use-macro="python:here.widget('description', mode='view')">
Description
</metal:field>
</p>
<div tal:replace="structure provider:plone.abovecontentbody" />
<p>
<metal:field use-macro="python:here.widget('file', mode='view')">
File
</metal:field>
</p>
<div tal:condition="python: content_type.startswith('text')">
<h2 i18n:translate="heading_file_contents">File contents</h2>
<pre tal:content="here/get_data|here/data|nothing">
</pre>
</div>
<div metal:use-macro="here/document_relateditems/macros/relatedItems">
show related items if they exist
</div>
<div tal:replace="structure provider:plone.belowcontentbody" />
</tal:main-macro>
</div>
</body>
</html>
有人能告诉我需要更改什么才能在浏览器中查看PDF吗
当前,当我选择指向PDF的链接时,它看起来是这样的
我需要它看起来像这样
不带/at_下载/文件
任何帮助都将不胜感激
谢谢
大卫你说得对,你需要这样的东西: 如果不将视图附加到url,可以通过触发文件下载来实现 例如: :显示默认文件视图这是Plone默认值 :应触发下载 要触发下载,您必须在您的文件类型上实现此功能,或对现有文件类型进行修补。 一个可能的入口点是FileFied index_html方法 这是Plone 4.3.x的一个工作示例: 从plone.app.blob导入字段 从plone.app.blob.download import handleIfModifiedSince,handleRequestRange 从urllib导入报价 从webdav.common导入rfc1123\u日期 从zope.component导入getMultiAdapter 类FileField.FileField: def index_htmlself,实例,请求=None,响应=None, charset='utf-8',disposition='inline': 踢下载。 将包括文件名和内容类型的数据写入响应 如果请求为无: REQUEST=instance.REQUEST 如果响应为无: RESPONSE=REQUEST.RESPONSE RESPONSE.setHeader'Last-Modified',rfc1123\u dateinstance.\u p\u mtime RESPONSE.setHeader'Content-Type',self.getContentTypeinstance RESPONSE.setHeader'Accept-Ranges','bytes' 如果HandleIFModifiedSince实例、请求、响应: 回来 长度=self.get_sizeinstance RESPONSE.setHeader'Content-Length',Length filename=self.getFilenameinstance 如果文件名不是“无”: 如果isinstancefilename为unicode: filename=filename.encodecharset,错误=ignore 创建特定于用户代理的处置标头 IE需要一个url引用的文件名 其他浏览器需要不带引号的文件名 user\u agent=REQUEST.get'HTTP\u user\u agent', 如果用户代理中的“MSIE”: 标题值='%s;文件名=%s'%1!', 引号名称 其他: 标题值='%s;文件名=%s“%s”,文件名 RESPONSE.setHeaderContent-disposition,标题值 请求\范围=HandlerRequestRange实例、长度、请求、响应 通知文件下载,但不通知范围请求 如果请求范围和请求范围中没有“开始”[“开始”]>0: portal_state=getMultiAdapterinstance,instance.REQUEST, name='plone\u门户\u状态' 返回self.getinstance.getIterator**请求范围
<>你真的应该考虑升级你的PLAN站点,然后再执行新的功能,这可能会再次阻止你!!p> 我不知道它在plone 3.x.x中是否有效,但是 我正在使用plone 4.1.6,我想呈现一个pdf文件 在浏览器中,在chrome和firefox中工作,并像这样放置 在页面填充板中:
<a tal:attributes="href string:${edicao_url}/@@images/field_pdf" target="_blank">View PDF</a>
其中url显示:
因此,字段是内容类型的属性!
啊,我用的也是灵巧的内容类型
我希望这对你有帮助=嗨,马蒂亚斯。我并不想完全不知所措,但我甚至在我的《普隆》版本中找不到你在说什么。我想做这家伙做的事,但我需要帮助使它适应我的老版本的Plone。我完全打算升级到Plone的当前版本,但这将不得不等到新年。谢谢。我不确定是否有可能将Plone 4.2.x实现适应您的3.0.6环境。我发布的代码是针对文件字段的,在您的例子中,这可能在Products.Archetypes或Products.ATContentTypes中。为了直接使用文件路径,您需要对文件字段进行修补。下载开始时无需重定向到at_download。您需要找到文件字段并修补直接传递文件内容的index_html方法。上面的代码是一个带有流迭代器的实现,wh ich允许开始/暂停下载。请扩展你的Q,这样我可以调整我的A。
<a tal:attributes="href string:${edicao_url}/@@images/field_pdf" target="_blank">View PDF</a>