我正在尝试创建一个 PDF 分析网络应用程序,但我被卡住了。我想允许用户打开其中有超过 300 页的 pdf 的某个页面。那么,谁能告诉我如何使用 Django 在特定页面的新选项卡中打开 pdf 文件?
编辑—— 实际上 Django 代码在 AWS 服务器上运行,我希望用户在分析后存储在我的媒体文件夹中的特定页面上查看并打开 PDF。
我正在尝试创建一个 PDF 分析网络应用程序,但我被卡住了。我想允许用户打开其中有超过 300 页的 pdf 的某个页面。那么,谁能告诉我如何使用 Django 在特定页面的新选项卡中打开 pdf 文件?
编辑—— 实际上 Django 代码在 AWS 服务器上运行,我希望用户在分析后存储在我的媒体文件夹中的特定页面上查看并打开 PDF。
这取决于哪个库等。
正如@ps_ 所说,这并不是一个真正的 django 问题。
来自 Adobe.com 要将 HTML 链接定位到 PDF 文件中的特定页面,请将 #page=[page number] 添加到链接 URL 的末尾。
例如,此 HTML 标记打开名为 myfile.pdf 的 PDF 文件的第 4 页:
<A HREF="http://www.example.com/myfile.pdf#page=4">
我能够解决我的问题,但每次尝试使用不同的库和 PDF.js 都失败了。解决方案非常简单。所以我所做的是:
第 1 步:将 MEDIA_ROOT 和 MEDIA_URL 添加到settings.py
.
# path to the MEDIA directory
MEDIA_ROOT = '/home/absolute/path/to/your/media/folder'
# URL to use to open MEDIA
MEDIA_URL = '/media/'
第2步:urls.py
使用以下代码更新:
from . import settings
import django
urlpatterns = [
...
...
url(r'^(.*?)media/(?P<path>.*)$', django.views.static.serve,
{'document_root': settings.MEDIA_ROOT}),
]
第 3 步:现在我onclick
在 HTML 标记中创建了一个:
我的 pdf 文件位于媒体目录内的文档文件夹中
onclick="window.open('media/documents/{{Your/Pdf/File/Path.pdf}}#page={{Page_number_to_open}}')"
这个问题的答案真的不是 Django 特定的,而是取决于您用来显示 PDF 的查看器。如果您依赖浏览器来显示它,根据Adobe的说法,您可以在 url 中使用锚链接 (#page=)(例如http://www.example.com/myfile.pdf#page=XX)虽然我认为对此的支持在 Firefox 和 Chrome 之外有所不同。
另一方面,如果您使用的是PDF.JS,您将能够以编程方式选择要呈现的页面。您可以在查看器的示例页面上查看如何执行此操作,此处为。