我希望标题没有误导。
我正在使用一个笔记应用程序,它可以让我从 Markdown 笔记中打开文件:
[read more](/path/to/file.pdf)
我找不到在特定页面上打开它的方法。我无法以 PDF 阅读器接受的格式创建链接。
有没有好的方法可以用脚本打开文件?基本上我每次都想用#page=5
替换。-p 5
我想我可以编写自己的包装脚本,这样我就可以输入:
[read more](/path/to/file.pdf#page=5)
我的脚本解析路径并将其转换为
xdg-open /path/to/file.pdf -p 5
答案1
我不确定下面的方法有多优雅。但它对我来说很正常。
我在用着重新文本作为 Markdown 编辑器并计划使用
[link-to-pdf](pdf-filename.pdf#page=2)
带页码的 PDF 的语法。
因此我定义了本地xdg-open
包装器脚本:
mkdir /home/$USER/bin
echo "export PATH=/home/$USER/bin:$PATH" >> .bashrc
并将以下代码放入/home/$USER/bin/xdg-open
:
#!/bin/sh
pdfviewer=atril
filename="$1";
case $filename in
*.pdf#page=*)
file=$(echo "$filename" | cut -d "#" -f 1);
page=$(echo "$filename" | cut -d "#" -f 2 | sed "s/page=/-p /");
$pdfviewer "$file" $page ;;
*) /usr/bin/xdg-open "$@" ;;
esac
此脚本应为可执行脚本(用 设置chmod +x /home/$USER/bin/xdg-open
),并且仅当 被找到时才会使用.pdf#page=
,否则将使用系统范围的/usb/bin/xdg-open
。
我已经在我的 Ubuntu 16.04 LTS MATE 上使用 Atril PDF 查看器测试了此方法。
您可以根据需要更改pdfviewer
变量。evince
作为免费奖励,我们可以.pdf#page=
在终端中使用语法:
xdg-open /usr/share/doc/qpdf/qpdf-manual.pdf#page=12
注意:经过这样的操作后,我们有两个xdg-open
可执行文件——的输出whereis xdg-open
应该变成xdg-open: /usr/bin/xdg-open /home/user/bin/xdg-open /usr/share/man/man1/xdg-open.1.gz
。