概述
Edge浏览器从95版本开始就支持重新打开PDF时跳转到上次阅读位置的功能,详见
https://techcommunity.microsoft.com/discussions/edgeinsiderannouncements/pick-up-where-you-left-off-on-microsoft-edge-pdf-reader/2771351
在使用过程中发现,多数PDF文档在用Edge重新打开时确实能够自动跳转至上次查看的位置,但是部分PDF再次打开时却无法跳转,本文将浅析其中的原因并给出解决方法。
原理浅析
在Edge浏览器启用了PDF视图设置的情况下,Edge浏览器会在本地保存用户阅读PDF时的状态信息,包括页面位置、缩放比例和滚动位置,每次阅读PDF时,浏览器会记录当前状态并存储在本地,重新打开时读取这些信息并恢复。
而那些无法恢复上次浏览状态的PDF中往往都定义了一个OpenAction属性,这个属性用于定义PDF文档打开时的默认行为,如跳转到特定页面或执行JavaScript脚本。
如果PDF文档定义了OpenAction属性,该属性就会覆盖Edge浏览器默认的阅读状态恢复功能,比如OpenAction定义为跳转到第一页,那么用户每次用Edge打开PDF时就会跳转到第一页,而不是上次阅读的位置。
所以,只需要修改一下PDF文档,将无法自动跳转的PDF文档中的OpenAction属性删除,这个问题就能迎刃而解。
解决方法
大体上有两种方法删除OpenAction属性,一种是使用Adobe Acrobat Pro来修改PDF的文件属性,还有一种是使用其他PDF编辑工具修改。
如果你电脑上恰好安装了Acrobat Pro并且需要修改的PDF不多,那么使用方法一足够;而如果你的电脑上没有Acrobat Pro或者需要批量修改多个PDF,那么方法二更适合你。
不过,在修改PDF前,要先确保Edge浏览器版本高于95,并且已开启PDF视图设置。
你可以直接在Edge地址栏输入edge://settings/content/pdfDocuments或者按以下步骤查看或开启PDF视图设置
在确认了PDF视图设置已开启后,如果还是有部分PDF文档无法做到再次打开时跳转到上次浏览的位置,就能使用如下方法修改PDF来解决。
方法一:使用Acrobat Pro
用Acrobat打开需要修改的PDF,打开文件属性
在文件属性中选择初始视图,将放大率设为默认,随后点击确认
最后,将修改保存到PDF文件
这样就能删除PDF中的OpenAction属性。
方法二:用其他工具
这里使用一个python第三方库pypdf对PDF进行修改,当然,此处仅为抛砖引玉,使用其他编程语言或库修改PDF也是可行的。
首先要在本地安装好python环境,网上有很多安装python的教程,在此不再赘述。
然后用pip安装pypdf库
pip install pypdf
编写python脚本
将以上代码保存为一个patch_pdf_for_edge.py文件,并放在PDF文件所在的文件夹中,命令行运行此脚本即可将当前目录下的PDF文档中的OpenAction属性删除。
在使用以上方法删除了PDF的OpenAction属性后,尝试用Edge打开可以发现PDF能够跳转到上次浏览的位置了。