繁体   English   中英

如何获取PDF页面的字节范围?

[英]How to get byte range of PDF pages?

我正在尝试通过mozilla pdf.js项目加载PDF文档,尽管我已经获得了有关如何将文档加载到页面和缩放级别( #page #page=10&zoom=page-fit )的足够知识,但是我检查了查看器的选项,发现我还可以通过URL参数将范围请求添加到PDF文件...我不知道它是如何工作的,所以我想在这里询问...

我有2个PDF文件,我的问题是,是否可以为页面上的每个按钮的PDF的URL添加范围参数,以在单击时仅加载所需的PDF页面?

我目前正在系统上使用XAMPP,但不确定该XAMPP是否支持范围请求(以进行测试),尽管该站点稍后将在线上传。 Web主机通常支持范围请求吗?

如何分别获取2个PDF文件中的所有页面的字节范围? 是否有PHP脚本或Windows实用程序从PDF获取页面范围(以字节为单位)?

并且一旦找到,当加载PDF时,如何将这些范围请求添加到viewer.html页面,这样就不会首先加载整个文档,而是仅首先加载所需的页面,然后disableAutoFetch=false可以让查看者获取剩余的PDF:

如果没有其他范围请求发送给PDF文件,则获取PDF的剩余内容

(在隐身搜索时在某些博客上阅读类似内容,不记得该博客的URL,但pdf.js Wiki在网站上未提及此内容)。

编辑:根据pdfinfo实用程序对我的PDF文件进行了优化。

Pdf优化

请求字节范围的功能不适用于最终用户。 这是正确处理“线性化” PDF(通常也称为“网络优化” PDF)的隐含要求。

可以通过此命令检查线性化/经过网络优化的PDF,例如:

 pdfinfo filename.pdf | grep Optimized:

线性化PDF的内部结构确实有些不同。 基本上,这样做是为了使符合条件的阅读器软件无需下载完整的文件,因此可以访问trailerxref表部分(在标准PDF中,这些部分始终位于文件末尾)。

需要Trailer和X / Cross Reference Table(一种内部PDF'ToC'),以便阅读器软件能够识别文件中根对象的位置,并从中识别页面和所有其他对象。

取而代之的是,读者通过不同的方式xrefxref和根对象的位置,并且它可以开始渲染第一页(其对象必须位于文件的开头),而其余文件/对象/页面都位于该位置。仍在下载。

这意味着用户可以单击书签,内部超链接,或在第一页可见后立即告诉读者“转到第80页”。 然后,读者可以从已经处理的信息中知道应该从合格的Web服务器请求哪个字节范围。

其他问题:

  • 不,在“标准” PDF中,与特定页面相关的对象几乎永远不会连续(这是非常罕见的例外)。

  • 是的,Web服务器也需要支持字节范围传递( “字节服务” )。 是的,所有现代Web服务器都可以配置为支持此功能。

  • 不,我不知道有任何实用程序可以向您报告PDF的页面范围(以字节为单位)(如果适用,则仅适用于线性化PDF)。

TL; DR: 仅当您的PDF文档首先经过“网络优化”时,才有可能要求在PDF上下文中下载字节范围! (并且请求特定字节范围必须由查看器完成,将用户对特定页面的请求转换为正确的范围编号...)


更新

资源:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM