将文件另存为具有固定扩展名的两个单独文件格式的Applescript

时间:2014-11-24 13:55:31

标签: macos file applescript photoshop finder

我经常需要将艺术文件的屏幕截图保存为两个不同的文件。第一个是PDF,文件名末尾有" _prv" 。第二个是带有" _thm" 文件名的JPG。

因此,文件名的例子是:

1733419_prv.pdf
1733419_thm.jpg

" 1733419" 部分将是特定于作业的,如果脚本会提示用户输入该信息,那将会很好。如果脚本可以提示用户输入新文件的位置也会很好。

这可能是AppleScript还是Photoshop脚本?

非常感谢您的帮助! 布赖恩

1 个答案:

答案 0 :(得分:0)

更新了答案

我稍微改进了脚本。如果在输入作业参考编号时选择Cancel,它现在将无效并正常退出。它现在还将处理作业参考号中的空格。它还会在桌面上创建一个输出目录,因此如果输入作业参考编号1234,您将在桌面上看到一个名为1234的目录(文件夹),其中包含2个输出文件。< / p>

#!/bin/bash

# Ask user for job reference, store in $ref
ref=$(osascript -e 'Tell application "System Events" to display dialog "Enter Job Reference:" default answer ""' -e 'text returned of result' 2>/dev/null)

# Quit without doing anything if user didn't enter anything
[ -z "$ref" ] && exit

# Make a place for the output files
DIRECTORY="$HOME/Desktop/$ref"
mkdir "$DIRECTORY" 2> /dev/null   # Don't worry if it already exists
cd "$DIRECTORY"

# Get user to select area to grab, then save as JPEG
screencapture -i -t jpg "${ref}_thm.jpg"

# Convert JPEG to PDF
sips -s format pdf "${ref}_thm.jpg" --out "${ref}_prv.pdf" > /dev/null 2>&1

原始答案

我希望这接近你的意思。将其作为grab保存在HOME目录中,然后启动终端并键入:

chmod +x grab

这将使文件可执行。

#!/bin/bash

# Ask user for job reference, store in $ref
ref=$(osascript -e 'Tell application "System Events" to display dialog "Enter Job Reference:" default answer ""' -e 'text returned of result' 2>/dev/null)

# Get user to click on a window to grab, then save as JPG
screencapture -w -i -t jpg ${ref}_thm.jpg

# Convert JPG to PDF
sips -s format pdf ${ref}_thm.jpg --out ${ref}_prv.pdf > /dev/null 2>&1

您现在可以输入:

./grab

或双击Finder中名为grab的文件。

它会询问您的工作参考,然后启动屏幕抓取。你应该点击一个窗口告诉它你的意思。然后它将创建您要求的两个文件。

这种方法的优点是不需要安装额外的软件 - 例如ImageMagick或其他任何软件,因为它只使用内置的OSX工具。