Skip to content

Commit e563ebe

Browse files
committed
Use ImageTypeDetector's stream overload
DEVSIX-5172
1 parent 7b61601 commit e563ebe

File tree

2 files changed

+29
-32
lines changed

2 files changed

+29
-32
lines changed

pdfocr-api/src/main/java/com/itextpdf/pdfocr/OcrPdfCreator.java

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -373,36 +373,30 @@ private void addDataToPdfDocument(
373373
final boolean createPdfA3u) throws OcrException {
374374
for (Map.Entry<File, Map<Integer, List<TextInfo>>> entry
375375
: imagesTextData.entrySet()) {
376-
try {
377-
File inputImage = entry.getKey();
378-
List<ImageData> imageDataList =
379-
PdfCreatorUtil.getImageData(inputImage,
380-
ocrPdfCreatorProperties.getImageRotationHandler());
381-
LOGGER.info(MessageFormatUtil.format(
382-
PdfOcrLogMessageConstant.NUMBER_OF_PAGES_IN_IMAGE,
383-
inputImage.toString(), imageDataList.size()));
384-
385-
Map<Integer, List<TextInfo>> imageTextData = entry.getValue();
386-
if (imageTextData.keySet().size() > 0) {
387-
for (int page = 0; page < imageDataList.size(); ++page) {
388-
ImageData imageData = imageDataList.get(page);
389-
final Rectangle imageSize =
390-
PdfCreatorUtil.calculateImageSize(
391-
imageData,
392-
ocrPdfCreatorProperties.getScaleMode(),
393-
ocrPdfCreatorProperties.getPageSize());
394-
395-
if (imageTextData.containsKey(page + 1)) {
396-
addToCanvas(pdfDocument, imageSize,
397-
imageTextData.get(page + 1),
398-
imageData, createPdfA3u);
399-
}
376+
File inputImage = entry.getKey();
377+
List<ImageData> imageDataList =
378+
PdfCreatorUtil.getImageData(inputImage,
379+
ocrPdfCreatorProperties.getImageRotationHandler());
380+
LOGGER.info(MessageFormatUtil.format(
381+
PdfOcrLogMessageConstant.NUMBER_OF_PAGES_IN_IMAGE,
382+
inputImage.toString(), imageDataList.size()));
383+
384+
Map<Integer, List<TextInfo>> imageTextData = entry.getValue();
385+
if (imageTextData.keySet().size() > 0) {
386+
for (int page = 0; page < imageDataList.size(); ++page) {
387+
ImageData imageData = imageDataList.get(page);
388+
final Rectangle imageSize =
389+
PdfCreatorUtil.calculateImageSize(
390+
imageData,
391+
ocrPdfCreatorProperties.getScaleMode(),
392+
ocrPdfCreatorProperties.getPageSize());
393+
394+
if (imageTextData.containsKey(page + 1)) {
395+
addToCanvas(pdfDocument, imageSize,
396+
imageTextData.get(page + 1),
397+
imageData, createPdfA3u);
400398
}
401399
}
402-
} catch (IOException e) {
403-
LOGGER.error(MessageFormatUtil.format(
404-
PdfOcrLogMessageConstant.CANNOT_ADD_DATA_TO_PDF_DOCUMENT,
405-
e.getMessage()));
406400
}
407401
}
408402
}

pdfocr-api/src/main/java/com/itextpdf/pdfocr/PdfCreatorUtil.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ This file is part of the iText (R) project.
4141
import com.itextpdf.layout.renderer.ParagraphRenderer;
4242

4343
import java.io.File;
44+
import java.io.FileInputStream;
45+
import java.io.FileNotFoundException;
4446
import java.io.IOException;
47+
import java.io.InputStream;
4548
import java.nio.file.Files;
4649
import java.util.ArrayList;
4750
import java.util.List;
@@ -172,11 +175,11 @@ static com.itextpdf.kernel.geom.Point calculateImageCoordinates(
172175
* @throws IOException if error occurred during reading a file
173176
*/
174177
static List<ImageData> getImageData(final File inputImage, IImageRotationHandler imageRotationHandler)
175-
throws OcrException, IOException {
178+
throws OcrException {
176179
List<ImageData> images = new ArrayList<ImageData>();
177180

178-
try {
179-
ImageType imageType = ImageTypeDetector.detectImageType(UrlUtil.toURL(inputImage.getAbsolutePath()));
181+
try (InputStream imageStream = new FileInputStream(inputImage)) {
182+
ImageType imageType = ImageTypeDetector.detectImageType(imageStream);
180183
if (ImageType.TIFF == imageType) {
181184
int tiffPages = getNumberOfPageTiff(inputImage);
182185

@@ -198,7 +201,7 @@ static List<ImageData> getImageData(final File inputImage, IImageRotationHandler
198201
}
199202
images.add(imageData);
200203
}
201-
} catch (com.itextpdf.io.IOException e) {
204+
} catch (IOException | com.itextpdf.io.IOException e) {
202205
LOGGER.error(MessageFormatUtil.format(
203206
PdfOcrLogMessageConstant.CANNOT_READ_INPUT_IMAGE,
204207
e.getMessage()));

0 commit comments

Comments
 (0)