OfficeStampers.java
package pro.verron.officestamper.preset;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import pro.verron.officestamper.api.OfficeStamperConfiguration;
import pro.verron.officestamper.api.OfficeStamperException;
import pro.verron.officestamper.api.StreamStamper;
import pro.verron.officestamper.core.DocxStamper;
import java.io.InputStream;
/// Main class of the docx-stamper library.
///
/// This class can be used to create "stampers" that will open .docx templates
/// to create a .docx document filled with custom data at runtime.
///
/// @author Joseph Verron
/// @version ${version}
/// @since 1.6.4
public class OfficeStampers {
private OfficeStampers() {
throw new OfficeStamperException("OfficeStampers cannot be instantiated");
}
/// Creates a new DocxStamper with the default configuration.
/// Also adds the [Preprocessors#removeLanguageProof()] and [Preprocessors#mergeSimilarRuns()]
/// preprocessors.
///
/// @return a new DocxStamper
public static StreamStamper<WordprocessingMLPackage> docxStamper() {
return docxStamper(OfficeStamperConfigurations.standardWithPreprocessing());
}
/// Creates a new instance of the [DocxStamper] class with the specified [OfficeStamperConfiguration].
///
/// @param config the configuration for the docx stamper
///
/// @return a new instance of the [DocxStamper] class
public static StreamStamper<WordprocessingMLPackage> docxStamper(
OfficeStamperConfiguration config
) {
return new StreamStamper<>(
OfficeStampers::loadWord,
new DocxStamper(config)
);
}
private static WordprocessingMLPackage loadWord(InputStream is) {
try {
return WordprocessingMLPackage.load(is);
} catch (Docx4JException e) {
throw new OfficeStamperException(e);
}
}
}