-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
import org.apache.poi.POIDocument;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
import org.apache.poi.hslf.record.*;
import org.apache.poi.hslf.usermodel.ObjectData;
import org.apache.poi.hslf.usermodel.PictureData;
-import org.apache.poi.hslf.model.Shape;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
*
* @author Nick Burch
*/
-
-public class HSLFSlideShow extends POIDocument
-{
+public final class HSLFSlideShow extends POIDocument {
// For logging
private POILogger logger = POILogFactory.getLogger(this.getClass());
- private InputStream istream;
-
// Holds metadata on where things are in our document
private CurrentUserAtom currentUser;
* @param inputStream the source of the data
* @throws IOException if there is a problem while parsing the document.
*/
- public HSLFSlideShow(InputStream inputStream) throws IOException
- {
+ public HSLFSlideShow(InputStream inputStream) throws IOException {
//do Ole stuff
this(new POIFSFileSystem(inputStream));
- istream = inputStream;
}
/**
// Look for Picture Streams:
readPictures();
}
-
/**
* Constructs a new, empty, Powerpoint document.
*/
- public HSLFSlideShow() throws IOException
- {
- this(HSLFSlideShow.class.getResourceAsStream("/org/apache/poi/hslf/data/empty.ppt"));
- }
-
- /**
- * Shuts things down. Closes underlying streams etc
- *
- * @throws IOException
- */
- public void close() throws IOException
- {
- if(istream != null) {
- istream.close();
+ public static final HSLFSlideShow create() {
+ InputStream is = HSLFSlideShow.class.getResourceAsStream("data/empty.ppt");
+ if (is == null) {
+ throw new RuntimeException("Missing resource 'empty.ppt'");
+ }
+ try {
+ return new HSLFSlideShow(is);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
- filesystem = null;
}
-
/**
* Extracts the main PowerPoint document stream from the
* POI file, ready to be passed
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.dev;
-import java.util.*;
-import java.io.*;
-
-import org.apache.poi.ddf.*;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.record.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.hslf.HSLFSlideShow;
+import org.apache.poi.hslf.record.Record;
/**
* This class provides a way to view the contents of a powerpoint file.
*
* @author Nick Burch
*/
-
-public class SlideShowRecordDumper
-{
+public final class SlideShowRecordDumper {
private HSLFSlideShow doc;
/**
SlideShowRecordDumper foo = new SlideShowRecordDumper(filename);
foo.printDump();
- foo.close();
}
doc = new HSLFSlideShow(fileName);
}
- /**
- * Shuts things down. Closes underlying streams etc
- *
- * @throws IOException
- */
- public void close() throws IOException
- {
- if(doc != null) {
- doc.close();
- }
- doc = null;
- }
-
public void printDump() throws IOException {
// Prints out the records in the tree
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.extractor;
-import java.io.*;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.HashSet;
import org.apache.poi.POIOLE2TextExtractor;
+import org.apache.poi.hslf.HSLFSlideShow;
+import org.apache.poi.hslf.model.Comment;
+import org.apache.poi.hslf.model.HeadersFooters;
+import org.apache.poi.hslf.model.Notes;
+import org.apache.poi.hslf.model.Slide;
+import org.apache.poi.hslf.model.TextRun;
+import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.model.*;
-import org.apache.poi.hslf.record.Comment2000;
-import org.apache.poi.hslf.record.Record;
-import org.apache.poi.hslf.usermodel.*;
/**
* This class can be used to extract text from a PowerPoint file.
*
* @author Nick Burch
*/
-
-public class PowerPointExtractor extends POIOLE2TextExtractor
-{
+public final class PowerPointExtractor extends POIOLE2TextExtractor {
private HSLFSlideShow _hslfshow;
private SlideShow _show;
private Slide[] _slides;
PowerPointExtractor ppe = new PowerPointExtractor(file);
System.out.println(ppe.getText(true,notes,comments));
- ppe.close();
}
/**
_slides = _show.getSlides();
}
- /**
- * Shuts down the underlying streams
- */
- public void close() throws IOException {
- _hslfshow.close();
- _hslfshow = null;
- _show = null;
- _slides = null;
- }
-
/**
* Should a call to getText() return slide text?
* Default is yes
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.usermodel;
-import java.util.*;
import java.awt.Dimension;
-import java.io.*;
-
-import org.apache.poi.ddf.*;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.model.*;
-import org.apache.poi.hslf.model.Notes;
-import org.apache.poi.hslf.model.Slide;
-import org.apache.poi.hslf.record.SlideListWithText.*;
-import org.apache.poi.hslf.record.*;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+
+import org.apache.poi.ddf.EscherBSERecord;
+import org.apache.poi.ddf.EscherContainerRecord;
+import org.apache.poi.ddf.EscherOptRecord;
+import org.apache.poi.ddf.EscherRecord;
+import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.hslf.model.HeadersFooters;
+import org.apache.poi.hslf.model.Notes;
+import org.apache.poi.hslf.model.PPFont;
+import org.apache.poi.hslf.model.Picture;
+import org.apache.poi.hslf.model.Shape;
+import org.apache.poi.hslf.model.Slide;
+import org.apache.poi.hslf.model.SlideMaster;
+import org.apache.poi.hslf.model.TitleMaster;
+import org.apache.poi.hslf.record.Document;
+import org.apache.poi.hslf.record.DocumentAtom;
+import org.apache.poi.hslf.record.FontCollection;
+import org.apache.poi.hslf.record.FontEntityAtom;
+import org.apache.poi.hslf.record.HeadersFootersContainer;
+import org.apache.poi.hslf.record.ParentAwareRecord;
+import org.apache.poi.hslf.record.PersistPtrHolder;
+import org.apache.poi.hslf.record.PositionDependentRecord;
+import org.apache.poi.hslf.record.PositionDependentRecordContainer;
+import org.apache.poi.hslf.record.Record;
+import org.apache.poi.hslf.record.RecordContainer;
+import org.apache.poi.hslf.record.RecordTypes;
+import org.apache.poi.hslf.record.SlideListWithText;
+import org.apache.poi.hslf.record.SlidePersistAtom;
+import org.apache.poi.hslf.record.UserEditAtom;
+import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
import org.apache.poi.util.ArrayUtil;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
* @author Nick Burch
* @author Yegor kozlov
*/
-
-public class SlideShow
-{
+public final class SlideShow {
// What we're based on
private HSLFSlideShow _hslfSlideShow;
*
* @param hslfSlideShow the HSLFSlideShow to base on
*/
- public SlideShow(HSLFSlideShow hslfSlideShow) throws IOException
- {
+ public SlideShow(HSLFSlideShow hslfSlideShow) {
// Get useful things from our base slideshow
_hslfSlideShow = hslfSlideShow;
_records = _hslfSlideShow.getRecords();
/**
* Constructs a new, empty, Powerpoint document.
*/
- public SlideShow() throws IOException {
- this(new HSLFSlideShow());
+ public SlideShow() {
+ this(HSLFSlideShow.create());
}
/**
ppe = new PowerPointExtractor(filename);
String text = ppe.getText();
- assertFalse("Comments not in by default", text.contains("This is a test comment"));
+ assertFalse("Comments not in by default", contains(text, "This is a test comment"));
ppe.setCommentsByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("This is a test comment"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "This is a test comment"));
// And another file
ppe = new PowerPointExtractor(filename);
text = ppe.getText();
- assertFalse("Comments not in by default", text.contains("testdoc"));
+ assertFalse("Comments not in by default", contains(text, "testdoc"));
ppe.setCommentsByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
}
/**
ppe = new PowerPointExtractor(hslf);
text = ppe.getText();
- assertFalse("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertFalse("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
ppe.setNotesByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
// And with a footer, also on notes
ppe = new PowerPointExtractor(filename);
text = ppe.getText();
- assertFalse("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertFalse("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
ppe.setNotesByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
}
+
+ private static boolean contains(String text, String searchString) {
+ return text.indexOf(searchString) >=0;
+ }
}
-\r
/* ====================================================================\r
Licensed to the Apache Software Foundation (ASF) under one or more\r
contributor license agreements. See the NOTICE file distributed with\r
See the License for the specific language governing permissions and\r
limitations under the License.\r
==================================================================== */\r
- \r
-\r
\r
package org.apache.poi.hslf.model;\r
\r
-import java.io.*;\r
-import java.util.List;\r
-import java.util.ArrayList;\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+\r
+import junit.framework.TestCase;\r
\r
import org.apache.poi.hslf.HSLFSlideShow;\r
import org.apache.poi.hslf.usermodel.ObjectData;\r
import org.apache.poi.hslf.usermodel.PictureData;\r
import org.apache.poi.hslf.usermodel.SlideShow;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
import org.apache.poi.hssf.usermodel.HSSFSheet;\r
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;\r
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
import org.apache.poi.hwpf.HWPFDocument;\r
-import org.apache.poi.hwpf.usermodel.Range;\r
-import org.apache.poi.hwpf.usermodel.Paragraph;\r
-\r
-import junit.framework.TestCase;\r
\r
-public class TestOleEmbedding extends TestCase\r
-{\r
+public final class TestOleEmbedding extends TestCase {\r
/**\r
* Tests support for OLE objects.\r
*\r
* @throws Exception if an error occurs.\r
*/\r
- public void testOleEmbedding2003() throws Exception\r
- {\r
+ public void testOleEmbedding2003() throws Exception {\r
String dirname = System.getProperty("HSLF.testdata.path");\r
File file = new File(dirname, "ole2-embedding-2003.ppt");\r
HSLFSlideShow slideShow = new HSLFSlideShow(new FileInputStream(file));\r
- try\r
- {\r
- // Placeholder EMFs for clients that don't support the OLE components.\r
- PictureData[] pictures = slideShow.getPictures();\r
- assertEquals("Should be two pictures", 2, pictures.length);\r
- //assertDigestEquals("Wrong data for picture 1", "8d1fbadf4814f321bb1ccdd056e3c788", pictures[0].getData());\r
- //assertDigestEquals("Wrong data for picture 2", "987a698e83559cf3d38a0deeba1cc63b", pictures[1].getData());\r
+ // Placeholder EMFs for clients that don't support the OLE components.\r
+ PictureData[] pictures = slideShow.getPictures();\r
+ assertEquals("Should be two pictures", 2, pictures.length);\r
+ //assertDigestEquals("Wrong data for picture 1", "8d1fbadf4814f321bb1ccdd056e3c788", pictures[0].getData());\r
+ //assertDigestEquals("Wrong data for picture 2", "987a698e83559cf3d38a0deeba1cc63b", pictures[1].getData());\r
\r
- // Actual embedded objects.\r
- ObjectData[] objects = slideShow.getEmbeddedObjects();\r
- assertEquals("Should be two objects", 2, objects.length);\r
- //assertDigestEquals("Wrong data for objecs 1", "0d1fcc61a83de5c4894dc0c88e9a019d", objects[0].getData());\r
- //assertDigestEquals("Wrong data for object 2", "b323604b2003a7299c77c2693b641495", objects[1].getData());\r
- }\r
- finally\r
- {\r
- slideShow.close();\r
- }\r
+ // Actual embedded objects.\r
+ ObjectData[] objects = slideShow.getEmbeddedObjects();\r
+ assertEquals("Should be two objects", 2, objects.length);\r
+ //assertDigestEquals("Wrong data for objecs 1", "0d1fcc61a83de5c4894dc0c88e9a019d", objects[0].getData());\r
+ //assertDigestEquals("Wrong data for object 2", "b323604b2003a7299c77c2693b641495", objects[1].getData());\r
}\r
\r
public void testOLEShape() throws Exception {\r
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.usermodel;
*
* @author Nick Burch (nick at torchbox dot com)
*/
-public class TestAddingSlides extends TestCase {
+public final class TestAddingSlides extends TestCase {
// An empty SlideShow
private HSLFSlideShow hss_empty;
private SlideShow ss_empty;
* Create/open the slideshows
*/
public void setUp() throws Exception {
- hss_empty = new HSLFSlideShow();
+ hss_empty = HSLFSlideShow.create();
ss_empty = new SlideShow(hss_empty);
String dirname = System.getProperty("HSLF.testdata.path");
Record[] _records = hss_empty.getRecords();
for (int i = 0; i < _records.length; i++) {
Record record = _records[i];
- if(_records[i].getRecordType() == RecordTypes.UserEditAtom.typeID) {
- usredit = (UserEditAtom)_records[i];
+ if(record.getRecordType() == RecordTypes.UserEditAtom.typeID) {
+ usredit = (UserEditAtom)record;
}
}
assertNotNull(usredit);