diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml
index 5e4d939a..4ec10658 100644
--- a/Mustang-CLI/pom.xml
+++ b/Mustang-CLI/pom.xml
@@ -3,14 +3,14 @@
org.mustangproject
core
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
4.0.0
org.mustangproject
Mustang-CLI
e-invoices commandline tool, allowing to create(embed), split and validate Factur-X/ZUGFeRD files. Validation should also work for XRechnung/CII.
jar
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
UTF-8
8
@@ -21,7 +21,7 @@
org.mustangproject
validator
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
diff --git a/library/pom.xml b/library/pom.xml
index 02a91571..8602afe9 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -3,13 +3,13 @@
org.mustangproject
core
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
4.0.0
org.mustangproject
library
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
jar
Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII)
FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT Cross Industry Invoice based formats Factur-X/ZUGFeRD, XRechnung and Order-X in your invoice PDFs.
@@ -56,12 +56,12 @@
net.sf.saxon
Saxon-HE
- 9.9.0-1
+ 12.4
com.fasterxml.jackson.core
jackson-databind
- 2.14.2
+ 2.17.1
@@ -71,36 +71,36 @@
- javax.activation
- activation
- 1.1.1
+ org.eclipse.angus
+ angus-activation
+ 2.0.2
org.apache.pdfbox
preflight
- 2.0.27
+ 3.0.2
org.apache.pdfbox
pdfbox
- 2.0.27
+ 3.0.2
org.dom4j
dom4j
- 2.1.3
+ 2.1.4
org.junit.jupiter
junit-jupiter-api
- 5.9.1
+ 5.10.2
test
org.junit.vintage
junit-vintage-engine
- 5.9.1
+ 5.10.2
test
@@ -108,13 +108,13 @@
com.helger
en16931-cii2ubl
- 1.4.10
+ 2.2.4
org.glassfish.jaxb
jaxb-runtime
- 2.3.3
+ 4.0.5
@@ -127,16 +127,9 @@
org.xmlunit
xmlunit-assertj
- 2.9.1
+ 2.10.0
test
-
-
- jakarta.xml.bind
- jakarta.xml.bind-api
- 2.3.3
-
-
diff --git a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
index 733006a1..ff695f52 100644
--- a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
+++ b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
@@ -5,9 +5,9 @@ import java.io.Serializable;
import com.helger.commons.error.list.ErrorList;
import com.helger.en16931.cii2ubl.CIIToUBL23Converter;
-import com.helger.ubl21.UBL21Writer;
-import com.helger.ubl22.UBL22Writer;
-import com.helger.ubl23.UBL23Writer;
+import com.helger.ubl21.UBL21Marshaller;
+import com.helger.ubl22.UBL22Marshaller;
+import com.helger.ubl23.UBL23Marshaller;
/***
* converts a Cross Industry Invoice XML file to a UBL XML file
@@ -25,37 +25,37 @@ public class CIIToUBL {
final Serializable aUBL = cc.convertCIItoUBL(input, occurred);
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType)
{
- UBL21Writer.invoice ()
+ UBL21Marshaller.invoice ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL, output);
}
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
{
- UBL21Writer.creditNote ()
+ UBL21Marshaller.creditNote ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL, output);
}
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
{
- UBL22Writer.invoice ()
+ UBL22Marshaller.invoice ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL, output);
}
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
{
- UBL22Writer.creditNote ()
+ UBL22Marshaller.creditNote ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL, output);
}
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType)
{
- UBL23Writer.invoice ()
+ UBL23Marshaller.invoice ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType) aUBL, output);
}
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType)
{
- UBL23Writer.creditNote ()
+ UBL23Marshaller.creditNote ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType) aUBL, output);
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/DAPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/DAPullProvider.java
index 36a564bc..7ae56ebd 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/DAPullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/DAPullProvider.java
@@ -28,7 +28,10 @@ import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.mustangproject.*;
+import org.mustangproject.EStandard;
+import org.mustangproject.FileAttachment;
+import org.mustangproject.Invoice;
+import org.mustangproject.XMLTools;
public class DAPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA1.java b/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA1.java
index 7123cd39..2f9669a8 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA1.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA1.java
@@ -19,13 +19,15 @@
package org.mustangproject.ZUGFeRD;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.pdfbox.preflight.PreflightDocument;
+import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.parser.PreflightParser;
-import javax.activation.DataSource;
-import java.io.IOException;
-import java.io.InputStream;
+import jakarta.activation.DataSource;
public class DXExporterFromA1 extends DXExporterFromA3 implements IZUGFeRDExporter {
protected boolean ignorePDFAErrors = false;
@@ -36,7 +38,7 @@ public class DXExporterFromA1 extends DXExporterFromA3 implements IZUGFeRDExport
}
private static boolean isValidA1(DataSource dataSource) throws IOException {
- return getPDFAParserValidationResult(new PreflightParser(dataSource));
+ return getPDFAParserValidationResult(PreflightParserHelper.createPreflightParser (dataSource));
}
/***
* internal helper function: get namespace for order-x
@@ -65,19 +67,19 @@ public class DXExporterFromA1 extends DXExporterFromA3 implements IZUGFeRDExport
* NonSequentialParser. Some additional controls are present to check a set of
* PDF/A requirements. (Stream length consistency, EOL after some Keyword...)
*/
- parser.parse();// might add a Format.PDF_A1A as parameter and iterate through A1 and A3
-
- try (PreflightDocument document = parser.getPreflightDocument()) {
+ // might add a Format.PDF_A1A as parameter and iterate through A1 and A3
+
+ try (PreflightDocument document = (PreflightDocument) parser.parse()) {
/*
* Once the syntax validation is done, the parser can provide a
* PreflightDocument (that inherits from PDDocument) This document process the
* end of PDF/A validation.
*/
- document.validate();
+ ValidationResult res = document.validate();
// Get validation result
- return document.getResult().isValid();
+ return res.isValid();
} catch (ValidationException e) {
/*
* the parse method can throw a SyntaxValidationException if the PDF file can't
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA3.java b/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA3.java
index 1e22166c..50aff364 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA3.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/DXExporterFromA3.java
@@ -20,16 +20,38 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.pdfbox.cos.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.pdmodel.*;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
+import org.apache.pdfbox.pdmodel.PDDocumentInformation;
+import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
+import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDMarkInfo;
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureTreeRoot;
import org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent;
-import org.apache.pdfbox.preflight.utils.ByteArrayDataSource;
import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.AdobePDFSchema;
import org.apache.xmpbox.schema.DublinCoreSchema;
@@ -43,11 +65,8 @@ import org.apache.xmpbox.xml.XmpSerializer;
import org.mustangproject.EStandard;
import org.mustangproject.FileAttachment;
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.xml.transform.TransformerException;
-import java.io.*;
-import java.util.*;
+import jakarta.activation.DataSource;
+import jakarta.activation.FileDataSource;
public class DXExporterFromA3 extends ZUGFeRDExporterFromA3 {
@@ -163,7 +182,7 @@ public class DXExporterFromA3 extends ZUGFeRDExporterFromA3 {
*/
public DXExporterFromA3 load(byte[] pdfBinary) throws IOException {
ensurePDFIsValid(new ByteArrayDataSource(new ByteArrayInputStream(pdfBinary)));
- doc = PDDocument.load(pdfBinary);
+ doc = Loader.loadPDF(pdfBinary);
return this;
}
@@ -542,13 +561,13 @@ public class DXExporterFromA3 extends ZUGFeRDExporterFromA3 {
}
protected PDFAIdentificationSchema getPDFAIdentificationSchema(XMPMetadata xmp) {
- PDFAIdentificationSchema pdfaid = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfaid = xmp.getPDFAIdentificationSchema();
if (pdfaid != null)
if (overwrite)
xmp.removeSchema(pdfaid);
else
return pdfaid;
- return xmp.createAndAddPFAIdentificationSchema();
+ return xmp.createAndAddPDFAIdentificationSchema();
}
protected void writeDublinCoreSchema(XMPMetadata xmp) {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/EinLieferscheinExporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/EinLieferscheinExporter.java
index 609755e1..b2e166e3 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/EinLieferscheinExporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/EinLieferscheinExporter.java
@@ -20,31 +20,10 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.pdfbox.cos.*;
-import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.pdmodel.*;
-import org.apache.pdfbox.pdmodel.common.PDMetadata;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
-import org.apache.pdfbox.preflight.PreflightDocument;
-import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.parser.PreflightParser;
-import org.apache.pdfbox.preflight.utils.ByteArrayDataSource;
-import org.apache.xmpbox.XMPMetadata;
-import org.apache.xmpbox.schema.AdobePDFSchema;
-import org.apache.xmpbox.schema.DublinCoreSchema;
-import org.apache.xmpbox.schema.PDFAIdentificationSchema;
-import org.apache.xmpbox.schema.XMPBasicSchema;
-import org.apache.xmpbox.type.BadFieldValueException;
-import org.apache.xmpbox.xml.XmpSerializer;
-
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.xml.transform.TransformerException;
-import java.io.*;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
public class EinLieferscheinExporter implements IExporter {
IXMLProvider xmlProvider;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IExporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IExporter.java
index 095037a4..7f30f81b 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExporter.java
@@ -18,7 +18,6 @@
*********************************************************************** */
package org.mustangproject.ZUGFeRD;
-import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
index fe854be7..75b01a67 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
@@ -15,10 +15,10 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants;
-
import java.math.BigDecimal;
+import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants;
+
/**
* The interface for allowances or charges, to be used by the pullprovider
* @author AlexanderSchmidt
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDCashDiscount.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDCashDiscount.java
index 90040a50..5d5fff13 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDCashDiscount.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDCashDiscount.java
@@ -1,7 +1,5 @@
package org.mustangproject.ZUGFeRD;
-import org.mustangproject.XMLTools;
-
public interface IZUGFeRDCashDiscount {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java
index 1a2b5300..53cc71b1 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java
@@ -26,12 +26,13 @@ package org.mustangproject.ZUGFeRD;
* @author jstaerk
* */
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.mustangproject.Item;
-
import java.math.BigDecimal;
import java.util.Date;
+import org.mustangproject.Item;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
@JsonDeserialize(as = Item.class)
public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{
IZUGFeRDExportableProduct getProduct();
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java
index e097ad86..8af10dbb 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java
@@ -20,8 +20,6 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.mustangproject.TradeParty;
-
/**
* Mustangproject's ZUGFeRD implementation neccessary interface for ZUGFeRD exporter Licensed under the APLv2
*
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java
index cff98744..f056da5c 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java
@@ -18,11 +18,12 @@
*********************************************************************** */
package org.mustangproject.ZUGFeRD;
-import javax.activation.DataSource;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
+import jakarta.activation.DataSource;
+
public interface IZUGFeRDExporter extends Closeable, IExporter {
/**
* factory: loads a PDF file and returns an appropriate exporter
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java
index 3ba722d9..9de017cf 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java
@@ -18,11 +18,6 @@
*********************************************************************** */
package org.mustangproject.ZUGFeRD;
-import javax.activation.DataSource;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-
public interface IZUGFeRDLegalOrganisation {
/***
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/JakartaUpdateMitigation.java b/library/src/main/java/org/mustangproject/ZUGFeRD/JakartaUpdateMitigation.java
new file mode 100644
index 00000000..203b5b45
--- /dev/null
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/JakartaUpdateMitigation.java
@@ -0,0 +1,104 @@
+package org.mustangproject.ZUGFeRD;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.RandomAccessFile;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.apache.pdfbox.io.IOUtils;
+import org.apache.pdfbox.io.RandomAccessRead;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
+import org.apache.pdfbox.preflight.parser.PreflightParser;
+
+import jakarta.activation.DataSource;
+
+// Copied from PDFBox preflight 2.0.x
+final class ByteArrayDataSource implements DataSource
+{
+ private ByteArrayOutputStream data;
+ private String type = null;
+ private String name = null;
+
+ public ByteArrayDataSource (InputStream is) throws IOException
+ {
+ data = new ByteArrayOutputStream ();
+ IOUtils.copy (is, data);
+ IOUtils.closeQuietly (is);
+ }
+
+ public String getContentType ()
+ {
+ return this.type;
+ }
+
+ /**
+ * @param type
+ * the type to set
+ */
+ public void setType (String type)
+ {
+ this.type = type;
+ }
+
+ /**
+ * @param name
+ * the name to set
+ */
+ public void setName (String name)
+ {
+ this.name = name;
+ }
+
+ public InputStream getInputStream () throws IOException
+ {
+ return new ByteArrayInputStream (data.toByteArray ());
+ }
+
+ public String getName ()
+ {
+ return this.name;
+ }
+
+ public OutputStream getOutputStream () throws IOException
+ {
+ this.data = new ByteArrayOutputStream ();
+ return data;
+ }
+}
+
+final class PreflightParserHelper
+{
+ private static File createTmpFile (InputStream input) throws IOException
+ {
+ FileOutputStream fos = null;
+ try
+ {
+ File tmpFile = File.createTempFile ("mustang-pdf", ".pdf");
+ fos = new FileOutputStream (tmpFile);
+ IOUtils.copy (input, fos);
+ return tmpFile;
+ }
+ finally
+ {
+ IOUtils.closeQuietly (input);
+ IOUtils.closeQuietly (fos);
+ }
+ }
+
+ public static PreflightParser createPreflightParser (DataSource dataSource) throws IOException
+ {
+ return new PreflightParser (createTmpFile (dataSource.getInputStream ()));
+ }
+}
+
+final class JakartaUpdateMitigation
+{
+ // Dummy for the name only
+}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA1.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA1.java
index 1805cc95..4b91f192 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA1.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA1.java
@@ -19,13 +19,15 @@
package org.mustangproject.ZUGFeRD;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.pdfbox.preflight.PreflightDocument;
+import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.parser.PreflightParser;
-import javax.activation.DataSource;
-import java.io.IOException;
-import java.io.InputStream;
+import jakarta.activation.DataSource;
public class OXExporterFromA1 extends OXExporterFromA3 implements IZUGFeRDExporter {
protected boolean ignorePDFAErrors = false;
@@ -36,7 +38,7 @@ public class OXExporterFromA1 extends OXExporterFromA3 implements IZUGFeRDExport
}
private static boolean isValidA1(DataSource dataSource) throws IOException {
- return getPDFAParserValidationResult(new PreflightParser(dataSource));
+ return getPDFAParserValidationResult(PreflightParserHelper.createPreflightParser(dataSource));
}
/***
* internal helper function: get namespace for order-x
@@ -61,19 +63,19 @@ public class OXExporterFromA1 extends OXExporterFromA3 implements IZUGFeRDExport
* NonSequentialParser. Some additional controls are present to check a set of
* PDF/A requirements. (Stream length consistency, EOL after some Keyword...)
*/
- parser.parse();// might add a Format.PDF_A1A as parameter and iterate through A1 and A3
+ // might add a Format.PDF_A1A as parameter and iterate through A1 and A3
- try (PreflightDocument document = parser.getPreflightDocument()) {
+ try (PreflightDocument document = (PreflightDocument) parser.parse()) {
/*
* Once the syntax validation is done, the parser can provide a
* PreflightDocument (that inherits from PDDocument) This document process the
* end of PDF/A validation.
*/
- document.validate();
+ ValidationResult res = document.validate();
// Get validation result
- return document.getResult().isValid();
+ return res.isValid();
} catch (ValidationException e) {
/*
* the parse method can throw a SyntaxValidationException if the PDF file can't
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA3.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA3.java
index 92433b46..b326cf22 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA3.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXExporterFromA3.java
@@ -20,20 +20,38 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.pdfbox.cos.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.pdmodel.*;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
+import org.apache.pdfbox.pdmodel.PDDocumentInformation;
+import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
+import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDMarkInfo;
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureTreeRoot;
-import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
-import org.apache.pdfbox.pdmodel.font.PDFont;
-import org.apache.pdfbox.pdmodel.font.PDFontDescriptor;
-import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent;
-import org.apache.pdfbox.preflight.utils.ByteArrayDataSource;
import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.AdobePDFSchema;
import org.apache.xmpbox.schema.DublinCoreSchema;
@@ -47,11 +65,8 @@ import org.apache.xmpbox.xml.XmpSerializer;
import org.mustangproject.EStandard;
import org.mustangproject.FileAttachment;
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.xml.transform.TransformerException;
-import java.io.*;
-import java.util.*;
+import jakarta.activation.DataSource;
+import jakarta.activation.FileDataSource;
public class OXExporterFromA3 extends ZUGFeRDExporterFromA3 {
@@ -167,7 +182,7 @@ public class OXExporterFromA3 extends ZUGFeRDExporterFromA3 {
*/
public OXExporterFromA3 load(byte[] pdfBinary) throws IOException {
ensurePDFIsValid(new ByteArrayDataSource(new ByteArrayInputStream(pdfBinary)));
- doc = PDDocument.load(pdfBinary);
+ doc = Loader.loadPDF(pdfBinary);
return this;
}
@@ -536,13 +551,13 @@ public class OXExporterFromA3 extends ZUGFeRDExporterFromA3 {
}
protected PDFAIdentificationSchema getPDFAIdentificationSchema(XMPMetadata xmp) {
- PDFAIdentificationSchema pdfaid = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfaid = xmp.getPDFAIdentificationSchema();
if (pdfaid != null)
if (overwrite)
xmp.removeSchema(pdfaid);
else
return pdfaid;
- return xmp.createAndAddPFAIdentificationSchema();
+ return xmp.createAndAddPDFAIdentificationSchema();
}
protected void writeDublinCoreSchema(XMPMetadata xmp) {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
index 9ea90e19..eabf2a14 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
@@ -27,18 +27,14 @@ import static org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants.CATE
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
-import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
-import java.util.stream.Collectors;
import org.mustangproject.EStandard;
import org.mustangproject.FileAttachment;
-import org.mustangproject.IncludedNote;
import org.mustangproject.XMLTools;
public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java b/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java
index 1e70462f..3d73e7ac 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java
@@ -20,12 +20,12 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.mustangproject.EStandard;
-
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.mustangproject.EStandard;
+
public class Profiles {
static Map zf2Map = Stream.of(new Object[][]{
{"MINIMUM", new Profile("MINIMUM", "urn:factur-x.eu:1p0:minimum")},
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/UBLDAPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/UBLDAPullProvider.java
index 22f59db2..f6ed2993 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/UBLDAPullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/UBLDAPullProvider.java
@@ -20,32 +20,22 @@
*/
package org.mustangproject.ZUGFeRD;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.mustangproject.EStandard;
-import org.mustangproject.FileAttachment;
-import org.mustangproject.TradeParty;
import org.mustangproject.XMLTools;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.math.BigDecimal;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.Base64;
-import java.util.Date;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.mustangproject.ZUGFeRD.ZUGFeRDDateFormat.DATE;
-import static org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants.CORRECTEDINVOICE;
-import static org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants.CATEGORY_CODES_WITH_EXEMPTION_REASON;
-
public class UBLDAPullProvider implements IXMLProvider {
protected IExportableTransaction trans;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java b/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java
index 9ea78955..04934a4f 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java
@@ -1,9 +1,20 @@
package org.mustangproject.ZUGFeRD;
-import javax.xml.transform.*;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
-import java.io.*;
/***
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java b/library/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java
index 2bfe9ad2..567cd300 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java
@@ -30,7 +30,15 @@ package org.mustangproject.ZUGFeRD;
import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.XmpConstants;
import org.apache.xmpbox.schema.PDFAExtensionSchema;
-import org.apache.xmpbox.type.*;
+import org.apache.xmpbox.type.ArrayProperty;
+import org.apache.xmpbox.type.Attribute;
+import org.apache.xmpbox.type.Cardinality;
+import org.apache.xmpbox.type.ChoiceType;
+import org.apache.xmpbox.type.DefinedStructuredType;
+import org.apache.xmpbox.type.PDFAPropertyType;
+import org.apache.xmpbox.type.PDFASchemaType;
+import org.apache.xmpbox.type.StructuredType;
+import org.apache.xmpbox.type.TextType;
import org.mustangproject.EStandard;
/**
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/XRExporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/XRExporter.java
index 24c2a8be..5c2fa2a3 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/XRExporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/XRExporter.java
@@ -20,31 +20,10 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.pdfbox.cos.*;
-import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.pdmodel.*;
-import org.apache.pdfbox.pdmodel.common.PDMetadata;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
-import org.apache.pdfbox.preflight.PreflightDocument;
-import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.parser.PreflightParser;
-import org.apache.pdfbox.preflight.utils.ByteArrayDataSource;
-import org.apache.xmpbox.XMPMetadata;
-import org.apache.xmpbox.schema.AdobePDFSchema;
-import org.apache.xmpbox.schema.DublinCoreSchema;
-import org.apache.xmpbox.schema.PDFAIdentificationSchema;
-import org.apache.xmpbox.schema.XMPBasicSchema;
-import org.apache.xmpbox.type.BadFieldValueException;
-import org.apache.xmpbox.xml.XmpSerializer;
-
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.xml.transform.TransformerException;
-import java.io.*;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
public class XRExporter implements IExporter {
IXMLProvider xmlProvider;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/XRechnungImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/XRechnungImporter.java
index 069c6e57..ab476e86 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/XRechnungImporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/XRechnungImporter.java
@@ -1,8 +1,5 @@
package org.mustangproject.ZUGFeRD;
-import org.mustangproject.XMLTools;
-
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
@@ -10,6 +7,8 @@ import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.mustangproject.XMLTools;
+
public class XRechnungImporter extends ZUGFeRDImporter {
public XRechnungImporter(byte[] rawXml) {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1.java
index c8c7caba..72bda71d 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1.java
@@ -19,14 +19,16 @@
package org.mustangproject.ZUGFeRD;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.pdfbox.preflight.PreflightDocument;
+import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.parser.PreflightParser;
import org.mustangproject.EStandard;
-import javax.activation.DataSource;
-import java.io.IOException;
-import java.io.InputStream;
+import jakarta.activation.DataSource;
public class ZUGFeRDExporterFromA1 extends ZUGFeRDExporterFromA3 implements IZUGFeRDExporter {
protected boolean ignorePDFAErrors = false;
@@ -37,7 +39,7 @@ public class ZUGFeRDExporterFromA1 extends ZUGFeRDExporterFromA3 implements IZUG
}
private static boolean isValidA1(DataSource dataSource) throws IOException {
- return getPDFAParserValidationResult(new PreflightParser(dataSource));
+ return getPDFAParserValidationResult(PreflightParserHelper.createPreflightParser(dataSource));
}
private static boolean getPDFAParserValidationResult(PreflightParser parser) throws IOException {
@@ -46,19 +48,19 @@ public class ZUGFeRDExporterFromA1 extends ZUGFeRDExporterFromA3 implements IZUG
* NonSequentialParser. Some additional controls are present to check a set of
* PDF/A requirements. (Stream length consistency, EOL after some Keyword...)
*/
- parser.parse();// might add a Format.PDF_A1A as parameter and iterate through A1 and A3
+ // might add a Format.PDF_A1A as parameter and iterate through A1 and A3
- try (PreflightDocument document = parser.getPreflightDocument()) {
+ try (PreflightDocument document = (PreflightDocument) parser.parse()) {
/*
* Once the syntax validation is done, the parser can provide a
* PreflightDocument (that inherits from PDDocument) This document process the
* end of PDF/A validation.
*/
- document.validate();
+ ValidationResult res = document.validate();
// Get validation result
- return document.getResult().isValid();
+ return res.isValid();
} catch (ValidationException e) {
/*
* the parse method can throw a SyntaxValidationException if the PDF file can't
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java
index bc687aa7..bf884f8d 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java
@@ -20,9 +20,35 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.pdfbox.cos.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.pdmodel.*;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
+import org.apache.pdfbox.pdmodel.PDDocumentInformation;
+import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
+import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
@@ -33,7 +59,6 @@ import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDFontDescriptor;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent;
-import org.apache.pdfbox.preflight.utils.ByteArrayDataSource;
import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.AdobePDFSchema;
import org.apache.xmpbox.schema.DublinCoreSchema;
@@ -47,11 +72,8 @@ import org.apache.xmpbox.xml.XmpSerializer;
import org.mustangproject.EStandard;
import org.mustangproject.FileAttachment;
-import javax.activation.DataSource;
-import javax.activation.FileDataSource;
-import javax.xml.transform.TransformerException;
-import java.io.*;
-import java.util.*;
+import jakarta.activation.DataSource;
+import jakarta.activation.FileDataSource;
public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporter, IExporter, Closeable {
private boolean isFacturX = true;
@@ -258,7 +280,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
*/
public ZUGFeRDExporterFromA3 load(byte[] pdfBinary) throws IOException {
ensurePDFIsValid(new ByteArrayDataSource(new ByteArrayInputStream(pdfBinary)));
- doc = PDDocument.load(pdfBinary);
+ doc = Loader.loadPDF(pdfBinary);
return this;
}
@@ -713,13 +735,13 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
}
protected PDFAIdentificationSchema getPDFAIdentificationSchema(XMPMetadata xmp) {
- PDFAIdentificationSchema pdfaid = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfaid = xmp.getPDFAIdentificationSchema();
if (pdfaid != null)
if (overwrite)
xmp.removeSchema(pdfaid);
else
return pdfaid;
- return xmp.createAndAddPFAIdentificationSchema();
+ return xmp.createAndAddPDFAIdentificationSchema();
}
protected void writeDublinCoreSchema(XMPMetadata xmp) {
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java
index 02067215..dfddc090 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java
@@ -20,6 +20,13 @@
*/
package org.mustangproject.ZUGFeRD;
+import java.io.DataInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
@@ -30,8 +37,7 @@ import org.apache.xmpbox.xml.XmpParsingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.activation.DataSource;
-import java.io.*;
+import jakarta.activation.DataSource;
/***
* Auto-detects the source PDF-A-Version and acts accordingly
@@ -79,7 +85,7 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter {
* @throws IOException
*/
private int getPDFAVersion(byte[] byteArrayInputStream) throws IOException {
- PDDocument document = PDDocument.load(byteArrayInputStream);
+ PDDocument document = Loader.loadPDF(byteArrayInputStream);
PDDocumentCatalog catalog = document.getDocumentCatalog();
PDMetadata metadata = catalog.getMetadata();
// the PDF version we could get through the document but we want the PDF-A version,
@@ -89,7 +95,7 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter {
DomXmpParser xmpParser = new DomXmpParser();
XMPMetadata xmp = xmpParser.parse(metadata.createInputStream());
- PDFAIdentificationSchema pdfaSchema = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfaSchema = xmp.getPDFAIdentificationSchema();
if (pdfaSchema != null) {
return pdfaSchema.getPart();
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
index 6cc33371..58b7fd5a 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
@@ -23,7 +23,13 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -36,6 +42,8 @@ import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
@@ -115,7 +123,7 @@ public class ZUGFeRDImporter {
if (Arrays.equals(pad, pdfSignature)) { // we have a pdf
- try (PDDocument doc = PDDocument.load(pdfStream)) {
+ try (PDDocument doc = Loader.loadPDF(IOUtils.toByteArray (pdfStream))) {
// PDDocumentInformation info = doc.getDocumentInformation();
final PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
//start
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
index 13a693f0..33eaf0c9 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
@@ -3,11 +3,9 @@ package org.mustangproject.ZUGFeRD;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
-import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
import javax.xml.xpath.XPath;
@@ -16,7 +14,14 @@ import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
-import org.mustangproject.*;
+import org.mustangproject.Allowance;
+import org.mustangproject.BankDetails;
+import org.mustangproject.Charge;
+import org.mustangproject.EStandard;
+import org.mustangproject.Invoice;
+import org.mustangproject.Item;
+import org.mustangproject.TradeParty;
+import org.mustangproject.XMLTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Node;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java
index b5da00ba..c9431b2b 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java
@@ -20,30 +20,50 @@
*/
package org.mustangproject.ZUGFeRD;
-import org.apache.fop.apps.*;
-import org.apache.fop.apps.io.ResourceResolverFactory;
-import org.apache.fop.configuration.Configuration;
-import org.apache.fop.configuration.ConfigurationException;
-import org.apache.fop.configuration.DefaultConfigurationBuilder;
-import org.apache.xmlgraphics.util.MimeConstants;
-import org.mustangproject.CII.CIIToUBL;
-import org.mustangproject.ClasspathResolverURIAdapter;
-import org.xml.sax.SAXException;
-
-import javax.xml.transform.*;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import java.io.*;
-import java.net.URI;
-import java.net.URISyntaxException;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.FopFactoryBuilder;
+import org.apache.fop.apps.io.ResourceResolverFactory;
+import org.apache.fop.configuration.Configuration;
+import org.apache.fop.configuration.ConfigurationException;
+import org.apache.fop.configuration.DefaultConfigurationBuilder;
+import org.apache.xmlgraphics.util.MimeConstants;
+import org.mustangproject.ClasspathResolverURIAdapter;
+import org.mustangproject.CII.CIIToUBL;
+
public class ZUGFeRDVisualizer {
public enum Language {
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java
index 3d6f27a0..16925115 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java
@@ -21,6 +21,7 @@ package org.mustangproject.ZUGFeRD;
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.xmpbox.XMPMetadata;
@@ -252,7 +253,7 @@ public class MustangReaderWriterEdgeTest extends MustangReaderTestCase {
setupPdfUnderTest(SOURCE_PDF, TARGET_PDF);
// now check the contents
- PDDocument doc = PDDocument.load(new File(TARGET_PDF));
+ PDDocument doc = Loader.loadPDF(new File(TARGET_PDF));
PDMetadata meta = doc.getDocumentCatalog().getMetadata();
assertNotNull("The pdf must contain XMPMetadata", meta);
@@ -262,7 +263,7 @@ public class MustangReaderWriterEdgeTest extends MustangReaderTestCase {
DomXmpParser xmpParser = new DomXmpParser();
XMPMetadata xmp = xmpParser.parse(xmpBytes);
- PDFAIdentificationSchema pdfai = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfai = xmp.getPDFAIdentificationSchema();
assertNotNull("The pdf must contain a PDFIdentificationSchema", pdfai);
assertTrue("The PDF/A conformance must be A, B or U",
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java
index 52cf151a..b8dae9bb 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java
@@ -21,6 +21,7 @@ package org.mustangproject.ZUGFeRD;
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
@@ -328,13 +329,13 @@ public class MustangReaderWriterTest extends MustangReaderTestCase {
}
private void checkPdfA3B(File tempFile) throws IOException, InvalidPasswordException {
- try (PDDocument doc = PDDocument.load(tempFile)) {
+ try (PDDocument doc = Loader.loadPDF(tempFile)) {
PDMetadata metadata = doc.getDocumentCatalog().getMetadata();
InputStream exportXMPMetadata = metadata.exportXMPMetadata();
byte[] xmpBytes = new byte[exportXMPMetadata.available()];
exportXMPMetadata.read(xmpBytes);
final XMPMetadata xmp = new DomXmpParser().parse(xmpBytes);
- PDFAIdentificationSchema pdfaid = xmp.getPDFIdentificationSchema();
+ PDFAIdentificationSchema pdfaid = xmp.getPDFAIdentificationSchema();
assertEquals(pdfaid.getPart().intValue(), 3);
assertEquals(pdfaid.getConformance(), "U");
} catch (XmpParsingException e) {
diff --git a/pom.xml b/pom.xml
index 10feb62d..941db51e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.mustangproject
core
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
pom
Mustang
@@ -118,9 +118,9 @@
github
-Xdoclint:none
- 1.8
- 1.8
- 1.8
+ 11
+ 11
+ 11
true
@@ -199,7 +199,7 @@
- 8
+ 11
adopt
diff --git a/validator/pom.xml b/validator/pom.xml
index 0d6dabf0..6f35fd21 100644
--- a/validator/pom.xml
+++ b/validator/pom.xml
@@ -3,7 +3,7 @@
org.mustangproject
core
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
4.0.0
org.mustangproject
@@ -11,7 +11,7 @@
Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung)
jar
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
@@ -38,7 +38,7 @@
${project.groupId}
library
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
@@ -98,7 +98,7 @@
org.mustangproject
library
- 2.11.1-SNAPSHOT
+ 3.0.0-SNAPSHOT
org.xmlunit