summaryrefslogtreecommitdiff
path: root/pkgs/scripts/merge-pdfs.nix
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-03-17 15:57:31 -0600
committerAlejandro Soto <alejandro@34project.org>2022-03-17 15:57:31 -0600
commit576bff92b60d2f8707d74f0ddcef13dec35032e3 (patch)
tree113b7800f51d438f1e78dc255fc12b537c0eef54 /pkgs/scripts/merge-pdfs.nix
parentca6b10ffb7795fd3431a55b9c546f6b127ac04a5 (diff)
pkgs/scripts: add merge-pdfs
Diffstat (limited to '')
-rwxr-xr-xpkgs/scripts/merge-pdfs.nix34
1 files changed, 34 insertions, 0 deletions
diff --git a/pkgs/scripts/merge-pdfs.nix b/pkgs/scripts/merge-pdfs.nix
new file mode 100755
index 0000000..584505a
--- /dev/null
+++ b/pkgs/scripts/merge-pdfs.nix
@@ -0,0 +1,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"
+''