【问题标题】:Convert a PDF to Images using sips使用 sips 将 PDF 转换为图像
【发布时间】:2018-11-27 09:38:45
【问题描述】:

我想使用 sip 将包含多页的 pdf 转换为单个图像文件。我知道还有其他几种(可能更好)解决方案可以做到这一点,但 sips 安装在每台 Mac 上,不需要许可证。

我尝试了什么:

sips -s format png myPDF.pdf --out myIMG.png

这给了我 pdf 中第一个站点的图像。

现在我的问题:是否有可能为 pdf 的每一页获取图像?

感谢您的建议!

【问题讨论】:

标签: macos shell pdf sips


【解决方案1】:

我不知道您是否应该这样做,但 ma​​cOS 上的 Automator 有一个名为 Split PDF 的操作,您可以使用它将 PDF 拆分为单独的页面,然后在每个页面上使用 sips...

要启动 Automator,请按 空格 并开始输入 Automator 直到它猜对并点击 。这显然被称为 Spotlight 搜索,是在 Mac 上查找任何内容的最快方法,但没有人告诉你!

然后创建一个新的应用程序,然后选择左侧的PDFs(以红色突出显示),然后选择Split PDF(也是红色)并将其拖到“工作区”中右边。

然后我将其保存为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 文档。


我不知道关于“照片应用”缓存文件的警告是什么意思,所以如果有人知道,也许他们会告诉我这是什么意思以及如何摆脱它。


另外,我认为 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

但是,我不知道如何从终端执行/调用它,而无需启动/编写任何 Automator 东西。所以,如果有人,@vadian 也许知道,我也很想知道!它似乎是一个包,但如果我在其上运行 mdls,则没有列出包标识符,所以我无法运行它:

open -b <BUNDLE-IDENTIFIER>

【讨论】:

  • 为了更正确,您应该使用Render PDF pages as Images 操作
【解决方案2】:

这将完成它并让您设置光栅化的分辨率:

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 部分将其余部分作为每个匹配文件的命令执行,直到\; 终止符,同时用它找到的每个文件替换{}。超级好用!

【讨论】:

  • 对于文件夹中的所有文件?
  • @UlfGjerdingen:找到 . -name "*.pdf" -exec sips -s format png {} -z 1024 1024 --out {}.png \;
  • 啊,当然。谢谢!我需要开始记住那些事情:D
猜你喜欢
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多