Package com.pdftools.pdfa.conversion
Class Converter
- java.lang.Object
-
- com.pdftools.internal.NativeBase
-
- com.pdftools.internal.NativeObject
-
- com.pdftools.pdfa.conversion.Converter
-
public class Converter extends NativeObject
The class to convert PDF documents to PDF/A
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
Converter.ConversionEvent
The event for errors, warnings, and informational messages that occur during conversionstatic interface
Converter.ConversionEventListener
Listener interface for theConverter.ConversionEvent
event.
-
Constructor Summary
Constructors Constructor Description Converter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAssociatedFile(Stream embeddedFile, java.lang.String name)
Prepares the associated file for embedding.void
addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate)
Prepares the associated file for embedding.void
addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship)
Prepares the associated file for embedding.void
addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType)
Prepares the associated file for embedding.void
addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType, java.lang.String description)
Prepares the associated file for embedding.void
addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType, java.lang.String description, java.time.OffsetDateTime modificationDate)
Prepares the associated file for embedding.void
addConversionEventListener(Converter.ConversionEventListener listener)
Add a listener for theConverter.ConversionEvent
event.void
addInvoiceXml(InvoiceType invoiceType, Stream invoice)
Prepares the invoice XML file (ZUGFeRD or Factur-X) for embedding.void
addInvoiceXml(InvoiceType invoiceType, Stream invoice, AFRelationship afRelationship)
Prepares the invoice XML file (ZUGFeRD or Factur-X) for embedding.Document
convert(AnalysisResult analysis, Document document, Stream outStream)
Convert a document to PDF/A.Document
convert(AnalysisResult analysis, Document document, Stream outStream, ConversionOptions options)
Convert a document to PDF/A.Document
convert(AnalysisResult analysis, Document document, Stream outStream, ConversionOptions options, OutputOptions outOptions)
Convert a document to PDF/A.void
removeConversionEventListener(Converter.ConversionEventListener listener)
Remove registered listener for theConverter.ConversionEvent
event.-
Methods inherited from class com.pdftools.internal.NativeObject
equals, hashCode
-
-
-
-
Method Detail
-
addConversionEventListener
public void addConversionEventListener(Converter.ConversionEventListener listener)
Add a listener for theConverter.ConversionEvent
event.- Parameters:
listener
- Listener for theConverter.ConversionEvent
event. If a listener is added that is already registered, it is ignored.
-
removeConversionEventListener
public void removeConversionEventListener(Converter.ConversionEventListener listener)
Remove registered listener for theConverter.ConversionEvent
event.- Parameters:
listener
- Listener for theConverter.ConversionEvent
event that should be removed. If the listener is not registered, it is ignored.
-
addInvoiceXml
public void addInvoiceXml(InvoiceType invoiceType, Stream invoice)
Prepares the invoice XML file (ZUGFeRD or Factur-X) for embedding.
Note: This requires the compliance to be set to PDF/A-3.- Parameters:
invoiceType
- The type of invoice.invoice
- The XML invoice stream.- Throws:
java.lang.IllegalArgumentException
- The invoice stream could not be opened for reading.java.lang.IllegalArgumentException
- ifinvoiceType
isnull
java.lang.IllegalArgumentException
- ifinvoice
isnull
-
addInvoiceXml
public void addInvoiceXml(InvoiceType invoiceType, Stream invoice, AFRelationship afRelationship)
Prepares the invoice XML file (ZUGFeRD or Factur-X) for embedding.
Note: This requires the compliance to be set to PDF/A-3.- Parameters:
invoiceType
- The type of invoice.invoice
- The XML invoice stream.afRelationship
- If no value is provided, a sensible default value is chosen based on the invoice type and version.- Throws:
java.lang.IllegalArgumentException
- The invoice stream could not be opened for reading.java.lang.IllegalArgumentException
- ifinvoiceType
isnull
java.lang.IllegalArgumentException
- ifinvoice
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.associate
- The object to associate the embedded file with,-1
for none,0
for document, number greater than 0 for respective page. Ifnull
, the default value is0
for PDF/A-3 and-1
otherwise.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.associate
- The object to associate the embedded file with,-1
for none,0
for document, number greater than 0 for respective page. Ifnull
, the default value is0
for PDF/A-3 and-1
otherwise.afRelationship
- The relationship of the embedded file to the object associate. (Ignored, ifassociate
is-1
.) Ifnull
, the default value isAFRelationship.UNSPECIFIED
.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.associate
- The object to associate the embedded file with,-1
for none,0
for document, number greater than 0 for respective page. Ifnull
, the default value is0
for PDF/A-3 and-1
otherwise.afRelationship
- The relationship of the embedded file to the object associate. (Ignored, ifassociate
is-1
.) Ifnull
, the default value isAFRelationship.UNSPECIFIED
.mimeType
- MIME Type of the embedded file. Common values other than the default are"application/pdf"
,"application/xml"
or"application/msword"
. Ifnull
, the default value is"application/octet-stream"
.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType, java.lang.String description) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.associate
- The object to associate the embedded file with,-1
for none,0
for document, number greater than 0 for respective page. Ifnull
, the default value is0
for PDF/A-3 and-1
otherwise.afRelationship
- The relationship of the embedded file to the object associate. (Ignored, ifassociate
is-1
.) Ifnull
, the default value isAFRelationship.UNSPECIFIED
.mimeType
- MIME Type of the embedded file. Common values other than the default are"application/pdf"
,"application/xml"
or"application/msword"
. Ifnull
, the default value is"application/octet-stream"
.description
- A description of the embedded file. This is presented to the user when viewing the list of embedded files. Ifnull
, the default value is""
.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
addAssociatedFile
public void addAssociatedFile(Stream embeddedFile, java.lang.String name, java.lang.Integer associate, AFRelationship afRelationship, java.lang.String mimeType, java.lang.String description, java.time.OffsetDateTime modificationDate) throws java.io.IOException
Prepares the associated file for embedding.
Add a file to the document’s embedded files. For PDF/A-3, the embedded file is associated with an object of the document, i.e. it is an associated file. The file is embedded as-is. Embedding files is not allowed for PDF/A-1 and restricted to PDF/A conforming files for PDF/A-2.- Parameters:
embeddedFile
- The stream of the embedded file.name
- The name used for the embedded file. This name is presented to the user when viewing the list of embedded files.associate
- The object to associate the embedded file with,-1
for none,0
for document, number greater than 0 for respective page. Ifnull
, the default value is0
for PDF/A-3 and-1
otherwise.afRelationship
- The relationship of the embedded file to the object associate. (Ignored, ifassociate
is-1
.) Ifnull
, the default value isAFRelationship.UNSPECIFIED
.mimeType
- MIME Type of the embedded file. Common values other than the default are"application/pdf"
,"application/xml"
or"application/msword"
. Ifnull
, the default value is"application/octet-stream"
.description
- A description of the embedded file. This is presented to the user when viewing the list of embedded files. Ifnull
, the default value is""
.modificationDate
- The modify date of the file. Ifnull
, the default value is modification date of the file on the file system or current time, if not available.- Throws:
java.lang.IllegalArgumentException
- The associated file stream could not be opened for reading.java.lang.IllegalArgumentException
- Theassociate
argument is invalid.java.io.IOException
- Error reading fromembeddedFile
.java.lang.IllegalArgumentException
- ifembeddedFile
isnull
java.lang.IllegalArgumentException
- ifname
isnull
-
convert
public Document convert(AnalysisResult analysis, Document document, Stream outStream) throws java.io.IOException, NotFoundException, GenericException, LicenseException, CorruptException, ConformanceException, UnsupportedFeatureException, ProcessingException
Convert a document to PDF/A.
Note that it is highly recommended to useConverter.ConversionEventListener
to detect critical conversion events.- Parameters:
analysis
- The result of the document's analysis usingpdftools.pdfa.validation.Validator.analyze
.document
- The document to convertoutStream
- The stream where the converted document is written- Returns:
- The result of the conversion
- Throws:
LicenseException
- The license check has failed.java.lang.IllegalArgumentException
- TheoutOptions
argument is invalid.java.lang.IllegalArgumentException
- The output stream could not be opened for writing.java.lang.IllegalStateException
- Thedocument
has already been closed.java.lang.IllegalArgumentException
- Theanalysis
has already been closed, e.g. due to a previous conversion.java.lang.IllegalArgumentException
- The PDF/A version of the analysis and the conversion options do not match.java.lang.IllegalArgumentException
- Theanalysis
is not the analysis result ofdocument
.java.io.IOException
- Error reading from or writing to theoutStream
.ConformanceException
- The conformance required byoptions
cannot be achieved.- PDF/A level U: All text of the input document must be extractable.
- PDF/A level A: In addition to the requirements of level U, the input document must be tagged.
ConformanceException
- The PDF/A version of the conformances ofanalysis
andoptions
differ. The same PDF/A version must be used for the analysis and conversion.java.lang.IllegalArgumentException
- TheoutOptions
specifies document encryption, which is not allowed in PDF/A documents.GenericException
- The document cannot be converted to PDF/A.CorruptException
- The analysis has been stopped.ProcessingException
- Failed to add the invoice file. Possible reasons include an invalid XML format, or that the invoice type conflicts with the content of the XML file.UnsupportedFeatureException
- The document is not a PDF, but an XFA document. Seepdftools.pdf.Document.getXfa
for more information on how to detect and handle XFA documents.NotFoundException
- A required font is missing from the installed font directories.java.lang.IllegalStateException
- Invalid associate value for an embedded file.java.lang.IllegalArgumentException
- ifanalysis
isnull
java.lang.IllegalArgumentException
- ifdocument
isnull
java.lang.IllegalArgumentException
- ifoutStream
isnull
-
convert
public Document convert(AnalysisResult analysis, Document document, Stream outStream, ConversionOptions options) throws java.io.IOException, NotFoundException, GenericException, LicenseException, CorruptException, ConformanceException, UnsupportedFeatureException, ProcessingException
Convert a document to PDF/A.
Note that it is highly recommended to useConverter.ConversionEventListener
to detect critical conversion events.- Parameters:
analysis
- The result of the document's analysis usingpdftools.pdfa.validation.Validator.analyze
.document
- The document to convertoutStream
- The stream where the converted document is writtenoptions
- The conversion options- Returns:
- The result of the conversion
- Throws:
LicenseException
- The license check has failed.java.lang.IllegalArgumentException
- TheoutOptions
argument is invalid.java.lang.IllegalArgumentException
- The output stream could not be opened for writing.java.lang.IllegalStateException
- Thedocument
has already been closed.java.lang.IllegalArgumentException
- Theanalysis
has already been closed, e.g. due to a previous conversion.java.lang.IllegalArgumentException
- The PDF/A version of the analysis and the conversion options do not match.java.lang.IllegalArgumentException
- Theanalysis
is not the analysis result ofdocument
.java.io.IOException
- Error reading from or writing to theoutStream
.ConformanceException
- The conformance required byoptions
cannot be achieved.- PDF/A level U: All text of the input document must be extractable.
- PDF/A level A: In addition to the requirements of level U, the input document must be tagged.
ConformanceException
- The PDF/A version of the conformances ofanalysis
andoptions
differ. The same PDF/A version must be used for the analysis and conversion.java.lang.IllegalArgumentException
- TheoutOptions
specifies document encryption, which is not allowed in PDF/A documents.GenericException
- The document cannot be converted to PDF/A.CorruptException
- The analysis has been stopped.ProcessingException
- Failed to add the invoice file. Possible reasons include an invalid XML format, or that the invoice type conflicts with the content of the XML file.UnsupportedFeatureException
- The document is not a PDF, but an XFA document. Seepdftools.pdf.Document.getXfa
for more information on how to detect and handle XFA documents.NotFoundException
- A required font is missing from the installed font directories.java.lang.IllegalStateException
- Invalid associate value for an embedded file.java.lang.IllegalArgumentException
- ifanalysis
isnull
java.lang.IllegalArgumentException
- ifdocument
isnull
java.lang.IllegalArgumentException
- ifoutStream
isnull
-
convert
public Document convert(AnalysisResult analysis, Document document, Stream outStream, ConversionOptions options, OutputOptions outOptions) throws java.io.IOException, NotFoundException, GenericException, LicenseException, CorruptException, ConformanceException, UnsupportedFeatureException, ProcessingException
Convert a document to PDF/A.
Note that it is highly recommended to useConverter.ConversionEventListener
to detect critical conversion events.- Parameters:
analysis
- The result of the document's analysis usingpdftools.pdfa.validation.Validator.analyze
.document
- The document to convertoutStream
- The stream where the converted document is writtenoptions
- The conversion optionsoutOptions
- The output options object- Returns:
- The result of the conversion
- Throws:
LicenseException
- The license check has failed.java.lang.IllegalArgumentException
- TheoutOptions
argument is invalid.java.lang.IllegalArgumentException
- The output stream could not be opened for writing.java.lang.IllegalStateException
- Thedocument
has already been closed.java.lang.IllegalArgumentException
- Theanalysis
has already been closed, e.g. due to a previous conversion.java.lang.IllegalArgumentException
- The PDF/A version of the analysis and the conversion options do not match.java.lang.IllegalArgumentException
- Theanalysis
is not the analysis result ofdocument
.java.io.IOException
- Error reading from or writing to theoutStream
.ConformanceException
- The conformance required byoptions
cannot be achieved.- PDF/A level U: All text of the input document must be extractable.
- PDF/A level A: In addition to the requirements of level U, the input document must be tagged.
ConformanceException
- The PDF/A version of the conformances ofanalysis
andoptions
differ. The same PDF/A version must be used for the analysis and conversion.java.lang.IllegalArgumentException
- TheoutOptions
specifies document encryption, which is not allowed in PDF/A documents.GenericException
- The document cannot be converted to PDF/A.CorruptException
- The analysis has been stopped.ProcessingException
- Failed to add the invoice file. Possible reasons include an invalid XML format, or that the invoice type conflicts with the content of the XML file.UnsupportedFeatureException
- The document is not a PDF, but an XFA document. Seepdftools.pdf.Document.getXfa
for more information on how to detect and handle XFA documents.NotFoundException
- A required font is missing from the installed font directories.java.lang.IllegalStateException
- Invalid associate value for an embedded file.java.lang.IllegalArgumentException
- ifanalysis
isnull
java.lang.IllegalArgumentException
- ifdocument
isnull
java.lang.IllegalArgumentException
- ifoutStream
isnull
-
-