You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2022/10/19 17:54:30 UTC

[tika] branch main updated: TIKA-3889 -- include counts of 3d objects

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 f6264c704 TIKA-3889 -- include counts of 3d objects
f6264c704 is described below

commit f6264c7044148f98dd733b9194a92918bb36bea7
Author: tballison <ta...@apache.org>
AuthorDate: Wed Oct 19 13:54:17 2022 -0400

    TIKA-3889 -- include counts of 3d objects
---
 tika-core/src/main/java/org/apache/tika/metadata/PDF.java             | 4 ++++
 .../src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java   | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/tika-core/src/main/java/org/apache/tika/metadata/PDF.java b/tika-core/src/main/java/org/apache/tika/metadata/PDF.java
index e683f321d..05dbdb869 100644
--- a/tika-core/src/main/java/org/apache/tika/metadata/PDF.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/PDF.java
@@ -170,4 +170,8 @@ public interface PDF {
 
     Property ANNOTATION_SUBTYPES = Property.internalTextBag(PDF_PREFIX + "annotationSubtypes");
 
+    /**
+     * Number of 3D annotations a PDF contains.  This makes {@link PDF#HAS_3D} redundant.
+     */
+    Property NUM_3D_ANNOTATIONS = Property.internalInteger(PDF_PREFIX + "num3DAnnotations");
 }
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 58daefb72..c9cfc94c7 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
@@ -185,6 +185,8 @@ class AbstractPDF2XHTML extends PDFTextStripper {
     //contains at least one broken font
     boolean containsDamagedFont = false;
 
+    int num3DAnnotations = 0;
+
     AbstractPDF2XHTML(PDDocument pdDocument, ContentHandler handler, ParseContext context,
                       Metadata metadata, PDFParserConfig config) throws IOException {
         this.pdDocument = pdDocument;
@@ -711,6 +713,7 @@ class AbstractPDF2XHTML extends PDFTextStripper {
                         //To make this stricter, we could get the 3DD stream object and see if the
                         //subtype is U3D or PRC or model/ (prefix for model mime type)
                         metadata.set(PDF.HAS_3D, true);
+                        num3DAnnotations++;
                     }
                     for (COSDictionary fileSpec : findFileSpecs(annotation.getCOSObject())) {
                         PDComplexFileSpecification cfs = new PDComplexFileSpecification(fileSpec);
@@ -1012,6 +1015,7 @@ class AbstractPDF2XHTML extends PDFTextStripper {
         }
         metadata.set(PDF.CONTAINS_DAMAGED_FONT, containsDamagedFont);
         metadata.set(PDF.CONTAINS_NON_EMBEDDED_FONT, containsNonEmbeddedFont);
+        metadata.set(PDF.NUM_3D_ANNOTATIONS, num3DAnnotations);
     }
 
     void extractBookmarkText() throws SAXException, IOException, TikaException {