我对 Windows 特别好奇,但关于不同操作系统的答案也很有趣。
Afaik 在 URL 中,可以通过添加
#page=<page number>
字段来指示特定的 PDF 页面。根据 URI 规范,字段(使用 #<field>
语法)和查询(使用 ?<key>=<value>
语法)应该是可能的。但是,file:///path_to_document.pdf#page=20
或 file:///path_to_document.pdf?page=20
形式的 URI 对我不起作用,Windows 将整个字符串解释为路径,然后找不到它。
有什么办法可以做到这一点?我在网上找不到任何东西。
从操作系统调用文件时,有一些基于系统的规则。所以从操作系统调用文件需要某种语法,需要引用一些字符,所以这些工作,无论默认的 PDF 处理程序是什么:-
该默认处理程序可能包含不同的页面切换语法,例如 exe -page ## 文件名。
使用 URL 时需要 URL 处理程序,因此这将在 Windows 中工作
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" "file:///C:/Apps/PDF/poppler/%2333.pdf#page=20"
URL 可以在 LAN 服务器上,windows 会经常摆弄 \ 和 / 但不会同时接受两者。所以规则是“使用引号”并用安全字符替换系统标点符号并确保“记住最后一页”未激活。
使用
#
片段进行 PDF 导航是由 Adobe 引入的,用于他们的 Acrobat 插件,并已部分被一些浏览器插件采用。因此,有些在 Chrome 中以一种方式工作,但有些在 FireFox 中可能具有不同的名称或行为,因此请注意您使用的默认浏览器。
一个例子是
#search=
在 FireFox 中运行良好,但在 Chromium 中完全不同。 #:~:text=Chromium 但不适用于 PDF 或此页面!
在评论中你提到了黑曜石,它是一个封闭的产品(不是开源的,便于修改)。我发现每个链接都需要一个对象,因此在保险库中您需要使用 window.lnk 文件作为从内部调用到外部调用的垫片
在保险库里
Open 3pages.pdf @ page 2 [page 2 of 3Pages.pdf](file:///C:%5CApps%5CPIM%5CObsidian%5C3Pages.pdf%20-%20Shortcut.lnk)
外部快捷方式可能是
"C:\Program Files\SumatraPDF\SumatraPDF.exe" -page 2 C:\Apps\PIM\Obsidian\vault\3Pages.pdf
当我测试这个解决方法时,每个链接都会非常浪费 4Kb 的磁盘空间,所以可能有更好的方法来调用带有 2 个参数的 1 个文件,它在许多情况下作为“垫片”工作,但是有开源插件 -可能足够接近以适应的ins见https://github.com/MichalBures/obsidian-file-path-to-uri