-
Bug
-
Resolution: Incomplete
-
P3
-
None
-
None
-
x86_64
-
windows_10
ADDITIONAL SYSTEM INFORMATION :
Tomcat 8/8.5/9 on Windows 10 with Java 1.8.0_221.
A DESCRIPTION OF THE PROBLEM :
We get the javax.imageio.IIOException when trying to call javax.imageio.ImageReader.read() function on the pages 6-10 of the attached multipage tiff.
Full Exception message - javax.imageio.IIOException: 16-bit samples are not supported for Horizontal differencing Predictor.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
The following code snippet would reproduce the issue:
FileImageInputStream fis = new FileImageInputStream(<Source path to the attached tiff document>);
final ImageReader tiffReader = ImageIO.getImageReadersByFormatName("tiff").next();
tiffReader.setInput(fis);
BufferedImage bi = tiffReader.read(<desired page no of the tiff document>);
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
A valid Buffered Image as a result of tiffReader.read(<desired page no of the tiff document>);
ACTUAL -
we get the following Trace:
javax.imageio.IIOException: 16-bit samples are not supported for Horizontal differencing Predictor
at com.sun.media.imageioimpl.plugins.tiff.TIFFLZWDecompressor.decodeRaw(TIFFLZWDecompressor.java:108)
at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decodeRaw(TIFFDecompressor.java:2024)
at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decode(TIFFDecompressor.java:2597)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.decodeTile(TIFFImageReader.java:1153)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TIFFImageReader.java:1454)
at javax.imageio.ImageReader.read(Unknown Source)
at com.perceptivesoftware.web.docviewer.server.docmodel.imageutils.ImageUtil.getTiffPageAsJpg(ImageUtil.java:285)
at com.perceptivesoftware.web.docviewer.server.docmodel.document.TiffDocument.getBufferedImageFromRawFile(TiffDocument.java:65)
at com.perceptivesoftware.web.docviewer.server.docmodel.document.Document.getUncachedAntiAliasedBufferedImageFromRawFile(Document.java:125)
at com.perceptivesoftware.web.docviewer.server.view.DocumentViewBusinessLogic.getDocumentDimensions(DocumentViewBusinessLogic.java:59)
at com.perceptivesoftware.web.docviewer.server.view.DocumentViewBusinessLogic.getDocumentDimensions(DocumentViewBusinessLogic.java:83)
at com.perceptivesoftware.web.docviewer.server.rpc.DocumentViewerServiceImpl.getDocumentDimensions(DocumentViewerServiceImpl.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:545)
at org.spring4gwt.server.SpringGwtRemoteServiceServlet.processCall(SpringGwtRemoteServiceServlet.java:37)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.perceptivesoftware.security.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.perceptivesoftware.security.P3PFilter.doFilter(P3PFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
---------- BEGIN SOURCE ----------
Calling the below function with requestedPage parameter as 6-10 would replicate the issue:
public static BufferedImage testFunction(int requestedPage, File docPath)
{
FileImageInputStream ss = null;
BufferedImage ri = null;
try
{
ss = new FileImageInputStream(docPath);
final ImageReader tiffReader = ImageIO.getImageReadersByFormatName("tiff").next();
tiffReader.setInput(ss);
ri = tiffReader.read(requestedPage - 1);
}
catch (final IOException ioe)
{
System.out.println("IO Exception occurred while extracting TIF page", ioe);
}
finally
{
if (ss != null)
{
try
{
ss.close();
}
catch (final IOException ioe)
{
System.out.println("IO Exception while closing seekable stream after extracting TIF page");
}
}
}
return ri;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
We could not find a workaround to date.
FREQUENCY : always
Tomcat 8/8.5/9 on Windows 10 with Java 1.8.0_221.
A DESCRIPTION OF THE PROBLEM :
We get the javax.imageio.IIOException when trying to call javax.imageio.ImageReader.read() function on the pages 6-10 of the attached multipage tiff.
Full Exception message - javax.imageio.IIOException: 16-bit samples are not supported for Horizontal differencing Predictor.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
The following code snippet would reproduce the issue:
FileImageInputStream fis = new FileImageInputStream(<Source path to the attached tiff document>);
final ImageReader tiffReader = ImageIO.getImageReadersByFormatName("tiff").next();
tiffReader.setInput(fis);
BufferedImage bi = tiffReader.read(<desired page no of the tiff document>);
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
A valid Buffered Image as a result of tiffReader.read(<desired page no of the tiff document>);
ACTUAL -
we get the following Trace:
javax.imageio.IIOException: 16-bit samples are not supported for Horizontal differencing Predictor
at com.sun.media.imageioimpl.plugins.tiff.TIFFLZWDecompressor.decodeRaw(TIFFLZWDecompressor.java:108)
at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decodeRaw(TIFFDecompressor.java:2024)
at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decode(TIFFDecompressor.java:2597)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.decodeTile(TIFFImageReader.java:1153)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TIFFImageReader.java:1454)
at javax.imageio.ImageReader.read(Unknown Source)
at com.perceptivesoftware.web.docviewer.server.docmodel.imageutils.ImageUtil.getTiffPageAsJpg(ImageUtil.java:285)
at com.perceptivesoftware.web.docviewer.server.docmodel.document.TiffDocument.getBufferedImageFromRawFile(TiffDocument.java:65)
at com.perceptivesoftware.web.docviewer.server.docmodel.document.Document.getUncachedAntiAliasedBufferedImageFromRawFile(Document.java:125)
at com.perceptivesoftware.web.docviewer.server.view.DocumentViewBusinessLogic.getDocumentDimensions(DocumentViewBusinessLogic.java:59)
at com.perceptivesoftware.web.docviewer.server.view.DocumentViewBusinessLogic.getDocumentDimensions(DocumentViewBusinessLogic.java:83)
at com.perceptivesoftware.web.docviewer.server.rpc.DocumentViewerServiceImpl.getDocumentDimensions(DocumentViewerServiceImpl.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:545)
at org.spring4gwt.server.SpringGwtRemoteServiceServlet.processCall(SpringGwtRemoteServiceServlet.java:37)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.perceptivesoftware.security.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.perceptivesoftware.security.P3PFilter.doFilter(P3PFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
---------- BEGIN SOURCE ----------
Calling the below function with requestedPage parameter as 6-10 would replicate the issue:
public static BufferedImage testFunction(int requestedPage, File docPath)
{
FileImageInputStream ss = null;
BufferedImage ri = null;
try
{
ss = new FileImageInputStream(docPath);
final ImageReader tiffReader = ImageIO.getImageReadersByFormatName("tiff").next();
tiffReader.setInput(ss);
ri = tiffReader.read(requestedPage - 1);
}
catch (final IOException ioe)
{
System.out.println("IO Exception occurred while extracting TIF page", ioe);
}
finally
{
if (ss != null)
{
try
{
ss.close();
}
catch (final IOException ioe)
{
System.out.println("IO Exception while closing seekable stream after extracting TIF page");
}
}
}
return ri;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
We could not find a workaround to date.
FREQUENCY : always