diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/180274_20250915_Rechnung-32096_xml.pdf b/180274_20250915_Rechnung-32096_xml.pdf new file mode 100755 index 0000000..b765052 Binary files /dev/null and b/180274_20250915_Rechnung-32096_xml.pdf differ diff --git a/EN16931_Physiotherapeut_fx.pdf b/EN16931_Physiotherapeut_fx.pdf new file mode 100755 index 0000000..07fc4cb Binary files /dev/null and b/EN16931_Physiotherapeut_fx.pdf differ diff --git a/UBL-Invoice-2.1.xsd b/UBL-Invoice-2.1.xsd old mode 100644 new mode 100755 diff --git a/Verkauf_Rechnung_Neu.pdf b/Verkauf_Rechnung_Neu.pdf index e69de29..3889203 100755 Binary files a/Verkauf_Rechnung_Neu.pdf and b/Verkauf_Rechnung_Neu.pdf differ diff --git a/Verkauf_Rechnung_Neu_xml.pdf b/Verkauf_Rechnung_Neu_xml.pdf deleted file mode 100644 index e69de29..0000000 diff --git a/appended.pdf b/appended.pdf old mode 100644 new mode 100755 diff --git a/appended.xml b/appended.xml old mode 100644 new mode 100755 diff --git a/appended_xml.pdf b/appended_xml.pdf old mode 100644 new mode 100755 diff --git a/debug.log b/debug.log old mode 100644 new mode 100755 index 4e34f46..9d0ce1d --- a/debug.log +++ b/debug.log @@ -15,3 +15,30 @@ 2024-08-22 22:24:08 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: 'appended.xml' output: 'test.pdf' 2024-08-22 22:26:44 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) 2024-08-22 22:26:44 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 12:46:16 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 12:46:16 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 12:46:16 leave appendToPdf +2025-12-23 12:47:31 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 12:47:45 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 12:47:52 leave appendToPdf +2025-12-23 12:54:59 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 12:54:59 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 12:59:27 leave appendToPdf +2025-12-23 12:59:37 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 12:59:37 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 12:59:42 leave appendToPdf +2025-12-23 13:53:49 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 13:53:49 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 13:53:49 leave appendToPdf +2025-12-23 13:54:19 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 13:54:19 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 13:54:26 leave appendToPdf +2025-12-23 13:55:26 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2025-12-23 13:55:26 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2025-12-23 13:55:26 leave appendToPdf +2026-02-05 19:47:45 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2026-02-05 19:47:45 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2026-02-05 19:47:45 leave appendToPdf +2026-02-05 19:48:32 enter appendToPdf(./Verkauf_Rechnung_Neu.pdf, ./appended.xml, test.pdf) +2026-02-05 19:48:32 pdfInput: './Verkauf_Rechnung_Neu.pdf' xmlInput: './appended.xml' output: 'test.pdf' +2026-02-05 19:48:32 leave appendToPdf diff --git a/dll/dll.go b/dll/dll.go old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod old mode 100644 new mode 100755 diff --git a/go.sum b/go.sum old mode 100644 new mode 100755 diff --git a/invoice.xml b/invoice.xml old mode 100644 new mode 100755 diff --git a/invoice_2.xml b/invoice_2.xml old mode 100644 new mode 100755 diff --git a/lib/append.go b/lib/append.go old mode 100644 new mode 100755 index 74fe159..79d756e --- a/lib/append.go +++ b/lib/append.go @@ -1,8 +1,11 @@ package lib import ( + "bytes" "errors" "fmt" + "os" + "path" "path/filepath" "strings" @@ -41,9 +44,17 @@ func AppendToPdf(inputPdfFilePath string, inputXmlFilePath string, outputFilePat ), ) - err := api.AddAttachmentsFile( - inputPdfFilePath, - outputFilePath, + inputFile, err := os.Open(inputPdfFilePath) + if err != nil { + return err + } + defer inputFile.Close() + + dest := bytes.Buffer{} + + err = api.AddAttachments( + inputFile, + &dest, []string{inputXmlFilePath}, true, model.NewDefaultConfiguration(), @@ -52,5 +63,35 @@ func AppendToPdf(inputPdfFilePath string, inputXmlFilePath string, outputFilePat return err } + source := bytes.NewReader(dest.Bytes()) + dest = bytes.Buffer{} + + err = api.AddProperties(source, &dest, map[string]string{ + "DocumentFileName": path.Base(inputXmlFilePath), + "DocumentType": "INVOICE", + "ConformanceLevel": "EN 16931", + "SchemasSchema": "Factur-X PDFA Extension Schema", + "SchemasPrefix": "fx", + "SchemasPropertyName": "DocumentFileName", + "SchemasPropertyValueType": "Text", + "SchemasPropertyCategory": "external", + "SchemasPropertyDescription": "The name of the embedded XML document", + }, model.NewDefaultConfiguration()) + if err != nil { + return err + } + + var outputFile *os.File + outputFile, err = os.Create(outputFilePath) + if err != nil { + return err + } + defer outputFile.Close() + + _, err = outputFile.Write(dest.Bytes()) + if err != nil { + return err + } + return nil } diff --git a/lib/debug.go b/lib/debug.go old mode 100644 new mode 100755 diff --git a/lib/extract.go b/lib/extract.go old mode 100644 new mode 100755 diff --git a/main.go b/main.go old mode 100644 new mode 100755 diff --git a/test.pdf b/test.pdf index e69de29..a90b1c0 100644 Binary files a/test.pdf and b/test.pdf differ