ExperimentalStampers.java
package pro.verron.officestamper.preset;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.PresentationMLPackage;
import org.docx4j.openpackaging.packages.SpreadsheetMLPackage;
import pro.verron.officestamper.api.OfficeStamper;
import pro.verron.officestamper.api.OfficeStamperException;
import pro.verron.officestamper.api.StreamStamper;
import pro.verron.officestamper.experimental.ExcelStamper;
import pro.verron.officestamper.experimental.PowerpointStamper;
import java.io.InputStream;
/**
* ExperimentalStampers is a class that provides static methods for obtaining instances of OfficeStamper
* implementations for stamping PowerPoint presentations and Excel templates with context and writing
* the result to an OutputStream.
*
* @since 1.6.8
*/
public class ExperimentalStampers {
private ExperimentalStampers() {
throw new OfficeStamperException("ExperimentalStampers cannot be instantiated");
}
/**
* Returns a new instance of the OfficeStamper implementation
* for stamping PowerPoint presentations with context and writing
* the result to an OutputStream.
*
* @return a new OfficeStamper instance for PowerPoint presentations
*
* @since 1.6.8
*/
public static StreamStamper<PresentationMLPackage> pptxStamper() {
var stamper = new PowerpointStamper();
return new StreamStamper<>(ExperimentalStampers::loadPowerPoint, stamper);
}
private static PresentationMLPackage loadPowerPoint(InputStream inputStream) {
try {
return PresentationMLPackage.load(inputStream);
} catch (Docx4JException e) {
throw new OfficeStamperException(e);
}
}
/**
* Returns a new instance of the OfficeStamper implementation
* for stamping Excel templates with context and writing the result to an OutputStream.
*
* @return a new OfficeStamper instance for Excel templates
*
* @since 1.6.8
*/
public static OfficeStamper<SpreadsheetMLPackage> xlsxStamper() {
return new ExcelStamper();
}
}