ich habe zu diesem Thema hier im Forum gesucht und habe auch ein paar Threads dazu gefunden.
Allerdings bin ich dadurch noch keinen Schritt weitergekommen, daher hier mein Thread.
Ich möchte Berichte, für verschiedene Bereiche erstellen, wie z.B. das erstellen einer Rechnung, die ich ausdrucken und auch als PDF-Datei abspeichern kann. Dieser Bericht soll immer das gleiche Layout haben und mit den wechselnden Daten ausgegeben werden.
Ich arbeite mit keiner Datenbank, sondern meine Daten sind in Spalten getrennten Textdateien enthalten.
pyuno wäre eine Möglichkeit, welche aber doch etwas komlexer in der Anwendung ist, wie ich gelesen habe.
Mit reportman soll man solche Vorlagen erstellen können, was aber kein Python-Programm ist.
ReportLab ein Python-Modul, wäre eine Möglichkeit, leider ist dieses Modul für Python3 nicht verfügbar, was schade ist.
Hier http://www.python-forum.de/viewtopic.ph ... ng+drucken, habe ich etwas zu pdflatex und Jinja2 gefunden, welches mit dem von crs bereitgestelltem Code auch soweit funktioniert.
Code: Alles auswählen
import os
import subprocess
from jinja2 import Environment, FileSystemLoader
options = { 'block_start_string': '<%',
'block_end_string': '%>',
'variable_start_string': '<<',
'variable_end_string': '>>',
}
jinja_env = Environment(loader=FileSystemLoader(''), **options)
def render(env, template):
tpl = jinja_env.get_template(template)
return tpl.render(env)
def to_file(tex, file='out.tex', path='.'):
with open(os.path.join(path, file), 'w') as f:
f.write(tex)
def run_pdflatex(file='out.tex', path='.'):
return subprocess.call(['pdflatex', file], cwd=path)
if __name__ == '__main__':
env = { 'data': [ {'foo': '1', 'bar': '2'}, {'foo': '3', 'bar': '4'}] }
tex = render(env, 'template.tex')
to_file(tex)
run_pdflatex()
Code: Alles auswählen
\documentclass{article}
\begin{document}
\begin{tabular}{ll}
<%- for d in data %>
<< d.foo >> & << d.bar >> \\
<%- if not loop.last %> \hline <% endif %>
<%- endfor %>
\end{tabular}
\end{document}
Was würdet Ihr mir empfehlen?
Bitte aber nicht "lass es bleiben ...".
Würde mich auf Eure Unterstützung freuen!
Grüße Nobuddy