diff --git a/Core/build.xml b/Core/build.xml index 5d91ade7e1..df747ff257 100644 --- a/Core/build.xml +++ b/Core/build.xml @@ -72,6 +72,9 @@ + + + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 22af0f87c8..9db5951f69 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -2,8 +2,15 @@ file.reference.activemq-all-5.11.1.jar=release/modules/ext/activemq-all-5.11.1.j file.reference.apache-mime4j-core-0.8.2.jar=release\\modules\\ext\\apache-mime4j-core-0.8.2.jar file.reference.apache-mime4j-dom-0.8.2.jar=release\\modules\\ext\\apache-mime4j-dom-0.8.2.jar file.reference.asm-7.0.jar=release\\modules\\ext\\asm-7.0.jar +file.reference.batik-awt-util-1.6.jar=release/modules/ext/batik-awt-util-1.6.jar +file.reference.batik-dom-1.6.jar=release/modules/ext/batik-dom-1.6.jar +file.reference.batik-svg-dom-1.6.jar=release/modules/ext/batik-svg-dom-1.6.jar +file.reference.batik-svggen-1.6.jar=release/modules/ext/batik-svggen-1.6.jar +file.reference.batik-util-1.6.jar=release/modules/ext/batik-util-1.6.jar +file.reference.batik-xml-1.6.jar=release/modules/ext/batik-xml-1.6.jar file.reference.bcmail-jdk15on-1.60.jar=release\\modules\\ext\\bcmail-jdk15on-1.60.jar file.reference.bcpkix-jdk15on-1.60.jar=release\\modules\\ext\\bcpkix-jdk15on-1.60.jar +file.reference.bcprov-ext-jdk15on-1.54.jar=release/modules/ext/bcprov-ext-jdk15on-1.54.jar file.reference.bcprov-jdk15on-1.60.jar=release\\modules\\ext\\bcprov-jdk15on-1.60.jar file.reference.boilerpipe-1.1.0.jar=release\\modules\\ext\\boilerpipe-1.1.0.jar file.reference.c3p0-0.9.5.jar=release/modules/ext/c3p0-0.9.5.jar @@ -17,14 +24,17 @@ file.reference.commons-io-2.6.jar=release\\modules\\ext\\commons-io-2.6.jar file.reference.commons-lang3-3.8.1.jar=release\\modules\\ext\\commons-lang3-3.8.1.jar file.reference.commons-pool2-2.4.2.jar=release/modules/ext/commons-pool2-2.4.2.jar file.reference.cxf-rt-rs-client-3.3.0.jar=release\\modules\\ext\\cxf-rt-rs-client-3.3.0.jar +file.reference.DatCon.jar=release/modules/ext/DatCon.jar file.reference.dec-0.1.2.jar=release\\modules\\ext\\dec-0.1.2.jar -file.reference.decodetect-core-0.3.jar=release\\modules\\ext\\decodetect-core-0.3.jar +file.reference.decodetect-core-0.3.jar=release/modules/ext/decodetect-core-0.3.jar file.reference.fontbox-2.0.13.jar=release\\modules\\ext\\fontbox-2.0.13.jar file.reference.geoapi-3.0.1.jar=release\\modules\\ext\\geoapi-3.0.1.jar file.reference.grib-4.5.5.jar=release\\modules\\ext\\grib-4.5.5.jar file.reference.httpclient-4.5.6.jar=release\\modules\\ext\\httpclient-4.5.6.jar file.reference.httpmime-4.5.6.jar=release\\modules\\ext\\httpmime-4.5.6.jar file.reference.httpservices-4.5.5.jar=release\\modules\\ext\\httpservices-4.5.5.jar +file.reference.icepdf-core-6.2.2.jar=release/modules/ext/icepdf-core-6.2.2.jar +file.reference.icepdf-viewer-6.2.2.jar=release/modules/ext/icepdf-viewer-6.2.2.jar file.reference.isoparser-1.1.22.jar=release\\modules\\ext\\isoparser-1.1.22.jar file.reference.jackcess-2.2.0.jar=release\\modules\\ext\\jackcess-2.2.0.jar file.reference.jackcess-encrypt-2.1.4.jar=release\\modules\\ext\\jackcess-encrypt-2.1.4.jar @@ -32,6 +42,8 @@ file.reference.jackson-annotations-2.9.7.jar=release\\modules\\ext\\jackson-anno file.reference.jackson-core-2.9.7.jar=release\\modules\\ext\\jackson-core-2.9.7.jar file.reference.jackson-databind-2.9.7.jar=release\\modules\\ext\\jackson-databind-2.9.7.jar file.reference.jai-imageio-core-1.4.0.jar=release\\modules\\ext\\jai-imageio-core-1.4.0.jar +file.reference.jai_core-1.1.3.jar=release/modules/ext/jai_core-1.1.3.jar +file.reference.jai_imageio-1.1.jar=release/modules/ext/jai_imageio-1.1.jar file.reference.java-libpst-0.8.1.jar=release\\modules\\ext\\java-libpst-0.8.1.jar file.reference.javax.activation-1.2.0.jar=release\\modules\\ext\\javax.activation-1.2.0.jar file.reference.javax.annotation-api-1.3.2.jar=release\\modules\\ext\\javax.annotation-api-1.3.2.jar @@ -50,7 +62,7 @@ file.reference.jsoup-1.11.3.jar=release\\modules\\ext\\jsoup-1.11.3.jar file.reference.jul-to-slf4j-1.7.25.jar=release\\modules\\ext\\jul-to-slf4j-1.7.25.jar file.reference.juniversalchardet-1.0.3.jar=release\\modules\\ext\\juniversalchardet-1.0.3.jar file.reference.junrar-2.0.0.jar=release\\modules\\ext\\junrar-2.0.0.jar -file.reference.jutf7-1.0.0.jar=release\\modules\\ext\\jutf7-1.0.0.jar +file.reference.jutf7-1.0.0.jar=release/modules/ext/jutf7-1.0.0.jar file.reference.jxmapviewer2-2.4.jar=release/modules/ext/jxmapviewer2-2.4.jar file.reference.jython-standalone-2.7.0.jar=release/modules/ext/jython-standalone-2.7.0.jar file.reference.libphonenumber-3.5.jar=release/modules/ext/libphonenumber-3.5.jar diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 79c518eeaa..bf917fc039 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -355,6 +355,14 @@ ext/commons-lang3-3.8.1.jar release\modules\ext\commons-lang3-3.8.1.jar + + ext/batik-xml-1.6.jar + release/modules/ext/batik-xml-1.6.jar + + + ext/jai_core-1.1.3.jar + release/modules/ext/jai_core-1.1.3.jar + ext/gax-grpc-1.44.0.jar release/modules/ext/gax-grpc-1.44.0.jar @@ -371,6 +379,10 @@ ext/opencensus-api-0.19.2.jar release/modules/ext/opencensus-api-0.19.2.jar + + ext/batik-svg-dom-1.6.jar + release/modules/ext/batik-svg-dom-1.6.jar + ext/gax-httpjson-0.61.0.jar release/modules/ext/gax-httpjson-0.61.0.jar @@ -479,6 +491,10 @@ ext/xmpcore-5.1.3.jar release/modules/ext/xmpcore-5.1.3.jar + + ext/batik-util-1.6.jar + release/modules/ext/batik-util-1.6.jar + ext/javax.activation-1.2.0.jar release\modules\ext\javax.activation-1.2.0.jar @@ -499,6 +515,10 @@ ext/jgraphx-4.1.0.jar release/modules/ext/jgraphx-4.1.0.jar + + ext/DatCon.jar + release/modules/ext/DatCon.jar + ext/java-libpst-0.8.1.jar release\modules\ext\java-libpst-0.8.1.jar @@ -535,10 +555,6 @@ ext/google-http-client-1.29.0.jar release/modules/ext/google-http-client-1.29.0.jar - - ext/sleuthkit-postgresql-4.9.0.jar - release/modules/ext/sleuthkit-postgresql-4.9.0.jar - ext/bcpkix-jdk15on-1.60.jar release\modules\ext\bcpkix-jdk15on-1.60.jar @@ -551,6 +567,10 @@ ext/slf4j-api-1.7.25.jar release\modules\ext\slf4j-api-1.7.25.jar + + ext/bcprov-ext-jdk15on-1.54.jar + release/modules/ext/bcprov-ext-jdk15on-1.54.jar + ext/google-cloud-core-1.70.0.jar release/modules/ext/google-cloud-core-1.70.0.jar @@ -619,6 +639,14 @@ ext/commons-validator-1.6.jar release/modules/ext/commons-validator-1.6.jar + + ext/sleuthkit-postgresql-4.9.0.jar + release/modules/ext/sleuthkit-postgresql-4.9.0.jar + + + ext/decodetect-core-0.3.jar + release/modules/ext/decodetect-core-0.3.jar + ext/jbig2-imageio-3.0.2.jar release\modules\ext\jbig2-imageio-3.0.2.jar @@ -667,6 +695,10 @@ ext/SparseBitSet-1.1.jar release/modules/ext/SparseBitSet-1.1.jar + + ext/batik-svggen-1.6.jar + release/modules/ext/batik-svggen-1.6.jar + ext/c3p0-0.9.5.jar release/modules/ext/c3p0-0.9.5.jar @@ -735,6 +767,10 @@ ext/postgresql-9.4.1211.jre7.jar release/modules/ext/postgresql-9.4.1211.jre7.jar + + ext/jai_imageio-1.1.jar + release/modules/ext/jai_imageio-1.1.jar + ext/httpclient-4.5.6.jar release\modules\ext\httpclient-4.5.6.jar @@ -747,6 +783,10 @@ ext/fontbox-2.0.13.jar release\modules\ext\fontbox-2.0.13.jar + + ext/icepdf-core-6.2.2.jar + release/modules/ext/icepdf-core-6.2.2.jar + ext/activemq-all-5.11.1.jar release/modules/ext/activemq-all-5.11.1.jar @@ -763,6 +803,10 @@ ext/dec-0.1.2.jar release\modules\ext\dec-0.1.2.jar + + ext/batik-dom-1.6.jar + release/modules/ext/batik-dom-1.6.jar + ext/google-http-client-jackson2-1.29.0.jar release/modules/ext/google-http-client-jackson2-1.29.0.jar @@ -779,6 +823,14 @@ ext/sevenzipjbinding-AllPlatforms.jar release/modules/ext/sevenzipjbinding-AllPlatforms.jar + + ext/jutf7-1.0.0.jar + release/modules/ext/jutf7-1.0.0.jar + + + ext/batik-awt-util-1.6.jar + release/modules/ext/batik-awt-util-1.6.jar + ext/google-api-services-translate-v2-rev20170525-1.27.0.jar release/modules/ext/google-api-services-translate-v2-rev20170525-1.27.0.jar @@ -787,6 +839,10 @@ ext/webp-imageio-sejda-0.1.0.jar release/modules/ext/webp-imageio-sejda-0.1.0.jar + + ext/icepdf-viewer-6.2.2.jar + release/modules/ext/icepdf-viewer-6.2.2.jar + ext/bcmail-jdk15on-1.60.jar release\modules\ext\bcmail-jdk15on-1.60.jar @@ -795,18 +851,6 @@ ext/vorbis-java-tika-0.8.jar release\modules\ext\vorbis-java-tika-0.8.jar - - ext/decodetect-core-0.3.jar - release/modules/ext/decodetect-core-0.3.jar - - - ext/jutf7-1.0.0.jar - release/modules/ext/jutf7-1.0.0.jar - - - ext/DatCon.jar - release/modules/ext/DatCon.jar - diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED index c0a6f73aaf..0c33d92daf 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED @@ -112,6 +112,8 @@ MessageContentViewer.attachmentsPanel.TabConstraints.tabTitle=Attachments MessageContentViewer.viewInNewWindowButton.text=View in New Window JPEGViewerDummy.jLabel1.text=You are looking at a JPEG file: JPEGViewerDummy.jTextField1.text=jTextField1 +PDFViewer.encryptedDialog=This document is password protected. +PDFViewer.errorDialog=An error occurred while opening this PDF document. Check the logs for more information. You may continue to use this feature on other PDF documents. PListNode.KeyCol=Key PListNode.TypeCol=Type PListNode.ValueCol=Value diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java index 1b0d048f35..0a50fb0ec9 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/FileViewer.java @@ -50,7 +50,8 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer new PListViewer(), new MediaFileViewer(), new HtmlViewer(), - new WindowsRegistryViewer() + new WindowsRegistryViewer(), + new PDFViewer() }; private FileTypeViewer lastViewer; diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/PDFViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/PDFViewer.java new file mode 100755 index 0000000000..52c6a93558 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/PDFViewer.java @@ -0,0 +1,192 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2020 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.contentviewers; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; +import java.util.ResourceBundle; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; +import javax.swing.JPanel; +import javax.swing.SwingWorker; + +import org.openide.util.NbBundle; + +import org.sleuthkit.datamodel.AbstractFile; +import org.sleuthkit.datamodel.ReadContentInputStream; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; + +import org.icepdf.core.exceptions.PDFException; +import org.icepdf.core.exceptions.PDFSecurityException; +import org.icepdf.core.pobjects.Document; + +import org.icepdf.ri.common.ComponentKeyBinding; +import org.icepdf.ri.common.SwingController; +import org.icepdf.ri.common.SwingViewBuilder; +import org.icepdf.ri.common.views.DocumentViewControllerImpl; +import org.icepdf.ri.common.views.DocumentViewModelImpl; +import org.icepdf.ri.util.PropertiesManager; + +/** + * Application content viewer for PDF files. + */ +public class PDFViewer implements FileTypeViewer { + + private static final Logger logger = Logger.getLogger(PDFViewer.class.getName()); + + private JPanel container; + private final PropertiesManager propsManager; + + public PDFViewer() { + container = createNewContainer(); + propsManager = getCustomProperties(); + } + + @Override + public List getSupportedMIMETypes() { + return Arrays.asList("application/pdf"); + } + + @Override + public void setFile(AbstractFile file) { + // The 'C' in IcePDFs MVC set up. + SwingController controller = new SwingController(); + + // Builder for the 'V' in IcePDFs MVC set up + SwingViewBuilder viewBuilder = new SwingViewBuilder(controller, propsManager); + + // The 'V' in IcePDFs MVC set up. + JPanel icePdfPanel = viewBuilder.buildViewerPanel(); + + // This connects keyboard commands performed on the view to the controller. + // The only keyboard commands that the controller supports is Ctrl-C for + // copying selected text. + ComponentKeyBinding.install(controller, icePdfPanel); + + // Ensure the preferredSize is in sync with the parent container. + icePdfPanel.setPreferredSize(this.container.getPreferredSize()); + + // Add the IcePDF view to the center of our container. + this.container.add(icePdfPanel, BorderLayout.CENTER); + + // Document is the 'M' in IcePDFs MVC set up. Read the data needed to + // populate the model in the background. + new SwingWorker() { + @Override + protected Document doInBackground() throws PDFException, PDFSecurityException, IOException { + ReadContentInputStream stream = new ReadContentInputStream(file); + Document doc = new Document(); + // This will read the stream into memory. + doc.setInputStream(stream, null); + return doc; + } + + @Override + protected void done() { + // Customize the view selection modes on the EDT. Each of these + // will cause UI widgets to be updated. + try { + Document doc = get(); + controller.openDocument(doc, null); + // This makes the PDF viewer appear as one continuous + // document, which is the default for most popular PDF viewers. + controller.setPageViewMode(DocumentViewControllerImpl.ONE_COLUMN_VIEW, true); + // This makes it possible to select text by left clicking and dragging. + controller.setDisplayTool(DocumentViewModelImpl.DISPLAY_TOOL_TEXT_SELECTION); + } catch (InterruptedException ex) { + // Do nothing. + } catch (ExecutionException ex) { + Throwable exCause = ex.getCause(); + if (exCause instanceof PDFSecurityException) { + showEncryptionDialog(); + } else { + logger.log(Level.WARNING, String.format("PDF content viewer " + + "was unable to open document with id %d and name %s", + file.getId(), file.getName()), ex); + showErrorDialog(); + } + } + } + }.execute(); + } + + @Override + public Component getComponent() { + return container; + } + + @Override + public void resetComponent() { + container = createNewContainer(); + } + + // The container should have a BorderLayout otherwise the IcePDF panel may + // not be visible. + private JPanel createNewContainer() { + return new JPanel(new BorderLayout()); + } + + @Override + public boolean isSupported(AbstractFile file) { + return getSupportedMIMETypes().contains(file.getMIMEType()); + } + + /** + * Sets property values that will control how the view will be constructed + * in IcePDFs MVC set up. + */ + private PropertiesManager getCustomProperties() { + Properties props = new Properties(); + + // See link for available properties. https://www.icesoft.org/wiki/display/PDF/Customizing+the+Viewer + props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITY_SAVE, "false"); + props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITY_OPEN, "false"); + props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITY_PRINT, "false"); + props.setProperty(PropertiesManager.PROPERTY_SHOW_TOOLBAR_ANNOTATION, "false"); + props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITYPANE_ANNOTATION, "false"); + + // This suppresses a pop-up, from IcePDF, that asks if you'd like to + // save configuration changes to disk. + props.setProperty("application.showLocalStorageDialogs", "false"); + + ResourceBundle defaultMessageBundle = ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE); + return new PropertiesManager(System.getProperties(), props, defaultMessageBundle); + } + + @NbBundle.Messages({ + "PDFViewer.errorDialog=An error occurred while opening this PDF document. " + + "Check the logs for more information. You may continue to use " + + "this feature on other PDF documents." + }) + private void showErrorDialog() { + MessageNotifyUtil.Message.error(Bundle.PDFViewer_errorDialog()); + } + + @NbBundle.Messages({ + "PDFViewer.encryptedDialog=This document is password protected." + }) + private void showEncryptionDialog() { + MessageNotifyUtil.Message.error(Bundle.PDFViewer_encryptedDialog()); + } +} diff --git a/thirdparty/IcePDF 6.2.2/batik-awt-util-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-awt-util-1.6.jar new file mode 100755 index 0000000000..b62ac15866 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-awt-util-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/batik-dom-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-dom-1.6.jar new file mode 100755 index 0000000000..bf144ab070 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-dom-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/batik-svg-dom-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-svg-dom-1.6.jar new file mode 100755 index 0000000000..c8970fbb4d Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-svg-dom-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/batik-svggen-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-svggen-1.6.jar new file mode 100755 index 0000000000..819f2da07a Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-svggen-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/batik-util-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-util-1.6.jar new file mode 100755 index 0000000000..7550b4802e Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-util-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/batik-xml-1.6.jar b/thirdparty/IcePDF 6.2.2/batik-xml-1.6.jar new file mode 100755 index 0000000000..1b915a0503 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/batik-xml-1.6.jar differ diff --git a/thirdparty/IcePDF 6.2.2/bcpkix-jdk15on-1.54.jar b/thirdparty/IcePDF 6.2.2/bcpkix-jdk15on-1.54.jar new file mode 100755 index 0000000000..86f7f0be19 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/bcpkix-jdk15on-1.54.jar differ diff --git a/thirdparty/IcePDF 6.2.2/bcprov-ext-jdk15on-1.54.jar b/thirdparty/IcePDF 6.2.2/bcprov-ext-jdk15on-1.54.jar new file mode 100755 index 0000000000..f31c1c1c45 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/bcprov-ext-jdk15on-1.54.jar differ diff --git a/thirdparty/IcePDF 6.2.2/bcprov-jdk15on-1.54.jar b/thirdparty/IcePDF 6.2.2/bcprov-jdk15on-1.54.jar new file mode 100755 index 0000000000..bd95185ae8 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/bcprov-jdk15on-1.54.jar differ diff --git a/thirdparty/IcePDF 6.2.2/icepdf-core-6.2.2.jar b/thirdparty/IcePDF 6.2.2/icepdf-core-6.2.2.jar new file mode 100755 index 0000000000..b5555280e1 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/icepdf-core-6.2.2.jar differ diff --git a/thirdparty/IcePDF 6.2.2/icepdf-viewer-6.2.2.jar b/thirdparty/IcePDF 6.2.2/icepdf-viewer-6.2.2.jar new file mode 100755 index 0000000000..d58fcc9de3 Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/icepdf-viewer-6.2.2.jar differ diff --git a/thirdparty/IcePDF 6.2.2/jai_core-1.1.3.jar b/thirdparty/IcePDF 6.2.2/jai_core-1.1.3.jar new file mode 100755 index 0000000000..b29b8eed5b Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/jai_core-1.1.3.jar differ diff --git a/thirdparty/IcePDF 6.2.2/jai_imageio-1.1.jar b/thirdparty/IcePDF 6.2.2/jai_imageio-1.1.jar new file mode 100755 index 0000000000..571aa199fa Binary files /dev/null and b/thirdparty/IcePDF 6.2.2/jai_imageio-1.1.jar differ