[英]How to make Mac Application (use Automator) which convert image file of PDF to eps file with ImageMagick
[英]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工具
示例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
按照编码,它执行以下操作:
要更改创建新组合文件的位置,在例如/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.