From b4c923be76a14fea620fdd8ac3b3aaf8c17f73c4 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Paul=20H=C3=A4nsch?= <paul@plutz.net>
Date: Thu, 30 Nov 2023 17:20:47 +0100
Subject: [PATCH] PDF export functions

---
 doclist.sh   |  1 +
 invoices.cgi | 26 ++++++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/doclist.sh b/doclist.sh
index f875b15..aeae79f 100644
--- a/doclist.sh
+++ b/doclist.sh
@@ -34,6 +34,7 @@ list_status() {
 	  [input type=hidden name=tid value="$(transid "$file")"]
 	  [input type=hidden name=session_key value="$SESSION_KEY"]
 	  [button type=submit name=action value=update_invoice . $(_ Update)]
+	  [button type=submit name=action value=pdf_export . $(_ PDF)]
 	]
 	EOF
   done
diff --git a/invoices.cgi b/invoices.cgi
index 35847fe..ae97b17 100755
--- a/invoices.cgi
+++ b/invoices.cgi
@@ -63,16 +63,22 @@ serverkey' >.gitignore
     ;;
   pdf_export)
     id="$(POST id)" file="$_DATA/${id}.kvd" tmp="$(randomid)"
-    type="$(DBM "$file" get type)"
-    [ -d "${_EXEC}/${type}/" ] \
-    && . "${_EXEC}/${type}/print.sh"
+    DB3 open "$file"
+    type="$(DB3 get type)"
+    . "${_EXEC}/${type}/form.sh"
+    . "${_EXEC}/${type}/print.sh"
 
-    yield_html >"$_DATA/export/${tmp}.html"
-    lowriter --convert-to pdf --outdir "export/" "export/${tmp}.html" >/dev/null
-    pdftk "export/${tmp}.pdf" background "$_EXEC/$type/Background.pdf" output "export/${tmp}.pdf"
-    mv -- "export/${tmp}.pdf" "export/${id}.pdf"
+    yield_html >"$_DATA/export/${id}.html"
+    lowriter --convert-to pdf --outdir "export/" "export/${id}.html" >/dev/null
+    if [ -f "$_EXEC/$type/print.pdf" ]; then
+      pdftk "export/${id}.pdf" burst output "export/${id}_%04d.pdf"
+      pdftk "export/${id}_0001.pdf" background "$_EXEC/$type/print.pdf" output "export/${tmp}.pdf"
+      mv -- "export/${tmp}.pdf" "export/${id}_0001.pdf"
+      pdftk "export/${id}"_*.pdf cat output "export/${id}.pdf"
+      rm -- "export/${id}"_*.pdf "export/doc_data.txt"
+    fi
     rm -- "export/${id}.html"
-    redirect "/pdf/${id}/$(URL "${filenamestring}.pdf")"
+    REDIRECT "/pdf/${id}/$(URL "${filenamestring}.pdf")"
     ;;
   *)
     REDIRECT /
@@ -94,6 +100,10 @@ esac
     && . "${_EXEC}/${type}/form.sh"
     yield_form
     ;;
+  /pdf/*/*.pdf)
+    id="${PATH_INFO#/pdf/}" id="${id%%/*}"
+    FILE "$_DATA/export/${id}.pdf"
+    ;;
   *) REDIRECT /
     ;;
 esac
-- 
2.39.5