繁体   English   中英

使用 Mac automator 按文件名合并 pdf

[英]Merge pdf by file name using Mac automator

我正在尝试让自动程序从两个名称相似的文件中合并 PDF 页面。

现在我已经在 automator 中拥有一个能够合并两个选定文件的服务工作流程:

在此处输入图片说明

虽然这个工作流程肯定有用,但我仍然需要手动选择要合并的文件。 此外,生成的文件名将在设置的单词后用一个明显随机的字母串重命名。

我将主要使用此脚本获取编号文件(例如:10989.pdf)与包含这些编号的文件合并,名称类似于“lst0090 10989 .pdf”。 这些文件都在一个文件夹中,其中包含名称遵循同一系统的各种其他文件,所以我需要的是工作流获取编号文件并将它们加入各自的 lst 文件,将其复制到另一个文件夹,同时维护编号文件名称(在本例中为 10989),然后对文件夹中的其他文件执行相同操作。

我怎么能做到这一点?

附加信息:合并文件的第一页应始终是编号文件之一(示例中为 10989)。 第二个应该是 LST 文件之一。 生成的文件应命名为 NF_LST xxxxx.pdf(xxxx 是编号文件的名称,在本例中为 10989)。

lst 文件名总是以 lst 开头,有 14 个字符,最后一个总是与编号的文件名相同。 编号文件名从 3 个字符变为 6 个字符。

下图显示了典型文件夹包含的内容:

文件夹内容

以下已在macOS Catalina 10.15.4 和 10.15.5 下进行了测试,并且在 10.15.5 下作为Quick Action对我不起作用。 使用形成的find命令时, Run Shell Script操作中似乎存在错误 它还可以在macOS High Sierra运行,也可以在三个测试环境中作为shell 脚本运行 这进一步支持了 10.15.5 中的错误假设。

这需要使用的cpdf从第三方,免费,相干PDF命令行工具社区发布-直接下载链接: 下载预建CPDF工具

合并 PDF 文件集 Automator 快速操作

示例bash 脚本代码

for i in "$@"; do
    [[ ${i} =~ .*/[0-9]{3,6}.*\.[pP][dD][fF] ]] || continue
    j="$(find "${i%/*}" -type f -iname "lst*${i##*/}")"
    [[ ${j} =~ .*/lst.*[0-9]{3,6}\.[pP][dD][fF] ]] || continue
    l=${j##*/}
    [[ ${#l} -eq 18  ]] || continue
    /usr/local/bin/cpdf -merge "${i}" "${j}" -o "${i%/*}/FN_LST ${i##*/}"
done

按照编码,它执行以下操作:

  • 检查通过的文件是一个名为PDF文件的 3 到 6 位数字。
  • 在同一文件夹中查找相应的PDF文件,以lst开头并以相同的 3 到 6 位数字命名的PDF文件结尾。
  • 如果未找到相应的PDF文件,它将移至下一个文件
  • 验证找到的相应PDF文件的长度为 18 个字符,包括扩展名。
  • 在新的组合文件中首先将匹配集与命名为PDF文件的 3 到 6 位数字组合。
  • 在同一文件夹中创建组合文件,例如FN_LST [0-9]{3,6}.pdf , (FN_LST 10989.pdf),可以更改。
  • 不覆盖现有文件

要更改创建新组合文件的位置,在例如/usr/local/bin/cpdf ...行中,将${i%/*}更改${i%/*}

-o "${i%/*}/FN_LST ${i##*/}"

到:

-o "/path/to/FN_LST ${i##*/}"

其中/path/to完全限定的目录路径名,例如:

-o "$HOME/Documents/Combined PDF Files/FN_LST ${i##*/}"

注意: /path/to目录必须已经存在,因为它没有错误处理,尽管也可以添加,例如:

d="HOME/Documents/Combined PDF Files"
[[ -d ${d} ]] || mkdir -p "${d}"

for i in "$@"; do
    [[ ${i} =~ .*/[0-9]{3,6}.*\.[pP][dD][fF] ]] || continue
    j="$(find "${i%/*}" -type f -iname "lst*${i##*/}")"
    [[ ${j} =~ .*/lst.*[0-9]{3,6}\.[pP][dD][fF] ]] || continue
    l=${j##*/}
    [[ ${#l} -eq 18  ]] || continue
    /usr/local/bin/cpdf -merge "${i}" "${j}" -o "${d}/FN_LST ${i##*/}"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM