You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过LaTeX生成的PDF能否在evince中点击触发Linux命令执行

问题解答

1. PDF点击触发Linux命令执行的可行性

  • 包括evince在内的所有主流PDF阅读器,默认完全禁用PDF内嵌命令执行功能。该功能属于历史遗留的高风险安全漏洞,早已被所有成熟阅读器厂商屏蔽,常规场景下无法实现你的需求。
  • LaTeX层面原本可通过hyperref包的\pdflaunch命令绑定可执行动作,示例代码如下:
\usepackage{hyperref}
% 语法:\pdflaunch[可选参数]{待执行命令}{PDF中显示的点击文本}
\pdflaunch{cmd=xdg-open ~/Desktop}{点击打开桌面目录}
  • 上述代码编译生成的PDF在evince中点击时不会触发任何命令执行,evince会直接忽略该类动作配置,不存在公开的配置开关可以开启该功能,除非你自行修改evince源码编译自定义版本。

2. 获取evince当前显示页码的方法

该需求可通过evince原生提供的D-Bus接口实现,无需修改PDF内容,操作步骤如下:

  • 第一步:获取目标PDF对应的文档对象路径,将命令中的路径替换为你的PDF文件的绝对路径:
gdbus call --session --dest org.gnome.evince.Daemon --object-path /org/gnome/evince/Daemon --method org.gnome.evince.Daemon.FindDocument 'file:///你的PDF文件绝对路径.pdf' false

执行后会返回类似(objectpath '/org/gnome/evince/Daemon/Window1/Document0')的结果,引号内的内容就是文档对象路径。

  • 第二步:调用接口查询当前页码,将<文档对象路径>替换为第一步拿到的结果:
gdbus call --session --dest org.gnome.evince.Daemon --object-path <文档对象路径> --method org.gnome.evince.Document.GetPage

返回的数字为从0开始计数的页码,加1即可得到用户视角下的实际显示页码。


内容的提问来源于stack exchange,提问作者Ralf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:36:08