/* ==================================================================== | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You 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.apache.poi.xslf.usermodel; | |
import java.io.File; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import org.apache.poi.EncryptedDocumentException; | |
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; | |
import org.apache.poi.openxml4j.opc.OPCPackage; | |
import org.apache.poi.openxml4j.opc.PackageAccess; | |
import org.apache.poi.sl.usermodel.SlideShow; | |
import org.apache.poi.sl.usermodel.SlideShowFactory; | |
import org.apache.poi.util.Internal; | |
@Internal | |
public class XSLFSlideShowFactory extends SlideShowFactory { | |
/** | |
* Creates a XMLSlideShow from the given OOXML Package | |
* | |
* <p>Note that in order to properly release resources the | |
* SlideShow should be closed after use.</p> | |
* | |
* @param pkg The {@link OPCPackage} opened for reading data. | |
* | |
* @return The created SlideShow | |
* | |
* @throws IOException if an error occurs while reading the data | |
* @throws InvalidFormatException | |
*/ | |
public static SlideShow<?,?> createSlideShow(OPCPackage pkg) throws IOException { | |
try { | |
return new XMLSlideShow(pkg); | |
} catch (IllegalArgumentException ioe) { | |
// ensure that file handles are closed (use revert() to not re-write the file) | |
pkg.revert(); | |
//pkg.close(); | |
// rethrow exception | |
throw ioe; | |
} | |
} | |
/** | |
* Creates the XMLSlideShow from the given File, which must exist and be readable. | |
* <p>Note that in order to properly release resources theSlideShow should be closed after use. | |
* | |
* @param file The file to read data from. | |
* @param readOnly If the SlideShow should be opened in read-only mode to avoid writing back | |
* changes when the document is closed. | |
* | |
* @return The created SlideShow | |
* | |
* @throws IOException if an error occurs while reading the data | |
* @throws EncryptedDocumentException If the wrong password is given for a protected file | |
*/ | |
@SuppressWarnings("resource") | |
public static SlideShow<?,?> createSlideShow(File file, boolean readOnly) | |
throws IOException, InvalidFormatException { | |
OPCPackage pkg = OPCPackage.open(file, readOnly ? PackageAccess.READ : PackageAccess.READ_WRITE); | |
return createSlideShow(pkg); | |
} | |
/** | |
* Creates a XMLSlideShow from the given InputStream | |
* | |
* <p>Note that in order to properly release resources the | |
* SlideShow should be closed after use.</p> | |
* | |
* @param stream The {@link InputStream} to read data from. | |
* | |
* @return The created SlideShow | |
* | |
* @throws IOException if an error occurs while reading the data | |
* @throws InvalidFormatException | |
*/ | |
@SuppressWarnings("resource") | |
public static SlideShow<?,?> createSlideShow(InputStream stream) throws IOException, InvalidFormatException { | |
OPCPackage pkg = OPCPackage.open(stream); | |
return createSlideShow(pkg); | |
} | |
} |