检查 PDF 文件是否已打开

检查 PDF 文件是否已打开

如何检查 LaTeX 生成的 PDF 文件当前是否被应用程序打开?

答案1

我认为您的问题与以下事实有关:如果文件在 Acrobat Reader 中打开,PDFLaTeX 无法写入文件。据我所知,旧版本的 Acrobat Reader 可以使用外部 DDE 命令关闭并重新打开,但版本 9 和 X 则不行。

Acrobat Reader 也无法支持新的 synctex 技术,因此这里最好的是苏门答腊 PDF适用于 Windows 环境。编译文档时无需关闭它,它支持通过 synctex 进行反向搜索。一些编辑器,如编辑在 Windows 上直接支持它并且反向搜索工作得很好。外壳纺织工作室(以前称为 TexMakerX)的 Windows 版本可以配置为使用 synctex 支持。或者使用内置有 synctex 支持查看器的编辑器之一,例如纺织工坊纺织机械制造商或 TexStudio。

答案2

由于您在一条评论中提到您正在使用 Linux,因此确定程序当前是否正在访问文件的标准方法是命令lsof。例如:

user@host:~$ lsof /path/to/filename.pdf
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
okular  3961  user   26r   REG   0,21  5357342 12608996 /path/to/filename.pdf

阅读评论后,您说您想终止该进程,这里有一行代码。

kill $(lsof -Fp /path/to/filename | egrep -o "[0-9]+")

解释:lsof 找到文件名,-Fp 选项提取 PID,egrep(我更喜欢使用带有扩展正则表达式语法的 grep)只抓取数字,因为它会打印 pXXXX。它被包装在 $() 中并首先进行评估,然后运行 ​​kill。感谢 kahen 知道获取 PID 的命令行选项

答案3

由于您使用的是 Linux,我可以告诉您,您可能不需要检查文件是否打开。

当我编译.tex文件(通常使用pdflatex)时,我也.pdf使用以下任一方式查看文档:

  • pdf:只需按下r即可刷新文档。
  • 表明:它会自动刷新。

相关内容