From ff9d722ef47ea7536945940e20b5dbb63b92874e Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Tue, 19 Nov 2024 10:19:15 -0500 Subject: [PATCH] TIKA-4354 -- make incremental update metadata and parsing default in tika-cli (#2059) * TIKA-4354 -- make incremental update metadata and parsing default in tika-cli --- .../main/java/org/apache/tika/cli/TikaCLI.java | 12 ++++++------ .../org/apache/tika/cli/TikaCLIAsyncTest.java | 2 +- .../java/org/apache/tika/cli/TikaCLITest.java | 8 ++++++++ .../test-data/testPDF_incrementalUpdates.pdf | Bin 0 -> 64872 bytes 4 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 tika-app/src/test/resources/test-data/testPDF_incrementalUpdates.pdf diff --git a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java index f59d887436..367a38c555 100644 --- a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java +++ b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java @@ -200,7 +200,6 @@ public void process(InputStream stream, OutputStream output, Metadata metadata) */ private String password = System.getenv("TIKA_PASSWORD"); private DigestingParser.Digester digester = null; - private boolean asyncMode = false; private boolean pipeMode = true; private boolean fork = false; private boolean prettyPrint; @@ -340,9 +339,12 @@ private void configurePDFExtractSettings() { if (configFilePath == null && context.get(PDFParserConfig.class) == null) { PDFParserConfig pdfParserConfig = new PDFParserConfig(); pdfParserConfig.setExtractInlineImages(true); + pdfParserConfig.setExtractIncrementalUpdateInfo(true); pdfParserConfig.setParseIncrementalUpdates(true); - String warn = "As a convenience, TikaCLI has turned on extraction of\n" + "inline images and incremental updates for the PDFParser (TIKA-2374 and " + "TIKA-4017).\n" + - "Aside from the -z option, this is not the default behavior\n" + "in Tika generally or in tika-server."; + String warn = "As a convenience, TikaCLI has turned on extraction of\n" + + "inline images and incremental updates for the PDFParser (TIKA-2374, " + + "TIKA-4017 and TIKA-4354).\n" + + "This is not the default behavior in Tika generally or in tika-server."; LOG.info(warn); context.set(PDFParserConfig.class, pdfParserConfig); } @@ -401,8 +403,6 @@ public void process(String arg) throws Exception { // ignore, as container-aware detectors are now always used } else if (arg.equals("-f") || arg.equals("--fork")) { fork = true; - } else if (arg.equals("-a") || arg.equals("--async")) { - asyncMode = true; } else if (arg.startsWith("--config=")) { configFilePath = arg.substring("--config=".length()); } else if (arg.startsWith("--digest=")) { @@ -446,7 +446,6 @@ public void process(String arg) throws Exception { } extractDir = new File(dirPath); } else if (arg.equals("-z") || arg.equals("--extract")) { - configurePDFExtractSettings(); type = NO_OUTPUT; context.set(EmbeddedDocumentExtractor.class, new FileEmbeddedDocumentExtractor()); } else if (arg.equals("-r") || arg.equals("--pretty-print")) { @@ -475,6 +474,7 @@ public void process(String arg) throws Exception { } else { url = new URL(arg); } + configurePDFExtractSettings(); if (recursiveJSON) { handleRecursiveJson(url, System.out); } else { diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java index d0d7ce1003..072f2c7d7d 100644 --- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java +++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java @@ -120,7 +120,7 @@ public void testAsync() throws Exception { json++; } } - assertEquals(17, json); + assertEquals(18, json); } private void checkForPrettyPrint(File f) throws IOException { diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java index ec6e7df1a6..e318ff80b4 100644 --- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java +++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java @@ -241,6 +241,14 @@ public void testJsonMetadataPrettyPrintOutput() throws Exception { assertTrue(fb > -1 && title > -1 && fb > title); } + @Test + public void testDefaultPDFIncrementalUpdateSettings() throws Exception { + String json = getParamOutContent("-J", + resourcePrefix + "testPDF_incrementalUpdates.pdf"); + assertTrue(json.contains("pdf:incrementalUpdateCount\":\"2\"")); + assertTrue(json.contains("embeddedResourceType\":\"VERSION\"")); + } + /** * Tests -l option of the cli * diff --git a/tika-app/src/test/resources/test-data/testPDF_incrementalUpdates.pdf b/tika-app/src/test/resources/test-data/testPDF_incrementalUpdates.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8494cc8396d5d2770281e7d6065f910d496c0354 GIT binary patch literal 64872 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’PQ2Kl`Ok_9gdSqd|Xh>F5rfL^%0SS>aw9xhQRX)5I}Ei9ueOD@MRzgGcQ z;Z^ae(yDUirS8kVD*39WYN6`#8rGWJTB_QlI>NfBdi46B`qKvQhMiZAuRb39M^1rR@;O(gBV#%yw*Z+l>Y)bUrO?I&YqSzQ1*8D|efFyJ<&tXKL4O_sibB z{Y(2#5BLw-4sRSTeepO#IeK)=bXcLV0!-2Ci6SOEtT@|-8(Vdnu1SN%+ehnxLZJK{V7TtAYAB>-T& zzuG0|<>2T3A*Ww$i*s@Ow`_|`adYtV@$myD&H2Q***PV|0XyU3+}vF3VjO^iCMVCi WZE=__@t>@V^K$cW@P4%}{=WeJ|JREE literal 0 HcmV?d00001