[ 
https://issues.apache.org/jira/browse/PDFBOX-6060?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18018346#comment-18018346
 ] 

Tilman Hausherr commented on PDFBOX-6060:
-----------------------------------------

The new code would require structural changes in DCTFilter.

What I am thinking about, and I have not thought this fully, is some static 
method in Filter to force a specific reader for a specific format when 
findRasterReader is called. Maybe replace "if (reader.canReadRaster())" with a 
user provided call that will check for "canReadRaster()" and for a specific 
class.

> Allow use of 12 monkeys in DCTFilter
> ------------------------------------
>
>                 Key: PDFBOX-6060
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-6060
>             Project: PDFBox
>          Issue Type: Bug
>            Reporter: Simon Steiner
>            Priority: Major
>
> DCTFilter calls findRasterReader and returns the first reader, on error it 
> should try the 2nd reader as JDK cant read all jpegs
> {code:java}
>     protected void findImageReader(String formatName, String errorCause, 
> InputStream encoded, ImageReaderRunner runner) throws IOException
>     {
>         Iterator<ImageReader> readers = 
> ImageIO.getImageReadersByFormatName(formatName);
>         ImageInputStream iis = ImageIO.createImageInputStream(encoded);
>         iis.mark();
>         Exception exception = null;
>         String error = "Cannot read " + formatName + " image: " + errorCause;
>         try {
>             while (readers.hasNext()) {
>                 ImageReader reader = readers.next();
>                 if (reader.canReadRaster()) {
>                     try {
>                         reader.setInput(iis);
>                         runner.run(reader);
>                         return;
>                     } catch (Exception e) {
>                         exception = e;
>                         error = e.getMessage();
>                         iis.reset();
>                     } finally {
>                         reader.dispose();
>                     }
>                 }
>             }
>         } finally {
>             iis.close();
>         }
>         throw new RuntimeException(error, exception);
>     }
>     interface ImageReaderRunner {
>         void run(ImageReader reader) throws IOException;
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to