Added example how to combine existing PDF and invoice XML
This commit is contained in:
parent
ddd6e01f1f
commit
c64b6e7c77
12
README.md
12
README.md
|
@ -67,4 +67,16 @@ private fun createInvoice() = Invoice(
|
||||||
recipient = Party("Abzock GmbH", "Ausbeutstr.", "12345", "Abzockhausen"),
|
recipient = Party("Abzock GmbH", "Ausbeutstr.", "12345", "Abzockhausen"),
|
||||||
items = listOf(LineItem("Erbrachte Dienstleistungen", "HUR", BigDecimal(170), BigDecimal(1_000_000), BigDecimal(19))) // HUR = EN code for hour
|
items = listOf(LineItem("Erbrachte Dienstleistungen", "HUR", BigDecimal(170), BigDecimal(1_000_000), BigDecimal(19))) // HUR = EN code for hour
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Attach invoice XML to existing PDF
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val invoice: Invoice = createInvoice()
|
||||||
|
val existingPdf = File("Invoice.pdf")
|
||||||
|
val output = File("Zugferd.pdf")
|
||||||
|
|
||||||
|
val creator = EInvoiceCreator()
|
||||||
|
|
||||||
|
creator.combinePdfAndInvoiceXml(invoice, existingPdf, output)
|
||||||
```
|
```
|
|
@ -32,13 +32,16 @@ class EInvoiceCreator(
|
||||||
val visualizer = ZUGFeRDVisualizer()
|
val visualizer = ZUGFeRDVisualizer()
|
||||||
visualizer.toPDF(xmlFile.absolutePath, pdfFile.absolutePath)
|
visualizer.toPDF(xmlFile.absolutePath, pdfFile.absolutePath)
|
||||||
|
|
||||||
combinePdfAndXml(pdfFile, xml, outputFile)
|
combinePdfAndInvoiceXml(xml, pdfFile, outputFile)
|
||||||
|
|
||||||
xmlFile.delete()
|
xmlFile.delete()
|
||||||
pdfFile.delete()
|
pdfFile.delete()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun combinePdfAndXml(pdfFile: File, xml: String, outputFile: File) {
|
fun combinePdfAndInvoiceXml(invoice: Invoice, pdfFile: File, outputFile: File) =
|
||||||
|
combinePdfAndInvoiceXml(createZugferdXml(invoice), pdfFile, outputFile)
|
||||||
|
|
||||||
|
fun combinePdfAndInvoiceXml(invoiceXml: String, pdfFile: File, outputFile: File) {
|
||||||
val exporter = ZUGFeRDExporterFromA3()
|
val exporter = ZUGFeRDExporterFromA3()
|
||||||
.setZUGFeRDVersion(2)
|
.setZUGFeRDVersion(2)
|
||||||
.setProfile("EN16931") // available values: MINIMUM, BASICWL, BASIC, CIUS, EN16931, EXTENDED, XRECHNUNG
|
.setProfile("EN16931") // available values: MINIMUM, BASICWL, BASIC, CIUS, EN16931, EXTENDED, XRECHNUNG
|
||||||
|
@ -47,7 +50,7 @@ class EInvoiceCreator(
|
||||||
.setCreator(System.getProperty("user.name"))
|
.setCreator(System.getProperty("user.name"))
|
||||||
|
|
||||||
exporter.load(pdfFile.inputStream())
|
exporter.load(pdfFile.inputStream())
|
||||||
exporter.setXML(xml.toByteArray())
|
exporter.setXML(invoiceXml.toByteArray())
|
||||||
|
|
||||||
exporter.export(outputFile.outputStream())
|
exporter.export(outputFile.outputStream())
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,17 @@ class Demonstration {
|
||||||
val xRechnung = creator.createXRechnungXml(invoice)
|
val xRechnung = creator.createXRechnungXml(invoice)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun combinePdfAndInvoiceXml() {
|
||||||
|
val invoice: Invoice = createInvoice()
|
||||||
|
val existingPdf = File("Invoice.pdf")
|
||||||
|
val output = File("Zugferd.pdf")
|
||||||
|
|
||||||
|
val creator = EInvoiceCreator()
|
||||||
|
|
||||||
|
creator.combinePdfAndInvoiceXml(invoice, existingPdf, output)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun createInvoice() = Invoice(
|
private fun createInvoice() = Invoice(
|
||||||
invoiceNumber = "RE-00001",
|
invoiceNumber = "RE-00001",
|
||||||
invoicingDate = LocalDate.now(),
|
invoicingDate = LocalDate.now(),
|
||||||
|
|
Loading…
Reference in New Issue