ZUGFeRD fix
This commit is contained in:
parent
068e6627d9
commit
3f516ed651
11
main.py
11
main.py
|
|
@ -351,7 +351,6 @@ with col1:
|
||||||
uploaded_file = st.file_uploader("Wähle eine Rechnungs-PDF", type=["pdf"])
|
uploaded_file = st.file_uploader("Wähle eine Rechnungs-PDF", type=["pdf"])
|
||||||
pdf_text = ""
|
pdf_text = ""
|
||||||
if uploaded_file is not None:
|
if uploaded_file is not None:
|
||||||
# Optimierung: Nutze getvalue(), damit die PDF-Bytes später für ZUGFeRD erhalten bleiben
|
|
||||||
pdf_data = uploaded_file.getvalue()
|
pdf_data = uploaded_file.getvalue()
|
||||||
doc = fitz.open(stream=pdf_data, filetype="pdf")
|
doc = fitz.open(stream=pdf_data, filetype="pdf")
|
||||||
for page in doc:
|
for page in doc:
|
||||||
|
|
@ -392,7 +391,7 @@ with col2:
|
||||||
"WICHTIGE REGEL: Analysiere den Text direkt VOR der ersten Tabellenposition '1'. "
|
"WICHTIGE REGEL: Analysiere den Text direkt VOR der ersten Tabellenposition '1'. "
|
||||||
"Sortiere alle dort vorlaufenden Zeilen vollständig in die dafür vorgesehenen ID-, Datums- und Freitext-Felder ein. "
|
"Sortiere alle dort vorlaufenden Zeilen vollständig in die dafür vorgesehenen ID-, Datums- und Freitext-Felder ein. "
|
||||||
"Schreibe diese vorlaufenden Metadaten NIEMALS in die Beschreibung der ersten Position hinein!\n\n"
|
"Schreibe diese vorlaufenden Metadaten NIEMALS in die Beschreibung der ersten Position hinein!\n\n"
|
||||||
"Antworte ausschließlich mit dem reinen JSON-Objekt. Schreibe keinen anderen Text."
|
"Antworte ausschließlich with dem reinen JSON-Objekt. Schreibe keinen anderen Text."
|
||||||
)
|
)
|
||||||
prompt_meta = f"Rechnungstext:\n{pdf_text}"
|
prompt_meta = f"Rechnungstext:\n{pdf_text}"
|
||||||
|
|
||||||
|
|
@ -548,7 +547,7 @@ with col2:
|
||||||
with c_vat_ui: st.metric("MwSt-Gesamt (€)", f"{computed_vat_amount:.2f}")
|
with c_vat_ui: st.metric("MwSt-Gesamt (€)", f"{computed_vat_amount:.2f}")
|
||||||
with c_gross_ui: st.metric("Brutto-Zahlbetrag (€)", f"{computed_gross_amount:.2f}")
|
with c_gross_ui: st.metric("Brutto-Zahlbetrag (€)", f"{computed_gross_amount:.2f}")
|
||||||
|
|
||||||
# --- NEU: DYNAMISCHE EXPORT-SEKTION FÜR ZUGFeRD ODER XRECHNUNG ---
|
# --- EXPORT-SEKTION FÜR ZUGFeRD ODER XRECHNUNG ---
|
||||||
st.markdown("---")
|
st.markdown("---")
|
||||||
export_format = st.selectbox(
|
export_format = st.selectbox(
|
||||||
"💾 Export-Format wählen",
|
"💾 Export-Format wählen",
|
||||||
|
|
@ -584,15 +583,15 @@ with col2:
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
# ZUGFeRD: Nutzt PyMuPDF, um das XML direkt in die hochgeladene PDF einzubetten
|
# 🔥 KORREKTUR: Nutzt die echten PyMuPDF-Funktionen 'embfile_add' und 'mime='
|
||||||
original_pdf_bytes = uploaded_file.getvalue()
|
original_pdf_bytes = uploaded_file.getvalue()
|
||||||
doc = fitz.open(stream=original_pdf_bytes, filetype="pdf")
|
doc = fitz.open(stream=original_pdf_bytes, filetype="pdf")
|
||||||
doc.embedded_file_add(
|
doc.embfile_add(
|
||||||
"factur-x.xml",
|
"factur-x.xml",
|
||||||
xml_string.encode("utf-8"),
|
xml_string.encode("utf-8"),
|
||||||
filename="factur-x.xml",
|
filename="factur-x.xml",
|
||||||
desc="Factur-X/ZUGFeRD E-Invoice",
|
desc="Factur-X/ZUGFeRD E-Invoice",
|
||||||
mimetype="text/xml"
|
mime="text/xml"
|
||||||
)
|
)
|
||||||
zugferd_pdf_bytes = doc.write()
|
zugferd_pdf_bytes = doc.write()
|
||||||
doc.close()
|
doc.close()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue