diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-03-17 15:57:31 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-03-17 15:57:31 -0600 |
| commit | 576bff92b60d2f8707d74f0ddcef13dec35032e3 (patch) | |
| tree | 113b7800f51d438f1e78dc255fc12b537c0eef54 /pkgs | |
| parent | ca6b10ffb7795fd3431a55b9c546f6b127ac04a5 (diff) | |
pkgs/scripts: add merge-pdfs
Diffstat (limited to '')
| -rw-r--r-- | pkgs/scripts/default.nix | 1 | ||||
| -rwxr-xr-x | pkgs/scripts/merge-pdfs.nix | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/pkgs/scripts/default.nix b/pkgs/scripts/default.nix index dc37056..18900f6 100644 --- a/pkgs/scripts/default.nix +++ b/pkgs/scripts/default.nix @@ -4,5 +4,6 @@ symlinkJoin { paths = [ (callPackage ./clip.nix { toPDF = false; }) (callPackage ./clip.nix { toPDF = true; }) + (callPackage ./merge-pdfs.nix {}) ]; } 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" +'' |
