循环遍历PDF文件的文件夹,并将单个PDF附加到每个

时间:2016-09-25 20:16:48

标签: macos pdf terminal pdf-generation

此代码似乎替换了第一个文件,而不是将file1.pdf附加到它 我需要附加文件而不是替换。

#!/bin/bash
FILES=("/Users/a/folder/"*.pdf)
for f in "${FILES[@]}"
do
  echo "${f}"
    "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o "${f}" "${f}" "/Users/a/folder2/file1.pdf"
done

我注意到,如果我手动运行代码,但是对第一个和第二个参数使用不同的名称,它似乎有效。但是,我不知道如何更改第一个参数的名称而不使其成为常量。

2 个答案:

答案 0 :(得分:1)

在我看来,你的问题与Ruby无关。正如我所理解的那样,您正在尝试使用MacOS X El Capitan上的命令行将PDF文件与其他PDF文件合并。

如果我理解你的问题,那么你可能应该注意this weblog的建议并使用MacOS X Tiger提供的"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py"命令。

请注意,如果要附加的文件位于要添加所有文件的同一目录中,则会遇到问题:脚本join.py似乎不喜欢被赋予相同的文件三次,所以把你的文件放在别处(你要附加到所有文件的那个)。

尝试以下方面的内容:

#!/bin/bash for f in /Absolute/Path/To/The/PDFS/*.pdf; do /System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py -o $f $f /Absolute/Path/To/The/File/To/Append; done

答案 1 :(得分:0)

解决方案:

#!/bin/bash
FILES=("/Users/a/folder/"*.pdf)
for f in "${FILES[@]}"
do
  echo "${f}"
    a="${f%.pdf}"
    "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o "${a}_x.pdf" "${f}" "/Users/a/folder2/file1.pdf"
done