Mac下如何通过命令行在单个PDF阅读器中以独立交错窗口打开超过15个PDF文件
Mac下如何通过命令行在单个PDF阅读器中以独立交错窗口打开超过15个PDF文件
我之前也碰到过Preview这个15个文件的限制问题,明明已经把系统和Preview的设置都调到“强制新窗口”了,超过15个还是会自动合并成标签页,用open -n又会开一堆Preview实例,窗口还叠在一起,完全没法用。下面给你两个可行的解决方案,优先满足你想用Preview的需求:
方案一:用AppleScript控制Preview实现单实例多交错窗口
Preview的这个15个文件限制是内置的命令行触发机制,但我们可以通过AppleScript直接和Preview的应用交互,绕过这个限制,还能顺便让窗口自动错开位置。
步骤1:编写AppleScript脚本
创建一个名为open_preview_staggered.scpt的脚本文件,内容如下:
on run argv -- 初始窗口位置和偏移步长,可根据你的屏幕大小调整 set startX to 20 set startY to 20 set offsetSize to 30 set windowWidth to 600 set windowHeight to 800 repeat with index from 1 to count of argv set pdfPath to POSIX file (item index of argv) as alias tell application "Preview" activate -- 打开PDF文件,强制在新窗口 open pdfPath -- 调整当前窗口的位置,实现交错效果 set currentWindow to front window set bounds of currentWindow to {startX + (index - 1) * offsetSize, startY + (index - 1) * offsetSize, startX + (index - 1) * offsetSize + windowWidth, startY + (index - 1) * offsetSize + windowHeight} end tell -- 给Preview一点响应时间,避免窗口创建冲突 delay 0.1 end repeat end run
步骤2:在命令行调用脚本
假设你的PDF文件路径是通过某个命令输出的(比如find . -name "*.pdf" | head -30),直接把这些路径传给脚本即可:
osascript open_preview_staggered.scpt $(your_command_that_outputs_pdf_paths)
比如你要打开当前目录下前30个PDF:
osascript open_preview_staggered.scpt $(ls *.pdf | head -30)
这样每个PDF都会在同一个Preview实例的独立窗口中打开,而且窗口会以递增的偏移量排列,不会重叠在一起。
方案二:换用支持命令行多窗口的PDF阅读器(如Skim)
如果觉得AppleScript有点麻烦,也可以试试Skim这款开源PDF阅读器,它原生支持命令行打开独立窗口,而且默认就会让窗口错开排列。
步骤1:安装Skim
可以通过Homebrew安装:
brew install --cask skim
步骤2:命令行批量打开
直接用skim命令的--new-window参数,逐个打开文件(或者批量):
for pdf in $(your_command_that_outputs_pdf_paths); do skim --new-window "$pdf" done
这样每个PDF都会在Skim的独立窗口中打开,窗口会自动错开,不需要额外调整位置。
补充说明
确认你已经设置了以下选项,确保上述方案正常工作:
- 系统设置 > 桌面与程序坞 > 窗口 > 打开文稿时优先使用标签页:设为“从不”
- Preview设置 > 图像 > 在各自的窗口中打开每个文件:勾选“是”
备注:内容来源于stack exchange,提问作者Timur Shtatland
相关产品推荐
相关产品推荐

