diff --git a/pdfocr-api/src/main/java/com/itextpdf/pdfocr/OcrPdfCreator.java b/pdfocr-api/src/main/java/com/itextpdf/pdfocr/OcrPdfCreator.java index 1327ef4..938baf2 100644 --- a/pdfocr-api/src/main/java/com/itextpdf/pdfocr/OcrPdfCreator.java +++ b/pdfocr-api/src/main/java/com/itextpdf/pdfocr/OcrPdfCreator.java @@ -373,36 +373,30 @@ private void addDataToPdfDocument( final boolean createPdfA3u) throws OcrException { for (Map.Entry>> entry : imagesTextData.entrySet()) { - try { - File inputImage = entry.getKey(); - List imageDataList = - PdfCreatorUtil.getImageData(inputImage, - ocrPdfCreatorProperties.getImageRotationHandler()); - LOGGER.info(MessageFormatUtil.format( - PdfOcrLogMessageConstant.NUMBER_OF_PAGES_IN_IMAGE, - inputImage.toString(), imageDataList.size())); - - Map> imageTextData = entry.getValue(); - if (imageTextData.keySet().size() > 0) { - for (int page = 0; page < imageDataList.size(); ++page) { - ImageData imageData = imageDataList.get(page); - final Rectangle imageSize = - PdfCreatorUtil.calculateImageSize( - imageData, - ocrPdfCreatorProperties.getScaleMode(), - ocrPdfCreatorProperties.getPageSize()); - - if (imageTextData.containsKey(page + 1)) { - addToCanvas(pdfDocument, imageSize, - imageTextData.get(page + 1), - imageData, createPdfA3u); - } + File inputImage = entry.getKey(); + List imageDataList = + PdfCreatorUtil.getImageData(inputImage, + ocrPdfCreatorProperties.getImageRotationHandler()); + LOGGER.info(MessageFormatUtil.format( + PdfOcrLogMessageConstant.NUMBER_OF_PAGES_IN_IMAGE, + inputImage.toString(), imageDataList.size())); + + Map> imageTextData = entry.getValue(); + if (imageTextData.keySet().size() > 0) { + for (int page = 0; page < imageDataList.size(); ++page) { + ImageData imageData = imageDataList.get(page); + final Rectangle imageSize = + PdfCreatorUtil.calculateImageSize( + imageData, + ocrPdfCreatorProperties.getScaleMode(), + ocrPdfCreatorProperties.getPageSize()); + + if (imageTextData.containsKey(page + 1)) { + addToCanvas(pdfDocument, imageSize, + imageTextData.get(page + 1), + imageData, createPdfA3u); } } - } catch (IOException e) { - LOGGER.error(MessageFormatUtil.format( - PdfOcrLogMessageConstant.CANNOT_ADD_DATA_TO_PDF_DOCUMENT, - e.getMessage())); } } } diff --git a/pdfocr-api/src/main/java/com/itextpdf/pdfocr/PdfCreatorUtil.java b/pdfocr-api/src/main/java/com/itextpdf/pdfocr/PdfCreatorUtil.java index ab17ffa..4c84347 100644 --- a/pdfocr-api/src/main/java/com/itextpdf/pdfocr/PdfCreatorUtil.java +++ b/pdfocr-api/src/main/java/com/itextpdf/pdfocr/PdfCreatorUtil.java @@ -41,7 +41,10 @@ This file is part of the iText (R) project. import com.itextpdf.layout.renderer.ParagraphRenderer; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; @@ -172,11 +175,11 @@ static com.itextpdf.kernel.geom.Point calculateImageCoordinates( * @throws IOException if error occurred during reading a file */ static List getImageData(final File inputImage, IImageRotationHandler imageRotationHandler) - throws OcrException, IOException { + throws OcrException { List images = new ArrayList(); - try { - ImageType imageType = ImageTypeDetector.detectImageType(UrlUtil.toURL(inputImage.getAbsolutePath())); + try (InputStream imageStream = new FileInputStream(inputImage)) { + ImageType imageType = ImageTypeDetector.detectImageType(imageStream); if (ImageType.TIFF == imageType) { int tiffPages = getNumberOfPageTiff(inputImage); @@ -198,7 +201,7 @@ static List getImageData(final File inputImage, IImageRotationHandler } images.add(imageData); } - } catch (com.itextpdf.io.IOException e) { + } catch (IOException | com.itextpdf.io.IOException e) { LOGGER.error(MessageFormatUtil.format( PdfOcrLogMessageConstant.CANNOT_READ_INPUT_IMAGE, e.getMessage()));