我在 MAC 上工作,我想在 mac 机器上使用 Qt 或 Applescript 将 .bmp 和 .JPEG 文件转换为 .PDF 文件格式。我的操作系统版本是 10.6 。
谢谢
我在 MAC 上工作,我想在 mac 机器上使用 Qt 或 Applescript 将 .bmp 和 .JPEG 文件转换为 .PDF 文件格式。我的操作系统版本是 10.6 。
谢谢
事实证明,OSX 的命令行实用程序对这种叫做sips的东西非常有用。我将其发布在另一个答案中,因为这是与我的其他答案中的 UI 脚本完全不同的方法。
您可以创建一个小包装外壳脚本来执行您需要的操作:
#!/bin/bash
sips -s format pdf "$1" --out "${1%.*}.pdf"
将其保存为例如 img2pdf,然后赋予它执行权限:
chmod +x img2pdf
然后您可以使用以下命令进行转换:
./img2pdf.txt "/Users/mmouse/Desktop/Screen Shot 2013-07-22 at 9.00.36 AM.png"
如果你真的不想在 shell 脚本中使用它并且必须有一个 Applescript,那么你可以从 Applescript 调用相关命令:
set ImgFile to "/Users/mmouse/Desktop/Screen Shot 2013-07-22 at 9.00.36 AM.png"
do shell script "imgfile=" & quoted form of ImgFile & " ; sips -s format pdf \"$imgfile\" --out \"${imgfile%.*}.pdf\""
有趣的是,如果您需要做相反的事情,即将 .pdf 转换为 .png,那么 OSX 中的Image Events 脚本扩展可以轻松做到这一点:
set ImgFile to "/Users/mmouse/Desktop/Screen Shot 2013-07-18 at 2.52.47 PM.pdf"
tell application "Image Events"
set Img to open file ImgFile
save Img as PNG
end tell
但不幸的是,图像事件脚本扩展只允许读取而不是写入 PDF 文件,因此在您的特定情况下没有用处。
有一个“来自图像的新 PDF”自动化操作......所以只需使用自动化工作流程。
这可以写得更优雅,但这里有一个快速的UI 元素脚本来驱动 Preview 应用程序执行此操作。
设置ImgFile
为您喜欢的任何文件名 - 您可以修改脚本,以便可以将其传递给参数。
set ImgFile to "/Users/mmouse/Desktop/Screen Shot 2013-07-18 at 2.52.47 PM.png"
do shell script "open -a Preview " & quoted form of ImgFile
tell application "Preview"
activate
end tell
tell application "System Events"
-- turn on UI automation - may throw a permissions dialog
if UI elements enabled is false then
set UI elements enabled to true
end if
click menu item "Export…" of menu 1 of menu bar item "File" of menu bar 1 of application process "Preview"
delay 1 -- sigh - wait for window to open
click pop up button 1 of group 1 of sheet 1 of window 1 of application process "Preview"
click menu item "PDF" of menu 1 of pop up button 1 of group 1 of sheet 1 of window 1 of application process "Preview"
click UI element "Save" of sheet 1 of window 1 of application process "Preview"
click menu item "Close Window" of menu 1 of menu bar item "File" of menu bar 1 of application process "Preview"
end tell
通常,这些关键字让脚本直接与程序用户界面的特定元素交互。在谷歌搜索“applescript ui scripting”——关于这个主题有几个很好的页面。
例如:
click menu item "Export…" of menu 1 of menu bar item "File" of menu bar 1 of application process "Preview"
这行字面上点击了“预览”应用程序的“文件”菜单中的“导出...”项。因此,“导出...”对话框被打开。然后,其余行与该对话框交互以将图像导出为 .pdf 文件。
我相信所写的脚本应该将图像转换为同一文件夹中的 .pdf,完全符合您的要求。
如果您想编写更多 UI 脚本,Automator 应用程序中的记录功能非常方便 - 您可以从该应用程序中直接选择和复制记录的步骤,然后将它们粘贴到 Applescript 编辑器中,它们将在其中显示为等效的 AppleScript 元素。此外,UI Element Inspector 或 Accessibility Inspector(在 xcode 中)对于确定您希望控制的给定应用程序的 UI 结构非常有用。