From: Paul Hänsch <paul@plutz.net> Date: Wed, 28 Nov 2018 04:11:58 +0000 (+0100) Subject: pdf conversion (via libreoffice) and serving X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=864a9aad6a2d6ede85c0c3ad6312573f9a0804eb;p=invoices pdf conversion (via libreoffice) and serving --- diff --git a/.gitignore b/.gitignore index 9c26be5..be77cba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ clients/ invoices/ senders/ +export/ .*.swp serverkey diff --git a/invoices.cgi b/invoices.cgi index 10aa8fc..261395f 100755 --- a/invoices.cgi +++ b/invoices.cgi @@ -82,6 +82,10 @@ case $info in . "$_EXEC/invoices.sh" update_invoice ;; + /export/*.pdf) + . "$_EXEC/cgilite/file.sh" + FILE "${info#/}" application/pdf + ;; *) REDIRECT /invoices ;; esac diff --git a/invoices.sh b/invoices.sh index b856849..56dd244 100755 --- a/invoices.sh +++ b/invoices.sh @@ -206,6 +206,9 @@ update_invoice(){ if [ "$(POST genpdf)" ]; then . $_EXEC/odtgen.sh genodt "$id" + lowriter --convert-to pdf --outdir export/ "export/${id}.odt" >/dev/null + REDIRECT "/export/${id}.pdf" + exit 0 fi REDIRECT "/invoices/$id" } diff --git a/odtgen.sh b/odtgen.sh index dbe2945..f9b7d62 100755 --- a/odtgen.sh +++ b/odtgen.sh @@ -59,6 +59,7 @@ odt_stylesheet(){ odt_content(){ local id="$1" sender="$2" client="$3" date="$4" number="$5" vat="$6" vatrate="$7" hourly="$8" + cat <<-EOF <?xml version="1.0" encoding="UTF-8"?> <office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2"> @@ -122,13 +123,13 @@ odt_content(){ </draw:frame><draw:frame draw:style-name="fr2" draw:name="Rahmen2" text:anchor-type="paragraph" svg:width="1.8228in"> <draw:text-box fo:min-height="1.8992in"> <text:p text:style-name="P5"><!-- - -->$(HTML "$sender" |sed 'a<text:line-break/>')<!-- + -->$(HTML "$sender" |sed -r 's;(
\;)?
\;;<text:line-break/>;g')<!-- --></text:p> </draw:text-box> </draw:frame><draw:frame draw:style-name="fr3" draw:name="Rahmen1" text:anchor-type="paragraph" svg:y="1.3799in" svg:width="3.4398in"> <draw:text-box fo:min-height="1.3311in"> <text:p text:style-name="P3"><!-- - -->$(HTML "$client" |sed 'a<text:line-break/>')<!-- + -->$(HTML "$client" |sed -r 's;(
\;)?
\;;<text:line-break/>;g')<!-- --></text:p> </draw:text-box> </draw:frame><text:span text:style-name="T3">Rechnung ${issuance}</text:span> @@ -209,7 +210,10 @@ odt_content(){ genodt(){ local id="$1" exdir="export/$1" - [ -d "$exdir" ] && rm "$exdir/META-INF" + [ -d "$exdir" ] && { + rm "$exdir/content.xml" "$exdir/styles.xml" "$exdir/META-INF/manifest.xml" + rmdir "$exdir/META-INF/" "$exdir/" + } read -r sender client date number vat vatrate <<-EOF $(sed q "invoices/$id") @@ -231,9 +235,8 @@ genodt(){ [ -f "export/${id}.odt" ] && rm "export/${id}.odt" ( cd "$exdir" - zip "../${id}.odt" content.xml styles.xml META-INF/manifest.xml + zip -q "../${id}.odt" content.xml styles.xml META-INF/manifest.xml ) rm "$exdir/content.xml" "$exdir/styles.xml" "$exdir/META-INF/manifest.xml" rmdir "$exdir/META-INF/" "$exdir/" - # lowriter --headless --convert-to pdf "${odtdoc}" }