0

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

此代码直接来自 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 并运行的脚本吗?

4

2 回答 2

0

在查看 Photoshop CS3 的 AS 字典时,它指出 PDF 打开选项的高度、宽度和约束比例属性自 CS2 以来都已被弃用。(但让 Adob​​e 自己不要清理,从而加剧他们界面的不一致。)

于 2009-09-29T19:08:41.577 回答
0

我解决这个问题的方法是使用 shell 脚本确定 72DPI 的 PDF 分辨率,然后计算光栅化以达到所需尺寸的最佳分辨率。

(仅供参考:“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}

我使用“四舍五入”来确保结果等于或略高于我的目标分辨率。这只是大致准确,但比我开始的要好。

于 2009-09-30T17:02:53.560 回答