使用 sips 将 PDF 转换为图像
Convert a PDF to Images using sips
我想使用 sips 将包含多个页面的 pdf 转换为单个图像文件。我知道还有其他几种(可能更好的)解决方案可以做到这一点,但 sips 安装在每个 mac 上并且不需要许可证。
我尝试了什么:
sips -s format png myPDF.pdf --out myIMG.png
这给了我 pdf 中第一个站点的图像。
现在我的问题是:是否可以为 pdf 的每一页获取图像?
感谢您的指教!
我不知道你是否应该这样做,但是 macOS 上的 Automator 有一个动作称为 Split PDF
,您可以使用它来将 PDF 拆分为单独的页面,然后在每个页面上使用 sips
...
要启动 Automator,请按 ⌘space 并开始键入 Automator
直到猜对并命中 ↩。这显然称为 Spotlight 搜索,是在 Mac 上查找任何内容的最快方法,但没有人告诉您!
然后新建Application,左边selectPDFs
(红色高亮),然后Split PDF
(也在红色)并将其拖入右侧的 "work-area"。
然后我将其保存为 splitter
。
然后我启动了 Terminal - 与上面启动 Automator 相同的 Spotlight Search 方法,但是请开始输入 Terminal
。
现在转到您保存 splitter
的位置,您会看到 splitter.app
:
ls -ld splitter*
drwxr-xr-x@ 3 mark staff 96 27 Nov 12:09 splitter.app
现在我想拆分一个名为 "a.pdf"
的 10 页文档,所以我 运行:
echo "a.pdf" | automator -i - ./splitter.app
示例输出
2018-11-27 12:15:21.200 automator[24004:3655998] Cache location entry for /Applications/Photos.app in cache file at /Users/mark/Library/Caches/com.apple.automator.actionCache-bundleLocations.plist is not valid: (null)
(
"/Users/mark/Desktop/a-page1.pdf",
"/Users/mark/Desktop/a-page2.pdf",
"/Users/mark/Desktop/a-page3.pdf",
"/Users/mark/Desktop/a-page4.pdf",
"/Users/mark/Desktop/a-page5.pdf",
"/Users/mark/Desktop/a-page6.pdf",
"/Users/mark/Desktop/a-page7.pdf",
"/Users/mark/Desktop/a-page8.pdf",
"/Users/mark/Desktop/a-page9.pdf",
"/Users/mark/Desktop/a-page10.pdf"
)
它在我的桌面上吐出 10 个单独的 1 页 PDF 文档,并根据输出命名。
我不知道关于 "Photos App" 缓存文件的警告是什么意思,所以如果有人知道,也许他们会告诉我它的意思以及如何摆脱它。
此外,我假设 Automator 正在以某种方式从 /System/Library/Automator/Split PDF.action
:
调用操作
file "/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF"
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit bundle x86_64] [i386:Mach-O bundle i386]
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF (for architecture x86_64): Mach-O 64-bit bundle x86_64
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF (for architecture i386): Mach-O bundle i386
但是,我不知道如何从终端 execute/call,而不需要 start/write 任何 Automator 东西。所以,如果有人,@vadian 也许知道,我也很想知道!它似乎是一个包,但如果我在上面 运行 mdls
,则没有列出包标识符,所以我不能 运行 它:
open -b <BUNDLE-IDENTIFIER>
这将完成并让您设置光栅化的分辨率:
sips -s format png in.pdf -z 1024 1024 --out out.png
对于目录和子目录中的所有 pdf 文件:
find . -name "*.pdf" -exec sips -s format png {} -z 1024 1024 --out {}.png \;
的 -exec
部分将其余部分作为每个匹配文件的命令执行,直到 \;
终止符,同时将 {}
替换为它找到的每个文件。超级好用!
我想使用 sips 将包含多个页面的 pdf 转换为单个图像文件。我知道还有其他几种(可能更好的)解决方案可以做到这一点,但 sips 安装在每个 mac 上并且不需要许可证。
我尝试了什么:
sips -s format png myPDF.pdf --out myIMG.png
这给了我 pdf 中第一个站点的图像。
现在我的问题是:是否可以为 pdf 的每一页获取图像?
感谢您的指教!
我不知道你是否应该这样做,但是 macOS 上的 Automator 有一个动作称为 Split PDF
,您可以使用它来将 PDF 拆分为单独的页面,然后在每个页面上使用 sips
...
要启动 Automator,请按 ⌘space 并开始键入 Automator
直到猜对并命中 ↩。这显然称为 Spotlight 搜索,是在 Mac 上查找任何内容的最快方法,但没有人告诉您!
然后新建Application,左边selectPDFs
(红色高亮),然后Split PDF
(也在红色)并将其拖入右侧的 "work-area"。
然后我将其保存为 splitter
。
然后我启动了 Terminal - 与上面启动 Automator 相同的 Spotlight Search 方法,但是请开始输入 Terminal
。
现在转到您保存 splitter
的位置,您会看到 splitter.app
:
ls -ld splitter*
drwxr-xr-x@ 3 mark staff 96 27 Nov 12:09 splitter.app
现在我想拆分一个名为 "a.pdf"
的 10 页文档,所以我 运行:
echo "a.pdf" | automator -i - ./splitter.app
示例输出
2018-11-27 12:15:21.200 automator[24004:3655998] Cache location entry for /Applications/Photos.app in cache file at /Users/mark/Library/Caches/com.apple.automator.actionCache-bundleLocations.plist is not valid: (null)
(
"/Users/mark/Desktop/a-page1.pdf",
"/Users/mark/Desktop/a-page2.pdf",
"/Users/mark/Desktop/a-page3.pdf",
"/Users/mark/Desktop/a-page4.pdf",
"/Users/mark/Desktop/a-page5.pdf",
"/Users/mark/Desktop/a-page6.pdf",
"/Users/mark/Desktop/a-page7.pdf",
"/Users/mark/Desktop/a-page8.pdf",
"/Users/mark/Desktop/a-page9.pdf",
"/Users/mark/Desktop/a-page10.pdf"
)
它在我的桌面上吐出 10 个单独的 1 页 PDF 文档,并根据输出命名。
我不知道关于 "Photos App" 缓存文件的警告是什么意思,所以如果有人知道,也许他们会告诉我它的意思以及如何摆脱它。
此外,我假设 Automator 正在以某种方式从 /System/Library/Automator/Split PDF.action
:
file "/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF"
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit bundle x86_64] [i386:Mach-O bundle i386]
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF (for architecture x86_64): Mach-O 64-bit bundle x86_64
/System/Library/Automator/Split PDF.action/Contents/MacOS/Split PDF (for architecture i386): Mach-O bundle i386
但是,我不知道如何从终端 execute/call,而不需要 start/write 任何 Automator 东西。所以,如果有人,@vadian 也许知道,我也很想知道!它似乎是一个包,但如果我在上面 运行 mdls
,则没有列出包标识符,所以我不能 运行 它:
open -b <BUNDLE-IDENTIFIER>
这将完成并让您设置光栅化的分辨率:
sips -s format png in.pdf -z 1024 1024 --out out.png
对于目录和子目录中的所有 pdf 文件:
find . -name "*.pdf" -exec sips -s format png {} -z 1024 1024 --out {}.png \;
的 -exec
部分将其余部分作为每个匹配文件的命令执行,直到 \;
终止符,同时将 {}
替换为它找到的每个文件。超级好用!