如何编写Alfred工作流压缩Finder中选中的PDF文件?
我来帮你搞定这个需求!要实现Finder选中PDF后直接在同目录生成压缩版,咱们可以把原来的Automator应用改成Finder快速操作(旧版系统叫「服务」),这样右键就能触发,不用先打开应用再选文件。下面是具体步骤:
改造Automator为Finder右键快速操作
步骤1:新建快速操作模板
- 打开Automator,选择「快速操作」模板(如果是macOS Mojave及以前版本,选「服务」)
- 在顶部的工作流程设置里:
- 把「工作流程接收当前」改成「PDF文件」
- 「位于」选择「Finder.app」
这样只有在Finder选中PDF文件时,这个操作才会出现在右键菜单里
步骤2:替换文件选择逻辑,添加压缩脚本
原来的流程里应该有「选择文件」这类手动选路径的动作,直接删掉就行——快速操作会自动接收Finder选中的PDF文件。接下来添加核心的压缩逻辑:
- 在左侧动作库搜索「运行Shell脚本」,添加到流程里
- 把默认的脚本内容替换成下面的代码,它会自动在选中PDF的同目录生成带「_压缩版」后缀的文件:
for f in "$@" do # 提取文件所在目录和不带后缀的文件名 file_dir=$(dirname "$f") file_name=$(basename "$f" .pdf) # 定义压缩后的输出路径 output_path="$file_dir/${file_name}_压缩版.pdf" # 用Mac自带的sips工具压缩(适合图片多的PDF) sips -s format pdf -s formatOptions low "$f" --out "$output_path" done
补充说明:如果你的PDF以文本为主,
sips的压缩效果有限,可以改用ghostscript(需先通过Homebrew安装:brew install ghostscript),把上面的sips命令替换成:gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$output_path" "$f"
-dPDFSETTINGS=/screen是最高压缩率的屏幕质量,也可以选/ebook(电子书级)或/printer(打印级)
步骤3:保存并测试
- 给这个快速操作起个好记的名字,比如「压缩PDF到同目录」,保存后它会自动出现在Finder的右键菜单里(一般在「快速操作」或「服务」子菜单下)
- 现在在Finder选中任意PDF,右键点击这个操作,几秒钟后就能在同目录看到压缩好的文件了
可选优化
- 如果想让压缩文件直接覆盖原文件(强烈建议先备份再尝试),可以把脚本里的
output_path改成"$f" - 可以在脚本动作后面添加「显示通知」动作,压缩完成后弹出系统通知提醒你
内容的提问来源于stack exchange,提问作者user8864088
相关产品推荐
相关产品推荐

