![如何设置 OSX 服务来删除 PDF 的第一页?](https://linux22.com/image/1303534/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20OSX%20%E6%9C%8D%E5%8A%A1%E6%9D%A5%E5%88%A0%E9%99%A4%20PDF%20%E7%9A%84%E7%AC%AC%E4%B8%80%E9%A1%B5%EF%BC%9F.png)
我经常收到 PDF 文件,其中第一页要么是空白的,要么只是封面页,我不需要它。您能否建议一种快速有效的方法(Applescript、服务或???)让我只删除第一页并保存文件?
如果可以通过预览或 Adobe Acrobat Professional 自动实现这一点,那将是最理想的。
有任何想法吗?
答案1
您可以使用自动机工作流程。它比大多数工作流程要复杂一些,因此在实施时要小心谨慎。
这篇文章包含二版本:一个较短,将输出存储Processed PDF File.pdf
在桌面上,另一个较长,将文件存储为(Edited)
InputFileName.pdf
在同一目录中。仅较长版本所需的步骤已标记(选修的)。
打开自动机并选择创建一个新的服务接收PDF 文件作为输入任何应用程序。
- (选修的)添加变量的设定值动作并命名变量
FilePath
。 (选修的)添加运行 AppleScript操作并使用以下脚本代码获取文件所在文件夹名称:
on run {input, parameters} tell application "Finder" to return (container of first item of input) as alias end run
(选修的)添加变量的设定值动作并命名变量
Folder
。- (选修的)添加获取变量的值动作并返回变量
FilePath
。忽略此动作的输入选项。 (选修的)添加运行 Shell 脚本动作并传递输入作为参数. 使用以下脚本提取文件的基本名称:
echo "$( basename "$1" )"
(选修的)添加变量的设定值动作并命名变量
FileName
。(选修的)添加获取变量的值动作并将变量命名为
FilePath
。忽略此动作的输入选项。添加PDF 转图像操作,将输出保存到桌面或任何可以保存临时文件的文件夹。 随意命名它们。
- 添加变量的设定值操作,以便我们稍后知道要删除哪些临时文件。将变量命名为
TempFiles
。 添加运行 AppleScript操作,并使用以下脚本代码来过滤临时文件列表(这是我们删除第一页的地方):
on run {input, parameters} return rest of input end run
添加合并 PDF 页面采取行动将碎片重新拼凑起来,追加页面。
- 使用移动查找器项目将生成的文件(重新组合的 PDF)移动到桌面或您想要的任何文件夹。如果您决定计算输入文件的父文件夹,则可以在此处拖放对变量的引用
Folder
。 - 这重命名 Finder 项目操作可以为这些文件提供比 eg 更好的文件名
zOpY3O.pdf
,后者是合并 PDF 文件的自动分配文件名。使用 eg名称 单品并为其指定一个基本名称Processed PDF File
。如果您选择使用较长的变体,请FileName
从变量列表拖到文本字段,并(Edited)
在其前面添加。现在我们基本上完成了,只需清理一下。 - 添加获取变量的值操作并获取 的值
TempFiles
。忽略此操作的输入选项。 - 添加将 Finder 项目移至废纸篓删除临时单页文件的操作。
以下是工作流程完成的较长版本的屏幕截图:
答案2
使用上述命令行 PDF 工具,我能够编译执行以下操作的工作流程:
- 输入一个或多个 PDF 并生成一个减去第一页的新文件
- 将原始 PDF 移至废纸篓
- 重命名新文件以匹配原始文件
首先我按照说明安装了 PDF 工具。这里的关键工具是 pdfsplit。
在 Automator 中,我创建了一项新服务来接收 Finder 中选定的 PDF 文件。
我添加了“运行 Shell 脚本”操作,其中 shell 为“/bin/bash”,并将“传递输入”设置为“作为参数”。然后我编写了以下简单脚本:
for f in "$@"
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done
我为原始文件添加了“将 Finder 项目移至废纸篓”操作,并添加了“替换文本”操作以从新文件中删除 .tmp 扩展名。
要使用文件夹输入运行该过程,脚本将如下所示:
cd "$@"
for f in *pdf
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done
我想我可以在 shell 脚本中完成所有操作,包括删除和重命名。但是 rm 命令可能很危险,我宁愿将原始文件移到垃圾箱。
可以修改脚本,使其不仅仅是删除 x 页。例如,我开发了一个类似的程序来批量裁剪和合并 PDF。查看 pdfsplit 及其附带工具的手册以了解更多信息。
答案3
另一个论坛上的某个人开发了一些命令行 PDF 工具,包括一个删除页面的工具。看起来相对简单。唯一可能的问题可能是它如何与您的工作流程配合。从您的描述来看,似乎您在打开 PDF 时可以使用某些工具,并且这些工具似乎在关闭文件时(更好地)工作。
答案4
仅补充一下 Joseph Yannielli 提供的答案,对于那些决定运行 shell 脚本的人来说,在脚本中包含删除和重命名文件的命令可能会更容易,而不是通过 Automator 添加单独的操作:
for f in "$@"
do
/usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
rm "$f"
mv "$f".tmp "$f"
done
关于安装命令行 PDF 工具,可以使用自制:
brew install pdf-tools