是否可以为指向特定页面的 pdf 指定一个 URI?

问题描述 投票:0回答:1

我对 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 将整个字符串解释为路径,然后找不到它。

有什么办法可以做到这一点?我在网上找不到任何东西。

windows uri
1个回答
1
投票

从操作系统调用文件时,有一些基于系统的规则。所以从操作系统调用文件需要某种语法,需要引用一些字符,所以这些工作,无论默认的 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

© www.soinside.com 2019 - 2024. All rights reserved.