summaryrefslogtreecommitdiff
path: root/pkgs/scripts/merge-pdfs.nix
blob: 584505a82d2f7a8c4ebe3ead5b79b1ea3ed840ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ writeShellScriptBin, pdftk, ... }:
writeShellScriptBin "merge-pdfs" ''
  set -e
  export PATH="$PATH:${pdftk}/bin"
  
  if [ $# -lt 3 ]; then
    echo "Usage: $0 <output> <PDFs...>" >&2
    exit 1
  fi
  
  OUTPUT="$1"
  shift
  
  WORKDIR="$HOME/vtmp/merge-pdfs.$$"
  BOOKMARKS="$WORKDIR/bookmarks.txt"
  FMT="BookmarkBegin
  BookmarkTitle: %s
  BookmarkLevel: 1
  BookmarkPageNumber: 1
  "
 
  mkdir "$WORKDIR"
 
  N=0
  for SOURCE in "$@"; do
    BASE="$(basename "$SOURCE")"
    printf "$FMT" "''${BASE%.*}" >"$BOOKMARKS"
    pdftk "$SOURCE" update_info "$BOOKMARKS" output "$WORKDIR/"$(printf "%04d" $N).pdf
    N=$((N+1))
  done
 
  pdftk "$WORKDIR"/*.pdf cat output "$OUTPUT"
  rm -r "$WORKDIR"
''