user2012677
user2012677

Reputation: 5735

Loop through a folder of PDF files and append a single PDF to each

This code just seems to replace the first file, not append file1.pdf to it.
I need the file to append not replace.

#!/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

I noticed, if I run the code manually, but use a different name for the first and second parameters, it seems to work. However, I do not know how to change the name of the first parameter without making it a constant.

Upvotes: 1

Views: 1924

Answers (2)

Nadia Cerezo
Nadia Cerezo

Reputation: 602

It seems to me your problem has nothing to do with Ruby. As I'm understanding it, you are trying to use the command line on MacOS X El Capitan to merge a PDF file with other PDF files.

If I understood your problem correctly, then you probably should heed the advice of this weblog and use the command "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" which is available from MacOS X Tiger onwards.

Note that if the file you want to append is in the same directory where all the files are you want to append to, you'll run into problems: the script join.py does not seem to appreciate being given the same file thrice, so place your file elsewhere (the one you want to append to all files).

Try something along the lines of:

#!/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

Upvotes: 2

user2012677
user2012677

Reputation: 5735

Solution:

#!/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

Upvotes: 0

Related Questions