Pdf.js: 功能:两页视图

创建于 2011-10-02  ·  29评论  ·  资料来源: mozilla/pdf.js

功能要求:添加两页视图按钮
同样,最好有一个100%的按钮,并在工具栏中有“页面适合”。

1-ux 1-viewer 2-feature

最有用的评论

您可以使用http://54.67.70.0:8877 / 5e5412c2765c9bd / web / viewer.html上的预览版本对其进行测试。

太好了,谢谢。 为了对其进行测试,必须选择“网格滚动”并将缩放比例减小到100%。 结果:

  1. 设置:打开新PDF时会记住网格滚动和显示侧边栏设置,但是不会记住缩放级别(打开新PDF时始终默认为自动缩放,但这也适用于标准pdf.js)
  2. 性能:已通过一些带有大量文本和大图像的PDF进行了测试。 似乎与标准pdf.js具有相同的性能,但是在很多情况下,标准pdf.js比例如foxit pdf阅读器要慢,因为“预读”页面不足。 这意味着在快速滚动时不久就可以看到装载轮。 此外,RAM中不会“记住”已读取的页面。 再次向上滚动将再次显示加载轮。 但是如上所述,这似乎是通用标准pdf.js的问题。
  3. 兼容性:经过测试的非A4大小,一个PDF页面大小不同。 在一个非标准PDF上,缺少标头图像,但是对于标准pdf.js也是如此。
  4. 技术方面:与我的标准FF一样,一切正常(亚像素字体渲染,硬件加速...)。 也可以:具有Javascript操作的PDF / A和PDF。 具有文本输入元素的PDF不能正常工作,但是同样不能与标准pdf.js一起工作(“ PDF包含公式数据。不支持对论坛进行编辑”)。
  5. 压力:测试了50个PDF和一些折磨成千上万的PDF。

也许我会用不同的名称命名(例如“多页浏览”,但我不是母语人士。我只是没有直接意识到此设置的作用)。

结论:网格滚动版本与标准非网格pdf.js完全一样。 pdf.js总体上存在一些可以改进的问题,但与网格滚动PR无关。 网格滚动版本绝对很棒,如果“标题栏”将自动隐藏,那就太棒了。 在Chrome的PDF查看器中,只有在鼠标移动或触摸屏幕时,此栏才会显示几秒钟。 除此之外,我已经在考虑如何将此网格滚动版本用作我的标准PDF阅读器,直到在FF stable中可用;)

所有29条评论

关于100%的页面适应性,这是Adobe Reader所做的,我同意将其包含在PDF.js中会很好。

至于两页的观点,我也同意。

+1

在过去约4年中,为此有任何工作吗?

由于对此仍然有些困惑,所以让我澄清一下。 对此有一个进行中的拉动请求,但是主要问题是这是很多代码,因为当时查看器不是非常模块化,并且我们没有集成测试。 我们仍然没有针对查看器的集成测试,因此所有测试都必须手动进行。 它可能看起来并不像,但这实际上是一项难以支持的功能。 如果页面太宽会怎样? 不同尺寸的页面会发生什么?

这个问题是有原因的。 我们仍将其视为一项有用的功能,但是必须有人花时间来进行这项工作。 如果有人愿意为此做准备,那么我们首先必须对查看器进行某种形式的自动测试,否则引入回归的风险将很大。

+1

请使用GitHub的+1反应按钮,而不是在此处添加+1评论。 使用+1反应按钮可以过滤具有多个+1的问题,从而使我们可以更好地确定问题的优先级。

好。 我使用了反应按钮而不是评论。 谢谢

我想要这样,所以我可以支持我实际考虑书籍的方式。 早在超文本出现之前,书本就存在一些“线性”的栏杆,有些人甚至主张获取一本书的副本,以便您可以将它们分开并粘贴整本书的巨大海报。 他们是一个名为“数字莎士比亚”的早期项目,该项目将他的所有戏剧都编码为展示后记,以便您可以“飞越”他的作品。 这对我来说有点过于形式化,所以我的惯例是考虑将每十页的集合分成5个两页的跨页,它们像骰子的五个面上的斑点那样排列,例如:

[0 | 1] [2 | 3]
``[4 | 5]
[6 | 7] [8 | 9]

现在对此有一个很高的要求,可以将它们分成几百个。

关键是我可能有机会使用pdf.js进行更多操作,但是我首先需要两页显示。

👍

@timvandermeij感谢您的更新。 我也非常希望看到此功能的beta版!

我必须做什么才能使您添加此功能? 什么?

下一步是帮助添加自动集成测试:#6505

这是“一个不错的初学者错误,因为它不需要大量的PDF.js代码库知识。也许其他JS项目的贡献者都具有集成测试的经验来帮助我们解决这个问题。第一步是选择并添加集成测试框架。”

有什么理由应该在pdf.js本身中实现此功能? 在基于pdf.js的阅读器应用程序中实现它很简单,并且不会冒乱渲染器的风险。 让pdf.js像以前一样处理单个页面,以所需的任何几何形状使用两个(或更多,如果需要)画布元素,然后启动。

根据pdf.js上一个/下一个示例,一个简单的演示只花了不到几分钟的时间来编写:

https://jsfiddle.net/Yetangitu/1egqfefu/4/

使用按钮或单击左/右页面进行导航...

@tfer这是您的“可笑模式”查看器: https ://jsfiddle.net/Yetangitu/ht04sp3b/

(增加比例因子,在大显示器上显示,利润!)

据我所知,不需要pds.js支持多页渲染,这可以在更高层次上得到充分处理。

@yurydelendik此解决方案以什么方式令人困惑? 我正在使用它为Nextcloud / Owncloud构建PDF查看器,它工作正常。

image

image

image

该解决方案以什么方式令人困惑?

它不适合我们的演示查看器。

https://jsfiddle.net/Yetangitu/1egqfefu/4/

@Yetangitu根据我们的示例编写具有双页显示的自定义查看器对我来说是完全可以的,但它不是我们可以接受的PR。 我们是否可以通过引用您上面建议的解决方案解决此问题来解决此问题? 如果没有,请解释/显示如何将您的代码应用于演示查看器。

请不要关闭此问题! 使用无法解决中心问题的解决方案,打开和关闭了无数其他问题:PDFjs非常需要用于2页视图的内置方法。 在一页视图中,许多PDF(例如期刊文章,手册等)看起来都不错。 但是,自古腾堡(Gutenberg)起,《全书》(ALL BOOKS)被设计为LR布局。 我在生产站点上使用@Snuffleupagus的PR#3723,尽管目前效果不错,但值得进一步开发。

@yurydelendik并不意味着它是一个完整的解决方案,只是向那些多年来一直在寻找具有可传播性的JS PDF查看器的人们提供了一个提示。 它可以集成到演示查看器中,但这需要一些工作。 由于我正在构建的查看器是要像我之前制作的EPUB查看器一样外观和动作(即,水平翻页,在可行的情况下看起来像“书本”等),因此它与演示查看器有很大不同,因此它不是修补可扩展位的简单问题。

我确实认为这种功能属于查看器应用程序,而不属于基本的PDF解码/渲染库pdf.js,因此,我对pdf.js的反应。

几天后,我将为那些想尝试一下该概念的人发布具有PDF功能的Reader。 由于Reader是Nextcloud / Owncloud应用程序,因此您需要在其中某个地方方便使用这些软件之一...

@yurydelendik您的EPUB查看器的链接是什么。 最好是有一个默认情况下可以包含一个简单的JS库,以帮助人们像他们当前查看PDF那样更轻松地查看EPUB。 也许这是一个新问题(或新项目)。

现在是2018年,现在已经浮动了7年。 哇! 有任何更新/时间表吗?

注释上方的拉取请求可实现此目的。 欢迎任何人帮助我们进行测试,以确保一切都没有中断。

仅供参考,Nextcloud和Owncloud的Reader应用程序现在支持PDF,包括我提到的2页(传播)模式。 可以在Github上找到:

https://github.com/Yetangitu/owncloud-apps/tree/master/files_reader

并在Nextcloud应用程序存储库中:

https://apps.nextcloud.com/apps/files_reader

它也将很快出现在Owncloud存储库中。

image

注释上方的拉取请求可实现此目的。 欢迎任何人帮助我们进行测试,以确保一切都没有中断。

渴望测试,您需要什么? 是否可以测试任何二进制Blob或编译的软件? 为什么不通过夜间Beta版主周期进行测试?

仅供参考,Nextcloud和Owncloud的Reader应用程序现在支持PDF

太酷了,现在我们只需要弄清楚如何作为独立查看器运行它即可。 苏门答腊岛也可以查看2页,但没有子像素渲染。 FF具有亚像素渲染,但没有2页标准视图。 因此,当前在Windows上没有可用的开源PDF查看器:/

您可以使用http://54.67.70.0:8877 / 5e5412c2765c9bd / web / viewer.html上的预览版本对其进行测试。 有关更多信息,请参阅#9208。

您可以使用http://54.67.70.0:8877 / 5e5412c2765c9bd / web / viewer.html上的预览版本对其进行测试。

太好了,谢谢。 为了对其进行测试,必须选择“网格滚动”并将缩放比例减小到100%。 结果:

  1. 设置:打开新PDF时会记住网格滚动和显示侧边栏设置,但是不会记住缩放级别(打开新PDF时始终默认为自动缩放,但这也适用于标准pdf.js)
  2. 性能:已通过一些带有大量文本和大图像的PDF进行了测试。 似乎与标准pdf.js具有相同的性能,但是在很多情况下,标准pdf.js比例如foxit pdf阅读器要慢,因为“预读”页面不足。 这意味着在快速滚动时不久就可以看到装载轮。 此外,RAM中不会“记住”已读取的页面。 再次向上滚动将再次显示加载轮。 但是如上所述,这似乎是通用标准pdf.js的问题。
  3. 兼容性:经过测试的非A4大小,一个PDF页面大小不同。 在一个非标准PDF上,缺少标头图像,但是对于标准pdf.js也是如此。
  4. 技术方面:与我的标准FF一样,一切正常(亚像素字体渲染,硬件加速...)。 也可以:具有Javascript操作的PDF / A和PDF。 具有文本输入元素的PDF不能正常工作,但是同样不能与标准pdf.js一起工作(“ PDF包含公式数据。不支持对论坛进行编辑”)。
  5. 压力:测试了50个PDF和一些折磨成千上万的PDF。

也许我会用不同的名称命名(例如“多页浏览”,但我不是母语人士。我只是没有直接意识到此设置的作用)。

结论:网格滚动版本与标准非网格pdf.js完全一样。 pdf.js总体上存在一些可以改进的问题,但与网格滚动PR无关。 网格滚动版本绝对很棒,如果“标题栏”将自动隐藏,那就太棒了。 在Chrome的PDF查看器中,只有在鼠标移动或触摸屏幕时,此栏才会显示几秒钟。 除此之外,我已经在考虑如何将此网格滚动版本用作我的标准PDF阅读器,直到在FF stable中可用;)

对于那些寻求快速清理的黑客,只需在(viewer.html)上添加一些CSS魔术:

<style>
#viewer {
  margin-left:20px;
}
div.page {
  float:left;
}
</style>

将缩放比例设置为75%左右(=在我的1440x900屏幕上为两页浏览)

有什么理由应该在pdf.js本身中实现此功能? 在基于pdf.js的阅读器应用程序中实现它很简单,并且不会冒乱渲染器的风险。

是的,我同意,我不需要使用pdf.js代码...

对于那些寻求快速清理的人,只需在(viewer.html)上添加一些CSS魔术...

感谢您的配合。

作为总结,有人可以写一个扩展来注入@icedman的workaroud吗? 这样一来,只需单击一下即可切换1p / 2p视图? 我有一个扩展名“ Kill Sticky”,可以在本地注入/修改页面,因此应该可行。

谢谢

此页面是否有帮助?
0 / 5 - 0 等级