This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new a53af594a TIKA-4287 -- enable serialization by wrapping the PDFBox 
ImageType object (#1866)
a53af594a is described below

commit a53af594a7f6e7ab256dee91e1a39f1d0d8dedfc
Author: Tim Allison <[email protected]>
AuthorDate: Tue Jul 30 11:09:05 2024 -0400

    TIKA-4287 -- enable serialization by wrapping the PDFBox ImageType object 
(#1866)
---
 .../apache/tika/parser/pdf/AbstractPDF2XHTML.java  |  2 +-
 .../java/org/apache/tika/parser/pdf/PDFParser.java |  2 +-
 .../apache/tika/parser/pdf/PDFParserConfig.java    | 79 ++++++----------------
 .../tika/renderer/pdf/pdfbox/PDFBoxRenderer.java   |  2 +-
 .../org/apache/tika/parser/pdf/PDFParserTest.java  |  3 +-
 5 files changed, 23 insertions(+), 65 deletions(-)

diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
index 4d0a08226..4bc31c3d9 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java
@@ -673,7 +673,7 @@ class AbstractPDF2XHTML extends PDFTextStripper {
 
         try {
             BufferedImage image =
-                    renderer.renderImageWithDPI(pageIndex, dpi, 
config.getOcrImageType());
+                    renderer.renderImageWithDPI(pageIndex, dpi, 
config.getOcrImageType().getImageType());
 
             //TODO -- get suffix based on OcrImageType
             tmpFile = tmpResources.createTempFile();
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
index f21b65d4e..bfd54d4ef 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
@@ -1099,7 +1099,7 @@ public class PDFParser implements Parser, 
RenderingParser, Initializable {
         //set a default renderer if nothing was defined
         PDFBoxRenderer pdfBoxRenderer = new PDFBoxRenderer();
         pdfBoxRenderer.setDPI(config.getOcrDPI());
-        pdfBoxRenderer.setImageType(config.getOcrImageType());
+        pdfBoxRenderer.setImageType(config.getOcrImageType().getImageType());
         pdfBoxRenderer.setImageFormatName(config.getOcrImageFormatName());
         config.setRenderer(pdfBoxRenderer);
     }
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
index 0ee4b274b..991707911 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParserConfig.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.HashSet;
 import java.util.Locale;
-import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -45,6 +44,18 @@ import org.apache.tika.renderer.Renderer;
  */
 public class PDFParserConfig implements Serializable {
 
+    public enum TikaImageType {
+        RGB(ImageType.RGB),
+        GRAY(ImageType.GRAY);
+
+        private ImageType imageType;
+        TikaImageType(ImageType imageType) {
+            this.imageType = imageType;
+        }
+        public ImageType getImageType() {
+            return imageType;
+        }
+    }
 
     private static final long serialVersionUID = 6492570218190936986L;
     private final Set<String> userConfigured = new HashSet<>();
@@ -114,7 +125,7 @@ public class PDFParserConfig implements Serializable {
     private OCR_RENDERING_STRATEGY ocrRenderingStrategy = 
OCR_RENDERING_STRATEGY.ALL;
 
     private int ocrDPI = 300;
-    private ImageType ocrImageType = ImageType.GRAY;
+    private TikaImageType ocrImageType = TikaImageType.GRAY;
     private String ocrImageFormatName = "png";
     private float ocrImageQuality = 1.0f;
 
@@ -623,9 +634,9 @@ public class PDFParserConfig implements Serializable {
      * Image type used to render the page image for OCR.
      *
      * @return image type
-     * @see #setOcrImageType(ImageType)
+     * @see #setOcrImageType(TikaImageType)
      */
-    public ImageType getOcrImageType() {
+    public TikaImageType getOcrImageType() {
         return ocrImageType;
     }
 
@@ -634,7 +645,7 @@ public class PDFParserConfig implements Serializable {
      *
      * @param ocrImageType
      */
-    public void setOcrImageType(ImageType ocrImageType) {
+    public void setOcrImageType(TikaImageType ocrImageType) {
         this.ocrImageType = ocrImageType;
         userConfigured.add("ocrImageType");
     }
@@ -642,7 +653,7 @@ public class PDFParserConfig implements Serializable {
     /**
      * Image type used to render the page image for OCR.
      *
-     * @see #setOcrImageType(ImageType)
+     * @see #setOcrImageType(TikaImageType)
      */
     public void setOcrImageType(String ocrImageTypeString) {
         setOcrImageType(parseImageType(ocrImageTypeString));
@@ -749,8 +760,8 @@ public class PDFParserConfig implements Serializable {
         userConfigured.add("setKCMS");
     }
 
-    private ImageType parseImageType(String ocrImageType) {
-        for (ImageType t : ImageType.values()) {
+    private TikaImageType parseImageType(String ocrImageType) {
+        for (TikaImageType t : TikaImageType.values()) {
             if (ocrImageType.equalsIgnoreCase(t.toString())) {
                 return t;
             }
@@ -806,58 +817,6 @@ public class PDFParserConfig implements Serializable {
         return updated;
     }
 
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        PDFParserConfig config = (PDFParserConfig) o;
-        return enableAutoSpace == config.enableAutoSpace &&
-                suppressDuplicateOverlappingText == 
config.suppressDuplicateOverlappingText &&
-                extractAnnotationText == config.extractAnnotationText &&
-                sortByPosition == config.sortByPosition &&
-                extractAcroFormContent == config.extractAcroFormContent &&
-                extractBookmarksText == config.extractBookmarksText &&
-                extractInlineImages == config.extractInlineImages &&
-                extractInlineImageMetadataOnly == 
config.extractInlineImageMetadataOnly &&
-                extractUniqueInlineImagesOnly == 
config.extractUniqueInlineImagesOnly &&
-                extractMarkedContent == config.extractMarkedContent &&
-                Float.compare(config.dropThreshold, dropThreshold) == 0 &&
-                ifXFAExtractOnlyXFA == config.ifXFAExtractOnlyXFA && ocrDPI == 
config.ocrDPI &&
-                Float.compare(config.ocrImageQuality, ocrImageQuality) == 0 &&
-                catchIntermediateIOExceptions == 
config.catchIntermediateIOExceptions &&
-                extractActions == config.extractActions &&
-                extractFontNames == config.extractFontNames &&
-                maxMainMemoryBytes == config.maxMainMemoryBytes && setKCMS == 
config.setKCMS &&
-                detectAngles == config.detectAngles &&
-                Objects.equals(userConfigured, config.userConfigured) &&
-                Objects.equals(averageCharTolerance, 
config.averageCharTolerance) &&
-                Objects.equals(spacingTolerance, config.spacingTolerance) &&
-                ocrStrategy == config.ocrStrategy &&
-                Objects.equals(ocrStrategyAuto, config.ocrStrategyAuto) &&
-                ocrRenderingStrategy == config.ocrRenderingStrategy &&
-                ocrImageType == config.ocrImageType &&
-                Objects.equals(ocrImageFormatName, config.ocrImageFormatName) 
&&
-                imageStrategy == config.imageStrategy &&
-                Objects.equals(accessChecker, config.accessChecker) &&
-                Objects.equals(renderer, config.renderer);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(userConfigured, enableAutoSpace, 
suppressDuplicateOverlappingText,
-                extractAnnotationText, sortByPosition, extractAcroFormContent, 
extractBookmarksText,
-                extractInlineImages, extractInlineImageMetadataOnly, 
extractUniqueInlineImagesOnly,
-                extractMarkedContent, averageCharTolerance, spacingTolerance, 
dropThreshold,
-                ifXFAExtractOnlyXFA, ocrStrategy, ocrStrategyAuto, 
ocrRenderingStrategy, ocrDPI,
-                ocrImageType, ocrImageFormatName, ocrImageQuality, 
imageStrategy, accessChecker,
-                catchIntermediateIOExceptions, extractActions, 
extractFontNames, maxMainMemoryBytes,
-                setKCMS, detectAngles, renderer);
-    }
-
     public void setRenderer(Renderer renderer) {
         this.renderer = renderer;
         userConfigured.add("renderer");
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
index b3ce7d9d7..72392bc2d 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java
@@ -226,7 +226,7 @@ public class PDFBoxRenderer implements PDDocumentRenderer, 
Initializable {
         if (pdfParserConfig == null) {
             return defaultImageType;
         }
-        return pdfParserConfig.getOcrImageType();
+        return pdfParserConfig.getOcrImageType().getImageType();
     }
 
     protected String getImageFormatName(ParseContext parseContext) {
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
index a3ed89497..e3cfe5415 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
@@ -38,7 +38,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.pdfbox.rendering.ImageType;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Disabled;
@@ -1129,7 +1128,7 @@ public class PDFParserTest extends TikaTest {
                     pdfParser.getClass().getName());
             assertEquals(PDFParserConfig.OCR_STRATEGY.OCR_ONLY,
                     ((PDFParser) 
pdfParser).getPDFParserConfig().getOcrStrategy());
-            assertEquals(ImageType.RGB,
+            assertEquals(PDFParserConfig.TikaImageType.GRAY.RGB,
                     ((PDFParser) 
pdfParser).getPDFParserConfig().getOcrImageType());
         }
     }

Reply via email to