Class SynchronizedMetaDataValidation
- java.lang.Object
-
- org.apache.pdfbox.preflight.metadata.SynchronizedMetaDataValidation
-
public class SynchronizedMetaDataValidation extends java.lang.ObjectClass which checks if document information available in a document is synchronized with XMP
-
-
Constructor Summary
Constructors Constructor Description SynchronizedMetaDataValidation()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ValidationResult.ValidationErrorabsentSchemaMetaDataError(java.lang.String target, java.lang.String schema)Return a formatted validation error when a specific metadata schema can't be foundprotected ValidationResult.ValidationErrorabsentXMPPropertyError(java.lang.String target, java.lang.String details)Return a formatted validation error when a specific XMP property can't be foundprotected voidanalyzeAuthorProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)Analyze if Author(s) embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeCreationDateProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve)Analyze if the CreationDate embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeCreatorToolProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve)Analyze if the creator tool embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeKeywordsProperty(PDDocumentInformation dico, AdobePDFSchema pdf, java.util.List<ValidationResult.ValidationError> ve)Analyze if Keyword(s) embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeModifyDateProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve)Analyze if the ModifyDate embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeProducerProperty(PDDocumentInformation dico, AdobePDFSchema pdf, java.util.List<ValidationResult.ValidationError> ve)Analyze if Producer embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeSubjectProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)Analyze if Subject(s) embedded in Document Information dictionary and in XMP properties are synchronizedprotected voidanalyzeTitleProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)Analyze if Title embedded in Document Information dictionary and in XMP properties are synchronizedprotected ValidationResult.ValidationErrorbadFieldXMPPropertyError(java.lang.String target, java.lang.String details)Return a formatted validation error when a specific XMP property has the wrong type.private booleanhasTimeZone(java.lang.Object date)Verify if the date string has time zone information.private booleanisValidPDFDateFormat(COSBase item)Verifies that a date item is a COSString and has the format "D:YYYYMMDDHHmmSSOHH'mm'", where D:YYYY is mandatory and the next fields optional, but only if all of their preceding fields are also present.private java.lang.StringremoveTrailingNul(java.lang.String string)A given string from the DocumentInformation dictionary may have some trailing Nul values which have to be stripped.protected ValidationExceptionschemaAccessException(java.lang.String target, java.lang.Throwable cause)Return an exception formatted on IOException when accessing on metadata schemaprotected ValidationResult.ValidationErrorunexpectedPrefixFoundError(java.lang.String prefFound, java.lang.String prefExpected, java.lang.String schema)Return a validationError formatted when a schema has not the expected prefixprotected ValidationResult.ValidationErrorunsynchronizedMetaDataError(java.lang.String target)Return a formatted validation error when metadata are not synchronizedjava.util.List<ValidationResult.ValidationError>validateMetadataSynchronization(PDDocument document, XMPMetadata metadata)Check if document information entries and XMP information are synchronized
-
-
-
Method Detail
-
analyzeTitleProperty
protected void analyzeTitleProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)
Analyze if Title embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- the Document Information Dictionary.dc- the Dublin Core Schema.ve- the list of validation errors.
-
analyzeAuthorProperty
protected void analyzeAuthorProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)
Analyze if Author(s) embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionarydc- Dublin Core Schemave- The list of validation errors
-
analyzeSubjectProperty
protected void analyzeSubjectProperty(PDDocumentInformation dico, DublinCoreSchema dc, java.util.List<ValidationResult.ValidationError> ve)
Analyze if Subject(s) embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionarydc- Dublin Core Schemave- The list of validation errors
-
analyzeKeywordsProperty
protected void analyzeKeywordsProperty(PDDocumentInformation dico, AdobePDFSchema pdf, java.util.List<ValidationResult.ValidationError> ve)
Analyze if Keyword(s) embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionarypdf- PDF Schemave- The list of validation errors
-
analyzeProducerProperty
protected void analyzeProducerProperty(PDDocumentInformation dico, AdobePDFSchema pdf, java.util.List<ValidationResult.ValidationError> ve)
Analyze if Producer embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionarypdf- PDF Schemave- The list of validation errors
-
analyzeCreatorToolProperty
protected void analyzeCreatorToolProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve)
Analyze if the creator tool embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionaryxmp- XMP Basic Schemave- The list of validation errors
-
analyzeCreationDateProperty
protected void analyzeCreationDateProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve) throws ValidationException
Analyze if the CreationDate embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionaryxmp- XMP Basic Schemave- The list of validation errors- Throws:
ValidationException
-
analyzeModifyDateProperty
protected void analyzeModifyDateProperty(PDDocumentInformation dico, XMPBasicSchema xmp, java.util.List<ValidationResult.ValidationError> ve) throws ValidationException
Analyze if the ModifyDate embedded in Document Information dictionary and in XMP properties are synchronized- Parameters:
dico- Document Information Dictionaryxmp- XMP Basic Schemave- The list of validation errors- Throws:
ValidationException
-
validateMetadataSynchronization
public java.util.List<ValidationResult.ValidationError> validateMetadataSynchronization(PDDocument document, XMPMetadata metadata) throws ValidationException
Check if document information entries and XMP information are synchronized- Parameters:
document- the PDF Documentmetadata- the XMP MetaData- Returns:
- List of validation errors
- Throws:
ValidationException
-
unexpectedPrefixFoundError
protected ValidationResult.ValidationError unexpectedPrefixFoundError(java.lang.String prefFound, java.lang.String prefExpected, java.lang.String schema)
Return a validationError formatted when a schema has not the expected prefix- Parameters:
prefFound-prefExpected-schema-- Returns:
- the generated validation error.
-
schemaAccessException
protected ValidationException schemaAccessException(java.lang.String target, java.lang.Throwable cause)
Return an exception formatted on IOException when accessing on metadata schema- Parameters:
target- the name of the schemacause- the raised IOException- Returns:
- the generated exception
-
unsynchronizedMetaDataError
protected ValidationResult.ValidationError unsynchronizedMetaDataError(java.lang.String target)
Return a formatted validation error when metadata are not synchronized- Parameters:
target- the concerned property- Returns:
- the generated validation error
-
absentSchemaMetaDataError
protected ValidationResult.ValidationError absentSchemaMetaDataError(java.lang.String target, java.lang.String schema)
Return a formatted validation error when a specific metadata schema can't be found- Parameters:
target- the concerned propertyschema- the XMP schema which can't be found- Returns:
- the generated validation error
-
absentXMPPropertyError
protected ValidationResult.ValidationError absentXMPPropertyError(java.lang.String target, java.lang.String details)
Return a formatted validation error when a specific XMP property can't be found- Parameters:
target- the concerned propertydetails- comments about the XMP property- Returns:
- the generated validation error
-
badFieldXMPPropertyError
protected ValidationResult.ValidationError badFieldXMPPropertyError(java.lang.String target, java.lang.String details)
Return a formatted validation error when a specific XMP property has the wrong type.- Parameters:
target- the concerned propertydetails- comments about the XMP property- Returns:
- the generated validation error
-
removeTrailingNul
private java.lang.String removeTrailingNul(java.lang.String string)
A given string from the DocumentInformation dictionary may have some trailing Nul values which have to be stripped.- Parameters:
string- to be stripped- Returns:
- the stripped string
-
hasTimeZone
private boolean hasTimeZone(java.lang.Object date)
Verify if the date string has time zone information.This method doesn't do a complete parsing as this is a helper AFTER a date has proven to be valid
- Parameters:
date-- Returns:
- the validation result
-
isValidPDFDateFormat
private boolean isValidPDFDateFormat(COSBase item)
Verifies that a date item is a COSString and has the format "D:YYYYMMDDHHmmSSOHH'mm'", where D:YYYY is mandatory and the next fields optional, but only if all of their preceding fields are also present. This needs to be done because the other date utilities are too lenient.- Parameters:
item- the date item that is to be checked.- Returns:
- true if the date format is assumed to be valid, false if not.
-
-