XMLSlideShow ppt = new XMLSlideShow();\r
\r
XSLFSlide slide = ppt.createSlide();\r
- File img = new File(System.getProperty("POI.testdata.path"), "slideshow/clock.jpg");\r
- byte[] data = IOUtils.toByteArray(new FileInputStream(img));\r
- XSLFPictureData pictureIndex = ppt.addPicture(data, PictureType.PNG);\r
\r
- /*XSLFPictureShape shape =*/ slide.createPicture(pictureIndex);\r
+ File img = new File(System.getProperty("POI.testdata.path", "test-data"), "slideshow/clock.jpg");\r
+ XSLFPictureData pictureData = ppt.addPicture(img, PictureType.PNG);\r
+\r
+ /*XSLFPictureShape shape =*/ slide.createPicture(pictureData);\r
\r
FileOutputStream out = new FileOutputStream("images.pptx");\r
ppt.write(out);\r
package org.apache.poi.sl.usermodel;
import java.awt.Dimension;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
import java.util.List;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
*/
List<? extends PictureData> getPictureData();
-
/**
- * Adds a picture to the workbook.
+ * Adds a picture to the presentation.
*
* @param pictureData The bytes of the picture
* @param format The format of the picture.
*
- * @return the new picture reference
+ * @return the picture data reference.
*/
PictureData addPicture(byte[] pictureData, PictureType format) throws IOException;
+ /**
+ * Adds a picture to the presentation.
+ *
+ * @param is The stream to read the image from
+ * @param format The format of the picture.
+ *
+ * @return the picture data reference.
+ */
+ PictureData addPicture(InputStream is, PictureType format) throws IOException;
+
+ /**
+ * Adds a picture to the presentation.
+ *
+ * @param pict The file containing the image to add
+ * @param format The format of the picture.
+ *
+ * @return the picture data reference
+ */
+ PictureData addPicture(File pict, PictureType format) throws IOException;
+
/**
* Writes out the slideshow file the is represented by an instance of this
* class
import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
import java.awt.Dimension;
+import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* Create a slide and initialize it from the specified layout.
*
- * @param layout
+ * @param layout The layout to use for the new slide.
* @return created slide
*/
public XSLFSlide createSlide(XSLFSlideLayout layout) {
return img;
}
+
+ /**
+ * Adds a picture to the slideshow.
+ *
+ * @param is The stream to read image from
+ * @param format The format of the picture
+ *
+ * @return the picture data
+ */
+ @Override
+ public XSLFPictureData addPicture(InputStream is, PictureType format) throws IOException
+ {
+ return addPicture(IOUtils.toByteArray(is), format);
+ }
+
+
+ /**
+ * Adds a picture to the presentation.
+ *
+ * @param pict The file containing the image to add
+ * @param format The format of the picture.
+ *
+ * @return the picture data
+ */
+ @Override
+ public XSLFPictureData addPicture(File pict, PictureType format) throws IOException
+ {
+ int length = (int) pict.length();
+ byte[] data = new byte[length];
+ FileInputStream is = new FileInputStream(pict);
+ try {
+ IOUtils.readFully(is, data);
+ } finally {
+ is.close();
+ }
+ return addPicture(data, format);
+ }
+
+
/**
* check if a picture with this picture data already exists in this presentation
*/
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.sl.usermodel.Resources;
import org.apache.poi.sl.usermodel.SlideShow;
+import org.apache.poi.util.IOUtils;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.Units;
_documentRecord = (Document) record;
_fonts = _documentRecord.getEnvironment().getFontCollection();
}
- } else {
+ } /*else {
// No record at this number
// Odd, but not normally a problem
- }
+ }*/
}
}
private Record getCoreRecordForRefID(int refID) {
Integer coreRecordId = _sheetIdToCoreRecordsLookup.get(refID);
if (coreRecordId != null) {
- Record r = _mostRecentCoreRecords[coreRecordId];
- return r;
+ return _mostRecentCoreRecords[coreRecordId];
}
logger.log(POILogger.ERROR,
"We tried to look up a reference to a core record, but there was no core ID for reference ID "
*/
@Override
public HSLFSlide createSlide() {
- SlideListWithText slist = null;
-
// We need to add the records to the SLWT that deals
// with Slides.
// Add it, if it doesn't exist
- slist = _documentRecord.getSlideSlideListWithText();
+ SlideListWithText slist = _documentRecord.getSlideSlideListWithText();
if (slist == null) {
// Need to add a new one
slist = new SlideListWithText();
}
/**
- * Adds a picture to this presentation and returns the associated index.
+ * Adds a picture to the presentation.
+ *
+ * @param is The stream to read the image from
+ * @param format The format of the picture.
+ *
+ * @return the picture data.
+ */
+ @Override
+ public HSLFPictureData addPicture(InputStream is, PictureType format) throws IOException {
+ if (format == null || format.nativeId == -1) { // fail early
+ throw new IllegalArgumentException("Unsupported picture format: " + format);
+ }
+ return addPicture(IOUtils.toByteArray(is), format);
+ }
+
+ /**
+ * Adds a picture to the presentation.
*
* @param pict
* the file containing the image to add
* @param format
- * the format of the picture. One of constans defined in the
- * <code>Picture</code> class.
- * @return the index to this picture (1 based).
+ * The format of the picture.
+ *
+ * @return the picture data.
*/
+ @Override
public HSLFPictureData addPicture(File pict, PictureType format) throws IOException {
+ if (format == null || format.nativeId == -1) { // fail early
+ throw new IllegalArgumentException("Unsupported picture format: " + format);
+ }
int length = (int) pict.length();
byte[] data = new byte[length];
- FileInputStream is = null;
- try {
- is = new FileInputStream(pict);
- is.read(data);
+ FileInputStream is = new FileInputStream(pict);
+ try {
+ IOUtils.readFully(is, data);
} finally {
- if(is != null) is.close();
+ is.close();
}
return addPicture(data, format);
}