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 2023/07/24 13:39:15 UTC
[tika] branch main updated: TIKA-4101 -- fix regression in identifying ms equation OLE bundles. Unrelated (sorry), do not add period to attachment if the extension is empty. (#1251)
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 1d2ba2c98 TIKA-4101 -- fix regression in identifying ms equation OLE bundles. Unrelated (sorry), do not add period to attachment if the extension is empty. (#1251)
1d2ba2c98 is described below
commit 1d2ba2c985de666ebc7e5bcc2de96ac9b96aa0ae
Author: Tim Allison <ta...@apache.org>
AuthorDate: Mon Jul 24 09:39:08 2023 -0400
TIKA-4101 -- fix regression in identifying ms equation OLE bundles. Unrelated (sorry), do not add period to attachment if the extension is empty. (#1251)
---
.../tika/detect/microsoft/POIFSContainerDetector.java | 4 ++--
.../tika/parser/microsoft/AbstractPOIFSExtractor.java | 16 ++++++++++++++--
.../parser/microsoft/ooxml/AbstractOOXMLExtractor.java | 16 ++++++++++++++++
3 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/POIFSContainerDetector.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/POIFSContainerDetector.java
index 1cc47ba13..23648c884 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/POIFSContainerDetector.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/POIFSContainerDetector.java
@@ -341,6 +341,8 @@ public class POIFSContainerDetector implements Detector {
} else if (ucNames.contains(CONTENTS) && ucNames.contains(SPELLING)) {
// Newer Works files
return WPS;
+ } else if (ucNames.contains(EQUATION_NATIVE)) {
+ return MS_EQUATION;
} else if (ucNames.contains(CONTENTS) && ucNames.contains(OBJ_INFO)) {
return COMP_OBJ;
} else if (ucNames.contains(CONTENTS) && ucNames.contains(COMP_OBJ_STRING)) {
@@ -372,8 +374,6 @@ public class POIFSContainerDetector implements Detector {
return MPP;
}
}
- } else if (ucNames.contains(EQUATION_NATIVE)) {
- return MS_EQUATION;
} else if (ucNames.contains(LAYER)) {
//in one test file, also saw LayerSmallImage and LayerLargeImage
//maybe add those if we get false positives?
diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
index 7a14733e8..fa464b902 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
@@ -45,6 +45,7 @@ import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.PasswordProvider;
import org.apache.tika.parser.microsoft.OfficeParser.POIFSDocumentType;
import org.apache.tika.sax.XHTMLContentHandler;
+import org.apache.tika.utils.StringUtils;
abstract class AbstractPOIFSExtractor {
protected final Metadata parentMetadata;//metadata of the parent/container document
@@ -204,8 +205,14 @@ abstract class AbstractPOIFSExtractor {
handleCompObj(dir, type, rName, metadata, xhtml, outputHtml);
} else {
metadata.set(Metadata.CONTENT_TYPE, type.getType().toString());
- metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY,
- rName + '.' + type.getExtension());
+ if (! StringUtils.isBlank(rName)) {
+ if (StringUtils.isBlank(type.getExtension())) {
+ metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, rName);
+ } else {
+ metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY,
+ rName + '.' + type.getExtension());
+ }
+ }
parseEmbedded(dir, xhtml, metadata, outputHtml);
}
}
@@ -219,6 +226,10 @@ abstract class AbstractPOIFSExtractor {
// Grab the contents and process
DocumentEntry contentsEntry;
+ /*if (dir.hasEntry("CorelDRAW")) {
+ contentsEntry = (DocumentEntry) dir.getEntry("CorelDRAW");}
+ */
+ //TODO: modify getEntry to case insensitive when available in POI
try {
contentsEntry = (DocumentEntry) dir.getEntry("CONTENTS");
} catch (FileNotFoundException fnfe1) {
@@ -229,6 +240,7 @@ abstract class AbstractPOIFSExtractor {
return;
}
}
+
int length = contentsEntry.getSize();
DocumentInputStream inp = null;
try {
diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
index 0493a2bd8..55d3893e6 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java
@@ -63,6 +63,7 @@ import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.microsoft.OfficeParser;
import org.apache.tika.parser.microsoft.OfficeParser.POIFSDocumentType;
import org.apache.tika.parser.microsoft.OfficeParserConfig;
+import org.apache.tika.parser.microsoft.SummaryExtractor;
import org.apache.tika.sax.EmbeddedContentHandler;
import org.apache.tika.sax.XHTMLContentHandler;
import org.apache.tika.utils.ExceptionUtils;
@@ -337,9 +338,16 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor {
POIFSDocumentType type = POIFSDocumentType.detectType(root);
String packageEntryName = getPackageEntryName(root);
+ try {
+ SummaryExtractor summaryExtractor = new SummaryExtractor(metadata);
+ summaryExtractor.parseSummaries(root);
+ } catch (TikaException e) {
+ //swallow -- things happened
+ }
if (packageEntryName != null) {
//OLE 2.0
updateMetadata(metadata, embeddedPartMetadata);
+
stream = TikaInputStream.get(fs.createDocumentInputStream(packageEntryName));
if (embeddedExtractor.shouldParseEmbedded(metadata)) {
embeddedExtractor
@@ -412,6 +420,14 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor {
if (root.hasEntry("package")) {
return "package";
}
+ /*
+ raw CorelDraw stream may be in an ole bundle
+ but there can be other resources for the image
+ in other streams under root...think about this...
+ see: AZG2X4VXB3KIEDT3OVZC4R645KU5VSOF
+ if (root.hasEntry("CorelDRAW")) {
+ return "CorelDRAW";
+ }*/
return null;
}