Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
developer:dokumentenerstellung [2016/08/24 13:28] moik [UPSTART] |
developer:dokumentenerstellung [2019/08/13 13:48] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== FH-Complete LibreOffice Vorlagen ====== | ||
- | |||
- | {{:developer:libreofficedokumenteuebersicht.png|}} | ||
- | |||
- | ===== 1. Vorlage mit LibreOffice erstellen ===== | ||
- | |||
- | {{:developer:unoconv1.png|}} | ||
- | |||
- | Das Dokument wird vollständig mit [[https://de.libreoffice.org|LibreOffice]] erstellt. Die Felder, die dynamisch von der Datenbank befüllt werden sollen, werden mit Platzhaltern versehen. | ||
- | Das Dokument wird als vorlage.odt unter ''fhcompletepfad/system/vorlage_zip/'' gespeichert. | ||
- | |||
- | ===== 2. XML Datei entpacken ===== | ||
- | |||
- | Die Datei vorlage.odt wird in vorlage.zip umbenannt. Dann kann diese mit einem Archivprogramm geöffnet werden. Die darin enthaltenen Dateien content.xml und styles.xml werden entpackt. | ||
- | Die Datei content.xml enthält den Großteil der Daten. Die Datei styles.xml enthält Formatierungen für Kopf- und Fußzeilen. Falls die Kopf- und Fußzeile keine dynamischen Daten enthält, muss diese nicht entpackt und angepasst werden. | ||
- | |||
- | {{:developer:unoconv2.png|}} | ||
- | |||
- | ===== 3. Dynamische Daten hinzufügen ===== | ||
- | |||
- | **Linux**: Das XML File kann mit xmlstarlet Formatiert werden damit es besser lesbar ist: | ||
- | ''xmlstarlet fo content.xml > content_formatted.xml'' | ||
- | |||
- | **Windows**: Der Editor [[http://notepad-plus-plus.org|Notepad++]] kann mit dem Plugin "XML Tools" um Funktionen zur Bearbeitung und Formatierung von XML-Dateien erweitert werden. | ||
- | |||
- | **XSL Anweisungen hinzufügen** | ||
- | |||
- | Im oberen Teil des XML Dokuments muss der XSL Header eingefügt werden: | ||
- | |||
- | {{:developer:xsltemplateheader.png|}} | ||
- | |||
- | Felder, die dynamisch befüllt werden sollen, werden durch die entsprechenden XSL Anweisungen ersetzt: | ||
- | |||
- | {{:developer:xslvalueof1.png|}} | ||
- | {{:developer:xslvalueof2.png|}} | ||
- | |||
- | XSL Footer hinzufügen: | ||
- | |||
- | {{:developer:xsltemplatefooter.png|}} | ||
- | |||
- | Die geänderte content.xml Datei wird in der Datenbank als Vorlage gespeichert. | ||
- | Dazu wird der Inhalt der Datei in die Spalte "text" der Tabelle public.tbl_vorlagestudiengang gespeichert. | ||
- | |||
- | **Folgende XSL-Vorlage kann mittels copy & paste übernommen werden:** | ||
- | |||
- | <code xml> | ||
- | <xsl:stylesheet | ||
- | xmlns:fo="http://www.w3.org/1999/XSL/Format" | ||
- | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" | ||
- | 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" | ||
- | > | ||
- | <xsl:output method="xml" version="1.0" indent="yes"/> | ||
- | <xsl:template match=""> | ||
- | |||
- | </xsl:template> | ||
- | </xsl:stylesheet> | ||
- | </code> | ||
- | |||
- | ===== 4. Dokument generieren ===== | ||
- | |||
- | Die dynamischen Daten werden als XML im Order RDF zur Verfügung gestellt. | ||
- | |||
- | Das Script pdfExport.php erstellt das Dokument: | ||
- | |||
- | https://vilesci.fhcomplete.org/content/pdfExport.php?xml=data.xml.php&xsl=vorlage&output=pdf | ||
- | |||
- | - dynamische Daten werden als XML geladen, z.B. data.xml.php | ||
- | - passende XSL Vorlage wird aus der Datenbank geholt | ||
- | - es wird ein temporärer Ordner am Server erstellt | ||
- | - vorlage.odt wird dorthin kopiert (von system/vorlage_zip/) | ||
- | - content.xml wird durch XSL Transformation erstellt und ebenfalls in dem Ordner abgelegt | ||
- | - content.xml wird zu ODT dazugezippt ("zip vorlage.odt content.xml") | ||
- | - Dokument kann jetzt direkt als ODT ausgeliefert werden oder noch in PDF konvertiert werden | ||
- | - Temporärer Ordner wird wieder gelöscht nachdem die Datei ausgeliefert wurde | ||
- | |||
- | **Konvertierung in PDF:** | ||
- | Das ODT Dokument wird mit dem Programm unoconv in ein PDF umgewandelt: | ||
- | |||
- | ''unoconv -e IsSkipEmptyPages=false %%--%%stdout -f pdf vorlage.odt > dokument.pdf'' | ||
- | |||
- | Mit dem Parameter "-f doc" könnte das Dokument auch in ein Word Dokument umgewandelt werden. | ||
- | Damit unoconv funktioniert, muss es am Server installiert sein (ca. 500MB): | ||
- | |||
- | ''apt-get install unoconv'' | ||
- | |||
- | Außerdem muss der unoconv Listener laufen: | ||
- | ==== FORK ==== | ||
- | ''unoconv %%--%%listener &'' | ||
- | ==== UPSTART ==== | ||
- | Datei ''/etc/init/unoconv.conf'' anlegen: | ||
- | <code>description "unoconv listener" | ||
- | |||
- | start on runlevel [2345] | ||
- | stop on runlevel [016] | ||
- | respawn | ||
- | expect daemon | ||
- | setuid unoconv | ||
- | exec unoconv -l & | ||
- | </code> | ||
- | ''setuid'' gibt den Usernamen an\\ | ||
- | \\ | ||
- | ''# initctl reload-configuration'' ausführen, um die neue konfiguration zu laden\\ | ||
- | ''# start unoconv'' um den Dienst zu starten\\ | ||
- | ''# status unoconv'' um den Status abzufragen\\ | ||
- | Das zugehörige Log befindet sich in ''/var/log/upstart/unoconv.log'' | ||
- | ===== Use Cases ===== | ||
- | |||
- | [[developer:dokumentenerstellung_xsltquickhelp|XSLT Quickhelp]] \\ | ||
- | [[developer:dokumentenerstellung_bilder|Bilder nachträglich einfügen]] \\ | ||
- | [[developer:dokumentenerstellung_seitenumbruch|Seitenumbruch einfügen]] \\ | ||
- | [[developer:dokumentenerstellung_zeilenumbruch|Zeilenumbruch ersetzen]] \\ | ||
- | |||