@Override public boolean canExtract(DirectoryNode dn) { ClassID clsId = dn.getStorageClsid(); return ClassIDPredefined.lookup(clsId) == ClassIDPredefined.OLE_V1_PACKAGE; }
protected boolean canExtractExcel(DirectoryNode dn) { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); return (ClassIDPredefined.EXCEL_V7 == clsId || ClassIDPredefined.EXCEL_V8 == clsId || dn.hasEntry("Workbook") /*...*/); }
protected boolean canExtractWord(DirectoryNode dn) { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); return (ClassIDPredefined.WORD_V7 == clsId || ClassIDPredefined.WORD_V8 == clsId || dn.hasEntry("WordDocument")); }
@Override public boolean canExtract(DirectoryNode dn) { ClassID clsId = dn.getStorageClsid(); return (PdfClassID.equals(clsId) || dn.hasEntry("CONTENTS")); }
fs.getRoot().setStorageClsid(getDirectory().getStorageClsid());
protected static void copyNodes(DirectoryNode src, DirectoryNode dest) throws IOException { for (Entry e : src) { if (e instanceof DirectoryNode) { DirectoryNode srcDir = (DirectoryNode)e; DirectoryNode destDir = (DirectoryNode)dest.createDirectory(srcDir.getName()); destDir.setStorageClsid(srcDir.getStorageClsid()); copyNodes(srcDir, destDir); } else { try (InputStream is = src.createDocumentInputStream(e)) { dest.createDocument(e.getName(), is); } } } }
@Override public EmbeddedData extract(DirectoryNode dn) throws IOException { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); String contentType = null; String ext = null; if (clsId != null) { contentType = clsId.getContentType(); ext = clsId.getFileExtension(); } if (contentType == null || ext == null) { contentType = "application/zip"; ext = ".zip"; } DocumentInputStream dis = dn.createDocumentInputStream("package"); byte data[] = IOUtils.toByteArray(dis); dis.close(); return new EmbeddedData(dn.getName()+ext, data, contentType); } }
@Override public boolean canExtract(DirectoryNode dn) { ClassID clsId = dn.getStorageClsid(); return ClassIDPredefined.lookup(clsId) == ClassIDPredefined.OLE_V1_PACKAGE; }
protected boolean canExtractWord(DirectoryNode dn) { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); return (ClassIDPredefined.WORD_V7 == clsId || ClassIDPredefined.WORD_V8 == clsId || dn.hasEntry("WordDocument")); }
protected boolean canExtractExcel(DirectoryNode dn) { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); return (ClassIDPredefined.EXCEL_V7 == clsId || ClassIDPredefined.EXCEL_V8 == clsId || dn.hasEntry("Workbook") /*...*/); }
@Override public boolean canExtract(DirectoryNode dn) { ClassID clsId = dn.getStorageClsid(); return (PdfClassID.equals(clsId) || dn.hasEntry("CONTENTS")); }
fs.getRoot().setStorageClsid(getDirectory().getStorageClsid());
fs.getRoot().setStorageClsid(this.directory.getStorageClsid());
fs.getRoot().setStorageClsid(this.directory.getStorageClsid());
protected static void copyNodes(DirectoryNode src, DirectoryNode dest) throws IOException { for (Entry e : src) { if (e instanceof DirectoryNode) { DirectoryNode srcDir = (DirectoryNode)e; DirectoryNode destDir = (DirectoryNode)dest.createDirectory(srcDir.getName()); destDir.setStorageClsid(srcDir.getStorageClsid()); copyNodes(srcDir, destDir); } else { try (InputStream is = src.createDocumentInputStream(e)) { dest.createDocument(e.getName(), is); } } } }
@Override public void sanitize(InputStream inputStream, OutputStream outputStream, BleachSession session) throws BleachException { try (POIFSFileSystem fsIn = new POIFSFileSystem(inputStream); POIFSFileSystem fs = new POIFSFileSystem()) { // @TODO: Filter based on Storage Class ID - see issue #23 sanitize(session, fsIn, fs); if (ClassID.EXCEL97.equals(fs.getRoot().getStorageClsid())) { ExcelRecordCleaner.cleanupAndSaveExcel97(fs, outputStream); } else { fs.writeFilesystem(outputStream); } } catch (IOException | IndexOutOfBoundsException e) { throw new BleachException(e); } }
@Override public EmbeddedData extract(DirectoryNode dn) throws IOException { ClassIDPredefined clsId = ClassIDPredefined.lookup(dn.getStorageClsid()); String contentType = null; String ext = null; if (clsId != null) { contentType = clsId.getContentType(); ext = clsId.getFileExtension(); } if (contentType == null || ext == null) { contentType = "application/zip"; ext = ".zip"; } DocumentInputStream dis = dn.createDocumentInputStream("package"); byte data[] = IOUtils.toByteArray(dis); dis.close(); return new EmbeddedData(dn.getName()+ext, data, contentType); } }
if (new ClassID().equals(root.getStorageClsid())) {