diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/IPTCMetadataExtractor.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/IPTCMetadataExtractor.java index 02f6f0fb..7d716978 100644 --- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/IPTCMetadataExtractor.java +++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/metadataExtractors/IPTCMetadataExtractor.java @@ -27,10 +27,13 @@ package org.alfresco.transformer.metadataExtractors; import java.io.IOException; +import java.io.Serializable; +import java.util.Map; import org.alfresco.transform.exceptions.TransformException; import org.alfresco.transformer.tika.parsers.ExifToolParser; import org.apache.tika.exception.TikaException; +import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.Parser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,8 +54,20 @@ public class IPTCMetadataExtractor extends AbstractTikaMetadataExtractor return new ExifToolParser(); } catch (IOException | TikaException e) { logger.error(e.getMessage(), e); - throw new TransformException(500, "Error creating IPTC parser"); + throw new TransformException(500, "Error creating IPTC parser: " + e.getMessage()); } } + /** + * Because some of the mimetypes that IPTCMetadataExtractor now parse, were previously handled + * by TikaAutoMetadataExtractor we call the TikaAutoMetadataExtractor.extractSpecific method to + * ensure that the returned properties contains the expected entries. + */ + @Override + protected Map extractSpecific(Metadata metadata, Map properties, + Map headers) { + + properties = new TikaAutoMetadataExtractor().extractSpecific(metadata, properties, headers); + return properties; + } } diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java index 90442690..1ffa420e 100644 --- a/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java +++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/java/org/alfresco/transformer/tika/parsers/ExifToolParser.java @@ -26,6 +26,10 @@ */ package org.alfresco.transformer.tika.parsers; +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.alfresco.transform.client.model.Mimetype.MIMETYPE_IMAGE_JPEG; +import static org.alfresco.transform.client.model.Mimetype.MIMETYPE_IMAGE_TIFF; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -35,25 +39,28 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Reader; import java.net.URL; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.tika.metadata.Metadata; - import org.apache.tika.exception.TikaException; import org.apache.tika.io.IOUtils; import org.apache.tika.io.NullOutputStream; import org.apache.tika.io.TemporaryResources; import org.apache.tika.io.TikaInputStream; +import org.apache.tika.metadata.Metadata; +import org.apache.tika.mime.MediaType; import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.Parser; import org.apache.tika.parser.external.ExternalParser; import org.apache.tika.parser.external.ExternalParsersFactory; +import org.apache.tika.parser.image.ImageParser; +import org.apache.tika.parser.image.TiffParser; +import org.apache.tika.parser.jpeg.JpegParser; import org.apache.tika.sax.XHTMLContentHandler; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; -import static java.nio.charset.StandardCharsets.UTF_8; - public class ExifToolParser extends ExternalParser { private static final String EXIFTOOL_PARSER_CONFIG = "parsers/external/config/exiftool-parser.xml"; @@ -84,14 +91,33 @@ public class ExifToolParser extends ExternalParser { throws IOException, SAXException, TikaException { XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata); + MediaType mediaType = MediaType.parse(metadata.get(Metadata.CONTENT_TYPE)); TemporaryResources tmp = new TemporaryResources(); try { - parse(TikaInputStream.get(stream, tmp), xhtml, metadata, tmp); + TikaInputStream tis = TikaInputStream.get(stream, tmp); + parse(tis, xhtml, metadata, tmp); + switch (mediaType.getType()+"/"+mediaType.getSubtype()) { + case MIMETYPE_IMAGE_JPEG: + parseAdditional(new JpegParser(), tis, handler, metadata, context, mediaType); + break; + case MIMETYPE_IMAGE_TIFF: + parseAdditional(new TiffParser(), tis, handler, metadata, context, mediaType); + break; + default: + parseAdditional(new ImageParser(), tis, handler, metadata, context, mediaType); + } } finally { tmp.dispose(); } } + private void parseAdditional(Parser parser, TikaInputStream tis, ContentHandler handler, Metadata metadata, ParseContext context, + MediaType mediaType) throws IOException, SAXException, TikaException { + if (parser.getSupportedTypes(context).contains(mediaType)) { + parser.parse(tis, handler, metadata, context); + } + } + private void parse(TikaInputStream stream, XHTMLContentHandler xhtml, Metadata metadata, TemporaryResources tmp) throws IOException, SAXException, TikaException { boolean inputToStdIn = true; diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/IPTCMetadataExtractor_metadata_extract.properties b/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/IPTCMetadataExtractor_metadata_extract.properties index 95e1eb96..3c47c479 100644 --- a/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/IPTCMetadataExtractor_metadata_extract.properties +++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/IPTCMetadataExtractor_metadata_extract.properties @@ -1,308 +1,141 @@ -# -# IPTCMetadataExtracter - default mapping -# -# author: David Edwards - -# TODO Complete mappings (currently copied from other files) - -# Namespaces -namespace.prefix.cm=http://www.alfresco.org/model/content/1.0 -namespace.prefix.audio=http://www.alfresco.org/model/audio/1.0 -namespace.prefix.video=http://www.alfresco.org/model/video/1.0 -namespace.prefix.custom=MyCustomNameSpace - -# Dump of most namespaces returned by the exifTool for testing -# TODO ATS-900 -namespace.prefix.File=File -namespace.prefix.IFD0=IFD0 -namespace.prefix.ExifIFD=ExifIFD -namespace.prefix.IFD1=IFD1 -namespace.prefix.Photoshop=Photoshop -namespace.prefix.IPTC=IPTC -namespace.prefix.ICC-header=ICC-header -namespace.prefix.ICC_Profile=ICC_Profile -namespace.prefix.ICC-view=ICC-view -namespace.prefix.ICC-meas=ICC-meas -namespace.prefix.XMP-x=XMP-x -namespace.prefix.XMP-photoshop=XMP-photoshop -namespace.prefix.XMP-xmp=XMP-xmp -namespace.prefix.XMP-iptcCore=XMP-iptcCore -namespace.prefix.XMP-dc=XMP-dc -namespace.prefix.XMP-xmpRights=XMP-xmpRights -namespace.prefix.XMP-xmpMM=XMP-xmpMM -namespace.prefix.XMP-illustrator=XMP-illustrator -namespace.prefix.XMP-mediapro=XMP-mediapro -namespace.prefix.XMP-aux=XMP-aux -namespace.prefix.XMP-iptcExt=XMP-iptcExt -namespace.prefix.XMP-plus=XMP-plus -namespace.prefix.XMP-custom=XMP-custom -namespace.prefix.Adobe=Adobe -namespace.prefix.Composite=Composite - -# Core mappings -# There is overlap with the TikaAutoMetadatorExtractor. These core mappings should still be included for backwards compatability. -# TODO ATS-900 -XMP-dc\:Creator=cm:author -XMP-dc\:Title=cm:title -XMP-dc\:Description=cm:description -created=cm:created - -# Dump of most namespaces returned by the exifTool for testing -# TODO ATS-900 -ExifTool\:ExifToolVersion=custom:ExifToolVersion -File\:FileType=File:FileType -File\:FileTypeExtension=File:FileTypeExtension -File\:MIMEType=File:MIMEType -File\:ExifByteOrder=File:ExifByteOrder -File\:CurrentIPTCDigest=File:CurrentIPTCDigest -File\:ImageWidth=File:ImageWidth -File\:ImageHeight=File:ImageHeight -File\:EncodingProcess=File:EncodingProcess -File\:BitsPerSample=File:BitsPerSample -File\:ColorComponents=File:ColorComponents -File\:YCbCrSubSampling=File:YCbCrSubSampling -IFD0\:PhotometricInterpretation=IFD0:PhotometricInterpretation -IFD0\:ImageDescription=IFD0:ImageDescription -IFD0\:Orientation=IFD0:Orientation -IFD0\:SamplesPerPixel=IFD0:SamplesPerPixel -IFD0\:XResolution=IFD0:XResolution -IFD0\:YResolution=IFD0:YResolution -IFD0\:ResolutionUnit=IFD0:ResolutionUnit -IFD0\:Software=IFD0:Software -IFD0\:ModifyDate=IFD0:ModifyDate -IFD0\:Artist=IFD0:Artist -IFD0\:Copyright=IFD0:Copyright -ExifIFD\:Make=ExifIFD:Make -ExifIFD\:Model=ExifIFD:Model -ExifIFD\:ExposureTime=ExifIFD:ExposureTime -ExifIFD\:FNumber=ExifIFD:FNumber -ExifIFD\:ExposureProgram=ExifIFD:ExposureProgram -ExifIFD\:ISO=ExifIFD:ISO -ExifIFD\:ExifVersion=ExifIFD:ExifVersion -ExifIFD\:DateTimeOriginal=ExifIFD:DateTimeOriginal -ExifIFD\:CreateDate=ExifIFD:CreateDate -ExifIFD\:ComponentsConfiguration=ExifIFD:ComponentsConfiguration -ExifIFD\:ShutterSpeedValue=ExifIFD:ShutterSpeedValue -ExifIFD\:ApertureValue=ExifIFD:ApertureValue -ExifIFD\:ExposureCompensation=ExifIFD:ExposureCompensation -ExifIFD\:MaxApertureValue=ExifIFD:MaxApertureValue -ExifIFD\:MeteringMode=ExifIFD:MeteringMode -ExifIFD\:Flash=ExifIFD:Flash -ExifIFD\:FocalLength=ExifIFD:FocalLength -ExifIFD\:SubSecTime=ExifIFD:SubSecTime -ExifIFD\:SubSecTimeOriginal=ExifIFD:SubSecTimeOriginal -ExifIFD\:SubSecTimeDigitized=ExifIFD:SubSecTimeDigitized -ExifIFD\:FlashpixVersion=ExifIFD:FlashpixVersion -ExifIFD\:ColorSpace=ExifIFD:ColorSpace -ExifIFD\:ExifImageWidth=ExifIFD:ExifImageWidth -ExifIFD\:ExifImageHeight=ExifIFD:ExifImageHeight -ExifIFD\:FocalPlaneXResolution=ExifIFD:FocalPlaneXResolution -ExifIFD\:FocalPlaneYResolution=ExifIFD:FocalPlaneYResolution -ExifIFD\:FocalPlaneResolutionUnit=ExifIFD:FocalPlaneResolutionUnit -ExifIFD\:CustomRendered=ExifIFD:CustomRendered -ExifIFD\:ExposureMode=ExifIFD:ExposureMode -ExifIFD\:WhiteBalance=ExifIFD:WhiteBalance -ExifIFD\:SceneCaptureType=ExifIFD:SceneCaptureType -ExifIFD\:SerialNumber=ExifIFD:SerialNumber -ExifIFD\:LensInfo=ExifIFD:LensInfo -ExifIFD\:LensModel=ExifIFD:LensModel -ExifIFD\:LensSerialNumber=ExifIFD:LensSerialNumber -IFD1\:Compression=IFD1:Compression -IFD1\:ThumbnailOffset=IFD1:ThumbnailOffset -IFD1\:ThumbnailLength=IFD1:ThumbnailLength -IFD1\:ThumbnailImage=IFD1:ThumbnailImage -IPTC\:CodedCharacterSet=IPTC:CodedCharacterSet -IPTC\:ApplicationRecordVersion=IPTC:ApplicationRecordVersion -IPTC\:Caption-Abstract=IPTC:Caption-Abstract -IPTC\:Writer-Editor=IPTC:Writer-Editor -IPTC\:SpecialInstructions=IPTC:SpecialInstructions -IPTC\:By-line=IPTC:By-line -IPTC\:By-lineTitle=IPTC:By-lineTitle -IPTC\:ObjectName=IPTC:ObjectName -IPTC\:TimeCreated=IPTC:TimeCreated -IPTC\:Sub-location=IPTC:Sub-location -IPTC\:Province-State=IPTC:Province-State -IPTC\:Country-PrimaryLocationName=IPTC:Country-PrimaryLocationName -IPTC\:Country-PrimaryLocationCode=IPTC:Country-PrimaryLocationCode -IPTC\:OriginalTransmissionReference=IPTC:OriginalTransmissionReference -IPTC\:Keywords=IPTC:Keywords -IPTC\:CopyrightNotice=IPTC:CopyrightNotice -IPTC\:FixtureIdentifier=IPTC:FixtureIdentifier -IPTC\:EditStatus=IPTC:EditStatus -IPTC\:Contact=IPTC:Contact -Photoshop\:IPTCDigest=Photoshop:IPTCDigest -Photoshop\:DisplayedUnitsX=Photoshop:DisplayedUnitsX -Photoshop\:DisplayedUnitsY=Photoshop:DisplayedUnitsY -Photoshop\:PrintStyle=Photoshop:PrintStyle -Photoshop\:PrintPosition=Photoshop:PrintPosition -Photoshop\:PrintScale=Photoshop:PrintScale -Photoshop\:GlobalAngle=Photoshop:GlobalAngle -Photoshop\:GlobalAltitude=Photoshop:GlobalAltitude -Photoshop\:CopyrightFlag=Photoshop:CopyrightFlag -Photoshop\:URL=Photoshop:URL -Photoshop\:URL_List=Photoshop:URL_List -Photoshop\:SlicesGroupName=Photoshop:SlicesGroupName -Photoshop\:NumSlices=Photoshop:NumSlices -Photoshop\:PixelAspectRatio=Photoshop:PixelAspectRatio -Photoshop\:PhotoshopThumbnail=Photoshop:PhotoshopThumbnail -Photoshop\:HasRealMergedData=Photoshop:HasRealMergedData -Photoshop\:WriterName=Photoshop:WriterName -Photoshop\:ReaderName=Photoshop:ReaderName -Photoshop\:PhotoshopQuality=Photoshop:PhotoshopQuality -Photoshop\:PhotoshopFormat=Photoshop:PhotoshopFormat -Photoshop\:ProgressiveScans=Photoshop:ProgressiveScans -XMP-x\:XMPToolkit=XMP-x:XMPToolkit -XMP-photoshop\:LegacyIPTCDigest=XMP-photoshop:LegacyIPTCDigest -XMP-photoshop\:AuthorsPosition=XMP-photoshop:AuthorsPosition -XMP-photoshop\:Headline=XMP-photoshop:Headline -XMP-photoshop\:CaptionWriter=XMP-photoshop:CaptionWriter -XMP-photoshop\:DateCreated=XMP-photoshop:DateCreated -XMP-photoshop\:City=XMP-photoshop:City -XMP-photoshop\:State=XMP-photoshop:State -XMP-photoshop\:Country=XMP-photoshop:Country -XMP-photoshop\:TransmissionReference=XMP-photoshop:TransmissionReference -XMP-photoshop\:Instructions=XMP-photoshop:Instructions -XMP-photoshop\:Credit=XMP-photoshop:Credit -XMP-photoshop\:Source=XMP-photoshop:Source -XMP-photoshop\:Category=XMP-photoshop:Category -XMP-photoshop\:ColorMode=XMP-photoshop:ColorMode -XMP-photoshop\:ICCProfileName=XMP-photoshop:ICCProfileName -XMP-photoshop\:SupplementalCategories=XMP-photoshop:SupplementalCategories -XMP-xmp\:CreatorTool=XMP-xmp:CreatorTool -XMP-xmp\:MetadataDate=XMP-xmp:MetadataDate -XMP-iptcCore\:IntellectualGenre=XMP-iptcCore:IntellectualGenre -XMP-iptcCore\:Location=XMP-iptcCore:Location -XMP-iptcCore\:CountryCode=XMP-iptcCore:CountryCode -XMP-iptcCore\:CreatorAddress=XMP-iptcCore:CreatorAddress -XMP-iptcCore\:CreatorCity=XMP-iptcCore:CreatorCity -XMP-iptcCore\:CreatorRegion=XMP-iptcCore:CreatorRegion -XMP-iptcCore\:CreatorPostalCode=XMP-iptcCore:CreatorPostalCode -XMP-iptcCore\:CreatorCountry=XMP-iptcCore:CreatorCountry -XMP-iptcCore\:CreatorWorkTelephone=XMP-iptcCore:CreatorWorkTelephone -XMP-iptcCore\:CreatorWorkEmail=XMP-iptcCore:CreatorWorkEmail -XMP-iptcCore\:CreatorWorkURL=XMP-iptcCore:CreatorWorkURL -XMP-iptcCore\:Scene=XMP-iptcCore:Scene -XMP-iptcCore\:SubjectCode=XMP-iptcCore:SubjectCode -XMP-dc\:Format=XMP-dc:Format -XMP-dc\:Title=XMP-dc:Title -XMP-dc\:Subject=XMP-dc:Subject -XMP-dc\:Creator=XMP-dc:Creator -XMP-dc\:Rights=XMP-dc:Rights -XMP-dc\:Description=XMP-dc:Description -XMP-xmpRights\:WebStatement=XMP-xmpRights:WebStatement -XMP-xmpRights\:Marked=XMP-xmpRights:Marked -XMP-xmpRights\:UsageTerms=XMP-xmpRights:UsageTerms -XMP-xmpMM\:DocumentID=XMP-xmpMM:DocumentID -XMP-xmpMM\:InstanceID=XMP-xmpMM:InstanceID -XMP-xmpMM\:OriginalDocumentID=XMP-xmpMM:OriginalDocumentID -XMP-xmpMM\:HistoryAction=XMP-xmpMM:HistoryAction -XMP-xmpMM\:HistoryInstanceID=XMP-xmpMM:HistoryInstanceID -XMP-xmpMM\:HistoryWhen=XMP-xmpMM:HistoryWhen -XMP-xmpMM\:HistorySoftwareAgent=XMP-xmpMM:HistorySoftwareAgent -XMP-xmpMM\:HistoryChanged=XMP-xmpMM:HistoryChanged -XMP-illustrator\:StartupProfile=XMP-illustrator:StartupProfile -XMP-mediapro\:Status=XMP-mediapro:Status -XMP-mediapro\:People=XMP-mediapro:People -XMP-aux\:Lens=XMP-aux:Lens -XMP-iptcExt\:AdditionalModelInformation=XMP-iptcExt:AdditionalModelInformation -XMP-iptcExt\:MaxAvailWidth=XMP-iptcExt:MaxAvailWidth -XMP-iptcExt\:MaxAvailHeight=XMP-iptcExt:MaxAvailHeight -XMP-iptcExt\:DigitalSourceType=XMP-iptcExt:DigitalSourceType -XMP-iptcExt\:LocationCreatedSublocation=XMP-iptcExt:LocationCreatedSublocation -XMP-iptcExt\:LocationCreatedCity=XMP-iptcExt:LocationCreatedCity -XMP-iptcExt\:LocationCreatedProvinceState=XMP-iptcExt:LocationCreatedProvinceState -XMP-iptcExt\:LocationCreatedCountryName=XMP-iptcExt:LocationCreatedCountryName -XMP-iptcExt\:LocationCreatedCountryCode=XMP-iptcExt:LocationCreatedCountryCode -XMP-iptcExt\:LocationCreatedWorldRegion=XMP-iptcExt:LocationCreatedWorldRegion -XMP-iptcExt\:Event=XMP-iptcExt:Event -XMP-iptcExt\:ModelAge=XMP-iptcExt:ModelAge -XMP-iptcExt\:ArtworkDateCreated=XMP-iptcExt:ArtworkDateCreated -XMP-iptcExt\:ArtworkSource=XMP-iptcExt:ArtworkSource -XMP-iptcExt\:ArtworkSourceInventoryNo=XMP-iptcExt:ArtworkSourceInventoryNo -XMP-iptcExt\:ArtworkCopyrightNotice=XMP-iptcExt:ArtworkCopyrightNotice -XMP-iptcExt\:ArtworkTitle=XMP-iptcExt:ArtworkTitle -XMP-iptcExt\:ArtworkCreator=XMP-iptcExt:ArtworkCreator -XMP-iptcExt\:RegistryOrganisationID=XMP-iptcExt:RegistryOrganisationID -XMP-iptcExt\:RegistryItemID=XMP-iptcExt:RegistryItemID -XMP-iptcExt\:OrganisationInImageName=XMP-iptcExt:OrganisationInImageName -XMP-iptcExt\:OrganisationInImageCode=XMP-iptcExt:OrganisationInImageCode -XMP-iptcExt\:PersonInImage=XMP-iptcExt:PersonInImage -XMP-iptcExt\:LocationShownSublocation=XMP-iptcExt:LocationShownSublocation -XMP-iptcExt\:LocationShownCity=XMP-iptcExt:LocationShownCity -XMP-iptcExt\:LocationShownProvinceState=XMP-iptcExt:LocationShownProvinceState -XMP-iptcExt\:LocationShownCountryName=XMP-iptcExt:LocationShownCountryName -XMP-iptcExt\:LocationShownCountryCode=XMP-iptcExt:LocationShownCountryCode -XMP-iptcExt\:LocationShownWorldRegion=XMP-iptcExt:LocationShownWorldRegion -XMP-plus\:PropertyReleaseStatus=XMP-plus:PropertyReleaseStatus -XMP-plus\:ImageSupplierImageID=XMP-plus:ImageSupplierImageID -XMP-plus\:MinorModelAgeDisclosure=XMP-plus:MinorModelAgeDisclosure -XMP-plus\:ModelReleaseStatus=XMP-plus:ModelReleaseStatus -XMP-plus\:PLUSVersion=XMP-plus:PLUSVersion -XMP-plus\:ImageSupplierName=XMP-plus:ImageSupplierName -XMP-plus\:ImageSupplierID=XMP-plus:ImageSupplierID -XMP-plus\:ImageCreatorName=XMP-plus:ImageCreatorName -XMP-plus\:ImageCreatorID=XMP-plus:ImageCreatorID -XMP-plus\:ModelReleaseID=XMP-plus:ModelReleaseID -XMP-plus\:PropertyReleaseID=XMP-plus:PropertyReleaseID -XMP-plus\:CopyrightOwnerName=XMP-plus:CopyrightOwnerName -XMP-plus\:CopyrightOwnerID=XMP-plus:CopyrightOwnerID -XMP-plus\:LicensorName=XMP-plus:LicensorName -XMP-plus\:LicensorID=XMP-plus:LicensorID -XMP-plus\:LicensorTelephone1=XMP-plus:LicensorTelephone1 -XMP-plus\:LicensorTelephone2=XMP-plus:LicensorTelephone2 -XMP-plus\:LicensorEmail=XMP-plus:LicensorEmail -XMP-plus\:LicensorURL=XMP-plus:LicensorURL -XMP-custom\:Text=XMP-custom:Text -XMP-custom\:TextML=XMP-custom:TextML -ICC-header\:ProfileCMMType=ICC-header:ProfileCMMType -ICC-header\:ProfileVersion=ICC-header:ProfileVersion -ICC-header\:ProfileClass=ICC-header:ProfileClass -ICC-header\:ColorSpaceData=ICC-header:ColorSpaceData -ICC-header\:ProfileConnectionSpace=ICC-header:ProfileConnectionSpace -ICC-header\:ProfileDateTime=ICC-header:ProfileDateTime -ICC-header\:ProfileFileSignature=ICC-header:ProfileFileSignature -ICC-header\:PrimaryPlatform=ICC-header:PrimaryPlatform -ICC-header\:CMMFlags=ICC-header:CMMFlags -ICC-header\:DeviceManufacturer=ICC-header:DeviceManufacturer -ICC-header\:DeviceModel=ICC-header:DeviceModel -ICC-header\:DeviceAttributes=ICC-header:DeviceAttributes -ICC-header\:RenderingIntent=ICC-header:RenderingIntent -ICC-header\:ConnectionSpaceIlluminant=ICC-header:ConnectionSpaceIlluminant -ICC-header\:ProfileCreator=ICC-header:ProfileCreator -ICC-header\:ProfileID=ICC-header:ProfileID -ICC_Profile\:ProfileCopyright=ICC_Profile:ProfileCopyright -ICC_Profile\:ProfileDescription=ICC_Profile:ProfileDescription -ICC_Profile\:MediaWhitePoint=ICC_Profile:MediaWhitePoint -ICC_Profile\:MediaBlackPoint=ICC_Profile:MediaBlackPoint -ICC_Profile\:RedMatrixColumn=ICC_Profile:RedMatrixColumn -ICC_Profile\:GreenMatrixColumn=ICC_Profile:GreenMatrixColumn -ICC_Profile\:BlueMatrixColumn=ICC_Profile:BlueMatrixColumn -ICC_Profile\:DeviceMfgDesc=ICC_Profile:DeviceMfgDesc -ICC_Profile\:DeviceModelDesc=ICC_Profile:DeviceModelDesc -ICC_Profile\:ViewingCondDesc=ICC_Profile:ViewingCondDesc -ICC_Profile\:Luminance=ICC_Profile:Luminance -ICC_Profile\:Technology=ICC_Profile:Technology -ICC_Profile\:RedTRC=ICC_Profile:RedTRC -ICC_Profile\:GreenTRC=ICC_Profile:GreenTRC -ICC_Profile\:BlueTRC=ICC_Profile:BlueTRC -ICC-view\:ViewingCondIlluminant=ICC-view:ViewingCondIlluminant -ICC-view\:ViewingCondSurround=ICC-view:ViewingCondSurround -ICC-view\:ViewingCondIlluminantType=ICC-view:ViewingCondIlluminantType -ICC-meas\:MeasurementObserver=ICC-meas:MeasurementObserver -ICC-meas\:MeasurementBacking=ICC-meas:MeasurementBacking -ICC-meas\:MeasurementGeometry=ICC-meas:MeasurementGeometry -ICC-meas\:MeasurementFlare=ICC-meas:MeasurementFlare -ICC-meas\:MeasurementIlluminant=ICC-meas:MeasurementIlluminant -Adobe\:DCTEncodeVersion=Adobe:DCTEncodeVersion -Adobe\:APP14Flags0=Adobe:APP14Flags0 -Adobe\:APP14Flags1=Adobe:APP14Flags1 -Adobe\:ColorTransform=Adobe:ColorTransform -Composite\:Aperture=Composite:Aperture -Composite\:ImageSize=Composite:ImageSize -Composite\:Megapixels=Composite:Megapixels -Composite\:ShutterSpeed=Composite:ShutterSpeed -Composite\:SubSecModifyDate=Composite:SubSecModifyDate -Composite\:DateTimeCreated=Composite:DateTimeCreated -Composite\:FocalLength35efl=Composite:FocalLength35efl -Composite\:LightValue=Composite:LightValue -Composite\:LensID=Composite:LensID \ No newline at end of file +# +# IPTCMetadataExtracter - default mapping +# +# author: David Edwards + +# Namespaces +namespace.prefix.cm=http://www.alfresco.org/model/content/1.0 + +# IPTC +namespace.prefix.iptcxmp=http://www.alfresco.org/model/content/metadata/IPTCXMP/1.0 +namespace.prefix.dc=http://purl.org/dc/elements/1.1/ +namespace.prefix.Iptc4xmpCore=http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/ +namespace.prefix.Iptc4xmpExt=http://iptc.org/std/Iptc4xmpExt/2008-02-29/ +namespace.prefix.photoshop=http://ns.adobe.com/photoshop/1.0/ +namespace.prefix.plus=http://ns.useplus.org/ldf/xmp/1.0/ +namespace.prefix.xmpRights=http://ns.adobe.com/xap/1.0/rights/ +namespace.prefix.stDim=http://ns.adobe.com/xap/1.0/sType/Dimensions + +# Exif +namespace.prefix.exif=http://www.alfresco.org/model/exif/1.0 + +# Mappings from TikaAutoExtractor +author=cm:author +title=cm:title +description=cm:description +created=cm:created + +geo\:lat=cm:latitude +geo\:long=cm:longitude + +tiff\:ImageWidth=exif:pixelXDimension +tiff\:ImageLength=exif:pixelYDimension +tiff\:Make=exif:manufacturer +tiff\:Model=exif:model +tiff\:Software=exif:software +tiff\:Orientation=exif:orientation +tiff\:XResolution=exif:xResolution +tiff\:YResolution=exif:yResolution +tiff\:ResolutionUnit=exif:resolutionUnit +exif\:Flash=exif:flash +exif\:ExposureTime=exif:exposureTime +exif\:FNumber=exif:fNumber +exif\:FocalLength=exif:focalLength +exif\:IsoSpeedRatings=exif:isoSpeedRatings +exif\:DateTimeOriginal=exif:dateTimeOriginal + +# IPTC Mappings +XMP-dc\:Description=dc:description +XMP-dc\:Subject=dc:subject +XMP-dc\:Creator=dc:creator +XMP-dc\:Rights=dc:rights +XMP-dc\:Title=dc:title +XMP-iptcCore\:CountryCode=Iptc4xmpCore:CiAdrCtry +XMP-iptcCore\:CountryCode=Iptc4xmpCore:CountryCode +XMP-iptcCore\:CreatorAddress=Iptc4xmpCore:CiAdrExtadr +XMP-iptcCore\:CreatorCity=Iptc4xmpCore:CiAdrCity +XMP-iptcCore\:CreatorPostalCode=Iptc4xmpCore:CiAdrPcode +XMP-iptcCore\:CreatorRegion=Iptc4xmpCore:CiAdrRegion +XMP-iptcCore\:CreatorWorkEmail=Iptc4xmpCore:CiEmailWork +XMP-iptcCore\:CreatorWorkTelephone=Iptc4xmpCore:CiTelWork +XMP-iptcCore\:CreatorWorkURL=Iptc4xmpCore:CiUrlWork +XMP-iptcCore\:IntellectualGenre=Iptc4xmpCore:IntellectualGenre +XMP-iptcCore\:Location=Iptc4xmpCore:Location +XMP-iptcCore\:Scene=Iptc4xmpCore:Scene +XMP-iptcCore\:SubjectCode=Iptc4xmpCore:SubjectCode +XMP-photoshop\:AuthorsPosition=photoshop:AuthorsPosition +XMP-photoshop\:CaptionWriter=photoshop:CaptionWriter +XMP-photoshop\:Category=photoshop:Category +XMP-photoshop\:City=photoshop:City +XMP-photoshop\:Country=photoshop:Country +XMP-photoshop\:Credit=photoshop:Credit +XMP-photoshop\:DateCreated=photoshop:DateCreated +XMP-photoshop\:Headline=photoshop:Headline +XMP-photoshop\:Instructions=photoshop:Instructions +XMP-photoshop\:Source=photoshop:Source +XMP-photoshop\:State=photoshop:State +XMP-photoshop\:SupplementalCategories=photoshop:SupplementalCategories +XMP-photoshop\:TransmissionReference=photoshop:TransmissionReference +XMP-photoshop\:Urgency=photoshop:Urgency  +XMP-xmpRights\:UsageTerms=xmpRights:UsageTerms + +XMP-iptcExt\:AdditionalModelInformation=Iptc4xmpExt:AddlModelInfo +XMP-iptcExt\:ArtworkCopyrightNotice=Iptc4xmpExt:AOCopyrightNotice +XMP-iptcExt\:ArtworkCreator=Iptc4xmpExt:AOCreator +XMP-iptcExt\:ArtworkDateCreated=Iptc4xmpExt:AODateCreated +XMP-iptcExt\:ArtworkSource=Iptc4xmpExt:AOSource +XMP-iptcExt\:ArtworkSourceInventoryNo=Iptc4xmpExt:AOSourceInvNo +XMP-iptcExt\:ArtworkTitle=Iptc4xmpExt:AOTitle +XMP-iptcExt\:ControlledVocabularyTerm=Iptc4xmpExt:CVterm +XMP-iptcExt\:DigitalImageGUID=Iptc4xmpExt:DigImageGUID +XMP-iptcExt\:DigitalSourceFileType=Iptc4xmpExt:DigitalSourcefileType +XMP-iptcExt\:DigitalSourceType=Iptc4xmpExt:DigitalSourceType +XMP-iptcExt\:Event=Iptc4xmpExt:Event +XMP-iptcExt\:IPTCLastEdited=Iptc4xmpExt:IptcLastEdited +XMP-iptcExt\:LocationCreatedCity=Iptc4xmpExt:LocationCreatedCity +XMP-iptcExt\:LocationCreatedCountryCode=Iptc4xmpExt:LocationCreatedCountryCode +XMP-iptcExt\:LocationCreatedCountryName=Iptc4xmpExt:LocationCreatedCountryName +XMP-iptcExt\:LocationCreatedProvinceState=Iptc4xmpExt:LocationCreatedProvinceState +XMP-iptcExt\:LocationCreatedSublocation=Iptc4xmpExt:LocationCreatedSublocation +XMP-iptcExt\:LocationCreatedWorldRegion=Iptc4xmpExt:LocationCreatedWorldRegion +XMP-iptcExt\:LocationShownCity=Iptc4xmpExt:LocationShownCity +XMP-iptcExt\:LocationShownCountryCode=Iptc4xmpExt:LocationShownCountryCode +XMP-iptcExt\:LocationShownCountryName=Iptc4xmpExt:LocationShownCountryName +XMP-iptcExt\:LocationShownProvinceState=Iptc4xmpExt:LocationShownProvinceState +XMP-iptcExt\:LocationShownSublocation=Iptc4xmpExt:LocationShownSublocation +XMP-iptcExt\:LocationShownWorldRegion=Iptc4xmpExt:LocationShownWorldRegion +XMP-iptcExt\:MaxAvailHeight=Iptc4xmpExt:MaxAvailHeight +XMP-iptcExt\:MaxAvailWidth=Iptc4xmpExt:MaxAvailWidth +XMP-iptcExt\:ModelAge=Iptc4xmpExt:ModelAge +XMP-iptcExt\:OrganisationInImageCode=Iptc4xmpExt:OrganisationInImageCode +XMP-iptcExt\:OrganisationInImageName=Iptc4xmpExt:OrganisationInImageName +XMP-iptcExt\:PersonInImage=Iptc4xmpExt:PersonInImage +XMP-iptcExt\:RegistryItemID=Iptc4xmpExt:RegItemId +XMP-iptcExt\:RegistryOrganisationID=Iptc4xmpExt:RegOrgId +XMP-plus\:CopyrightOwnerID=plus:CopyrightOwnerID +XMP-plus\:CopyrightOwnerName=plus:CopyrightOwnerName +XMP-plus\:ImageCreatorID=plus:ImageCreatorID +XMP-plus\:ImageCreatorName=plus:ImageCreatorName +XMP-plus\:ImageSupplierID=plus:ImageSupplierID +XMP-plus\:ImageSupplierImageID=plus:ImageSupplierImageID +XMP-plus\:ImageSupplierName=plus:ImageSupplierName +XMP-plus\:LicensorCity=plus:LicensorCity +XMP-plus\:LicensorCountry=plus:LicensorCountry +XMP-plus\:LicensorEmail=plus:LicensorEmail +XMP-plus\:LicensorExtendedAddress=plus:LicensorExtendedAddress +XMP-plus\:LicensorID=plus:LicensorID +XMP-plus\:LicensorName=plus:LicensorName +XMP-plus\:LicensorPostalCode=plus:LicensorPostalCode +XMP-plus\:LicensorRegion=plus:LicensorRegion +XMP-plus\:LicensorStreetAddress=plus:LicensorStreetAddress +XMP-plus\:LicensorTelephone1=plus:LicensorTelephone1 +XMP-plus\:LicensorTelephone2=plus:LicensorTelephone2 +XMP-plus\:LicensorURL=plus:LicensorURL +XMP-plus\:MinorModelAgeDisclosure=plus:MinorModelAgeDisclosure +XMP-plus\:ModelReleaseID=plus:ModelReleaseID +XMP-plus\:ModelReleaseStatus=plus:ModelReleaseStatus +XMP-plus\:PLUSVersion=plus:Version +XMP-plus\:PropertyReleaseID=plus:PropertyReleaseID +XMP-plus\:PropertyReleaseStatus=plus:PropertyReleaseStatus + +stDim\:unit=stDim:unit \ No newline at end of file diff --git a/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/tika_engine_config.json b/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/tika_engine_config.json index 22fd9531..8df01075 100644 --- a/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/tika_engine_config.json +++ b/alfresco-transform-tika/alfresco-transform-tika/src/main/resources/tika_engine_config.json @@ -529,9 +529,24 @@ { "transformerName": "IPTCMetadataExtractor", "supportedSourceAndTargetList": [ - {"sourceMediaType": "image/jpeg", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, - {"sourceMediaType": "image/png", "priority": 60, "targetMediaType": "alfresco-metadata-extract"} - ], + {"sourceMediaType": "image/gif", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/jp2", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/jpeg", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/png", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/tiff", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/webp", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-adobe", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-canon", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-fuji", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-hasselblad", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-kodak", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-minolta", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-nikon", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-olympus", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-panasonic", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-pentax", "priority": 60, "targetMediaType": "alfresco-metadata-extract"}, + {"sourceMediaType": "image/x-raw-sony", "priority": 60, "targetMediaType": "alfresco-metadata-extract"} + ], "transformOptions": [ "metadataOptions" ]