如何使用Applescript在Photoshop中使用特定像素尺寸栅格化PDF?

时间:2009-09-26 00:30:45

标签: pdf applescript photoshop

所以我试图将一堆PDF批量转换为JPEG文件,作为更大的Applescript的一部分,我发现“PDF Open Options”中的一些参数被忽略了。即,“高度”,“宽度”和“约束比例”参数。

此代码直接取自Photoshop CS3脚本指南(当然,文件名已更改):

tell application "Adobe Photoshop CS3"
set myFilePath to alias "WABEL0457937:Users:Charles:Desktop:8925.pdf"
with timeout of 10000 seconds
open myFilePath as PDF with options {class:PDF open options, height:pixels 100, width:pixels 200, mode:RGB, resolution:72, use antialias:true, page:1, constrain proportions:false}
end timeout
end tell

在结果文件中,“分辨率”是正确的,但高度和宽度是使用PDF的原始高度和宽度乘以分辨率计算的,并且图像被约束为原始比例。

我认为这可能是指定分辨率和高度/宽度(以像素为单位)的碰撞,所以我尝试省略分辨率,但它只是默认为300.

其他人创建了一个打开PDF并运行到此的脚本吗?

2 个答案:

答案 0 :(得分:0)

在查看适用于Photoshop CS3的AS词典时,它指出PDF开放选项的高度,宽度和约束比例属性自CS2以来都已弃用。 (但请将其留给Adobe不要自行清理,从而进一步加剧其界面的不一致。)

答案 1 :(得分:0)

我这样做的方法是使用shell脚本确定PDF在72DPI的分辨率,然后计算栅格化的最佳分辨率以达到所需的尺寸。

(仅供参考:“str_replace”是一个自定义函数,用于查找和替换字符串中的文本 - 它不是内置的Applescript函数。)

set pageHeight to do shell script "/usr/bin/mdls -name kMDItemPageHeight " & quoted form of (POSIX path of this_item as string)
set pageHeight to my str_replace("kMDItemPageHeight = ", "", pageHeight)
set pageWidth to do shell script "/usr/bin/mdls -name kMDItemPageWidth " & quoted form of (POSIX path of this_item as string)
set pageWidth to my str_replace("kMDItemPageWidth = ", "", pageWidth)

if (pageHeight as number) is greater than (pageWidth as number) then
set pdf_resolution to round (1000 / (pageHeight as number) * 72) rounding up
else
set pdf_resolution to round (1000 / (pageWidth as number) * 72) rounding up
end if

open this_item as PDF with options {class:PDF open options, resolution:pdf_resolution, mode:RGB, use antialias:true, suppress warnings:false, use page number:true, page:1, crop page:media box}

我使用“四舍五入”来确保结果等于或略高于我的目标分辨率。它只是球场准确,但它比我开始时更好。