如何让MuPDF实现类似Evince的文档自动刷新功能?
实现MuPDF自动刷新修改后的PDF文档
好问题!MuPDF本身确实没有内置像Evince那样的自动刷新功能,官方手册里也没提相关的配置项。不过咱们可以借助一些外部工具来实现类似的效果,下面给你几个可行的方案:
方案一:文件监控脚本+模拟按键输入(Linux适用)
这个方法通过监控PDF文件的修改事件,自动给MuPDF窗口发送r按键指令,模拟手动刷新的操作:
先安装依赖工具:
sudo apt install inotify-tools xdotool # Debian/Ubuntu 系发行版 # 若是Fedora/RHEL系,用:sudo dnf install inotify-tools xdotool创建一个自动刷新脚本(比如命名为
auto-mupdf-refresh.sh):#!/bin/bash if [ -z "$1" ]; then echo "用法:./auto-mupdf-refresh.sh 你的PDF文件路径" exit 1 fi PDF_FILE="$1" # 启动MuPDF并记录进程ID mupdf "$PDF_FILE" & MUPDF_PID=$! # 持续监控文件的写入完成事件 inotifywait -m -e close_write "$PDF_FILE" | while read -r dir events file; do # 找到MuPDF窗口并发送刷新按键`r` xdotool search --pid "$MUPDF_PID" key r done # 脚本退出时自动关闭MuPDF进程 trap "kill $MUPDF_PID" EXIT给脚本添加执行权限:
chmod +x auto-mupdf-refresh.sh使用方式:
./auto-mupdf-refresh.sh your-document.pdf
方案二:跨平台文件监控工具(支持Linux/macOS)
如果是macOS用户,或者偏好跨平台工具,可以用fswatch替代inotifywait:
安装
fswatch:# macOS用Homebrew:brew install fswatch # Debian/Ubuntu:sudo apt install fswatch修改脚本中的监控部分,替换成
fswatch的逻辑:fswatch -o "$PDF_FILE" | while read -r event; do xdotool search --pid "$MUPDF_PID" key r done其余部分和方案一的脚本一致。
补充说明
这些方案本质上都是通过外部工具监控文件变化,再模拟手动刷新操作,因为MuPDF本身并没有提供自动刷新的内置配置或API接口。测试下来,这些方法基本能达到和Evince自动刷新类似的体验,而且脚本可以根据自己的需求调整(比如添加延迟避免频繁刷新)。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

