Posts tagged "IOException"

If you are uploading specific types of files (Word, PPT, SWF….) to CQ5 DAM, you may notice the the files are saved to the repository with a different mime-type, for example as images.

You may also notice warnings and errors in the error.log similar to the following:

*WARN* [JobHandler: /etc/workflow/instances/2012-06-20/model_171459455015372:/content/dam/geometrixx/documents/slides.ppt/jcr:content/renditions/original] com.day.cq.dam.commons.handler.StandardImageHandler extractImageInfo: error while reading metadata from image [/content/dam/geometrixx/documents/slides.ppt]: org.apache.sanselan.ImageReadException: Can’t parse this format. at org.apache.sanselan.Sanselan.getImageParser(Sanselan.java:621) at org.apache.sanselan.Sanselan.getImageInfo(Sanselan.java:587) at org.apache.sanselan.Sanselan.getImageInfo(Sanselan.java:479) at com.day.cq.dam.commons.handler.StandardImageHandler.extractImageInfo(StandardImageHandler.java:207) at com.day.cq.dam.commons.handler.StandardImageHandler.extractMetadata(StandardImageHandler.java:244) at com.day.cq.dam.commons.handler.StandardImageHandler.extractMetadata(StandardImageHandler.java:145) at com.day.cq.dam.core.process.ExtractMetadataProcess.execute(ExtractMetadataProcess.java:65)…*ERROR* [JobHandler: /etc/workflow/instances/2012-06-20/model_171459455015372:/content/dam/geometrixx/documents/slides.ppt/jcr:content/renditions/original] com.day.cq.dam.core.impl.cache.CQBufferedImageCache Error while loading image /content/dam/geometrixx/documents/slides.ppt/jcr:content/renditions/original: javax.imageio.IIOException: No decoder available to load the image*ERROR* [JobHandler: /etc/workflow/instances/2012-06-20/model_171459455015372:/content/dam/geometrixx/documents/slides.ppt/jcr:content/renditions/original] com.day.cq.workflow.impl.job.JobHandler Process execution resulted in an error: java.io.IOException: No decoder available to load the image com.day.cq.workflow.WorkflowException: java.io.IOException: No decoder available to load the image at com.day.cq.dam.core.process.CreateThumbnailProcess.execute(CreateThumbnailProcess.java:145) at com.day.cq.workflow.impl.job.HandlerBase.executeProcess(HandlerBase.java:172) at com.day.cq.workflow.impl.job.JobHandler.process(JobHandler.java:122) at org.apache.sling.event.jobs.JobUtil$1.run(JobUtil.java:272) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)Caused by: java.io.IOException: No decoder available to load the image at com.day.cq.dam.core.process.CreateThumbnailProcess.execute(CreateThumbnailProcess.java:126) … 6 more

Reason

This is a product bug in CQ5.4 and earlier versions, as it does not correctly handle the dc:format metadata property in particular files. When these documents contain images with dc:format=image/jpeg, CQ assumes that this property applies to the whole document. Therefore the file gets uploaded into /content/dam with a node ‘metadata’ which has property dc:format=image/jpeg.

Solution

The issue has been fixed in CQ5.5 as we have re-engineered the component responsible for handling the mime-type detection for files uploaded to DAM. When you update to CQ5.5 you will have the final solution to this issue.

As a workaround for earlier versions you should follow these steps:
1. create a file reset-mimetype.ecma under etc/workflow/scripts
2. use the script in the attached file: reset-mimetype.ecma
3. save it
4. edit the workflow model (“DAM Update Asset” workflow)
5. add a “Process step” after the “Metadata extraction” step
6. edit the “Process step”
7. select the etc/workflow/scripts/reset-mimetype.ecma script
8. select the “Handler Advance” checkbox
9. save the workflow
Now the file formats should be correctly identified when uploading to DAM.