首页 > 解决方案 > 如何在 DSPACE 中嵌入 PDF 查看器

问题描述

如何在我的 DSPACE 实例中嵌入 PDF 查看器。我尝试了很多解决方案,但没有任何效果。DSPACE 官方网站上有很多建议 https://wiki.duraspace.org/display/DSPACE/Document+Viewer+Integration 没有解决方案有文档说明如何在 dspace 代码中配置这些查看器。我想要一个用于嵌入 PDF 查看器的明智的灵魂。请帮我解决这个问题。提前致谢。

我已经通过这些网站进行了研究 - https://wiki.duraspace.org/display/DSPACE/Document+Viewer+Integration http://peterpants.blogspot.com/2010/02/document-preview-in-dspace-using- google.html

标签: pdfdspacepdf-viewer

解决方案


这取决于您使用的 DSpace 的版本和 UI。我将大致描述我们为将 PDF.js 嵌入 DSpace 6.3 JSPUI 所做的工作。我们在github上发布了所有必要的代码更改,因此请查看那里的详细信息。

DSpace 使用 maven 覆盖将本地代码更改与正式发布的代码分开。因此,我将在以下描述中使用这些叠加层中的路径。如果我们更改的文件在您的本地代码存储库中不存在,您必须从[dspace-source]/dspace-jspui/src/main. 如果您直接在那里进行代码更改,它也应该有效,但我认为这是不好的做法。

我们添加了PDF.js和它需要的所有文件dspace/modules/jspui/src/main/webapp/static/pdfjs。然后我们改变了dspace/modules/jspui/src/main/java/org/dspace/app/webui/jsptag/ItemTag.java。此类构建项目视图。虽然我希望有更好的关注点分离,但这个类会生成一些 HTML 代码,包括列出所有比特流的项目视图部分。对于列出的每个文件,我们检查其 mime 类型是否设置为application/pdf并为这些文件添加一个“预览”按钮。预览按钮链接到呈现 pdf 查看器并加载目标文件的 html 站点。我们还为默认的“打开/查看”按钮添加了“下载”属性,以确保它不会启动浏览器的另一个 PDF 查看器,而是下载文件。拥有一个名为“预览”的按钮可以打开嵌入式 PDF 查看器,以及一个名为“下载”的按钮可以将文件下载到用户的计算机,这一点很重要。您可以在 DSpace 的消息目录中将按钮的名称从“打开/查看”更改为“下载”。最后但同样重要的是,我们将 JavaScript 添加到dspace/modules/jpsui/src/main/webapp/display-item.jsp. JavaScript 禁止 PDF 查看器作为普通站点加载,而是使用 JQuery UI 将其作为项目视图的覆盖加载。然后我们编写了一个小的 CSS 文件,帮助我们在项目视图中定位该叠加层,并在dspace/modules/jspui/src/main/webapp/layout/header-default.jsp.

如上所述,所有这些更改都在github上的 DSpace 源代码 BSD 许可证下作为开源发布。


推荐阅读