/* * * Copyright 2015 Andrey Yakovlev * * Licensed 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 jodtemplate.pptx; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import jodtemplate.OOXMLDocument; import jodtemplate.OOXMLDocumentProcessor; import jodtemplate.exception.JODTemplateException; import jodtemplate.io.ZipReader; import jodtemplate.io.ZipWriter; import jodtemplate.resource.Resources; public class PPTXDocument implements OOXMLDocument { // CHECKSTYLE.OFF: MultipleStringLiterals public static final String DRAWINGML_NAMESPACE = "http://schemas.openxmlformats.org/drawingml/2006/main"; public static final String DRAWINGML_NAMESPACE_PREFIX = "a"; public static final String PRESENTATIONML_NAMESPACE = "http://schemas.openxmlformats.org/presentationml/2006/main"; public static final String RELATIONSHIPS_NAMESPACE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"; public static final String RELATIONSHIPS_NAMESPACE_PREFIX = "r"; public static final String R_ELEMENT = "r"; public static final String BR_ELEMENT = "br"; public static final String T_ELEMENT = "t"; public static final String P_ELEMENT = "p"; public static final String PPR_ELEMENT = "pPr"; public static final String RPR_ELEMENT = "rPr"; public static final String BUNONE_ELEMENT = "buNone"; public static final String BUAUTONUM_ELEMENT = "buAutoNum"; public static final String BUCHAR_ELEMENT = "buChar"; public static final String BUFONT_ELEMENT = "buFont"; public static final String END_PARA_R_PR_ELEMENT = "endParaRPr"; public static final String PIC_ELEMENT = "pic"; public static final String NVPICPR_ELEMENT = "nvPicPr"; public static final String CNVPR_ELEMENT = "cNvPr"; public static final String SPPR_ELEMENT = "spPr"; public static final String XFRM_ELEMENT = "xfrm"; public static final String BLIPFILL_ELEMENT = "blipFill"; public static final String BLIP_ELEMENT = "blip"; public static final String EXT_ELEMENT = "ext"; public static final String TR_ELEMENT = "tr"; public static final String HLINK_CLICK_ELEMENT = "hlinkClick"; public static final String TYPE_ATTR = "type"; public static final String CHAR_ATTR = "char"; public static final String LVL_ATTR = "lvl"; public static final String CHARSET_ATTR = "charset"; public static final String PANOSE_ATTR = "panose"; public static final String PITCH_FAMILY_ATTR = "pitchFamily"; public static final String TYPEFACE_ATTR = "typeface"; public static final String INDENT_ATTR = "indent"; public static final String MAR_L_ATTR = "marL"; public static final String DESCR_ATTR = "descr"; public static final String EMBED_ATTR = "embed"; public static final String ID_ATTR = "id"; // CHECKSTYLE.ON: MultipleStringLiterals private final OOXMLDocumentProcessor documentProcessor; private Configuration configuration; private ZipReader zipReader; private ZipWriter zipWriter; public PPTXDocument() { this(new Configuration()); } public PPTXDocument(final Configuration configuration) { this(configuration, new PPTXDocumentProcessor(configuration), new ZipReader(), new ZipWriter()); } public PPTXDocument(final Configuration configuration, final OOXMLDocumentProcessor documentProcessor, final ZipReader zipReader, final ZipWriter zipWriter) { this.configuration = configuration; this.documentProcessor = documentProcessor; this.zipReader = zipReader; this.zipWriter = zipWriter; } @Override public void process(final Map<String, Object> context, final InputStream templateInputStream, final OutputStream output) throws JODTemplateException { try { final Resources resources = zipReader.unzipContents(templateInputStream, configuration.getResourcesFactory()); try { documentProcessor.process(context, resources); zipWriter.zipResources(resources, output); } finally { resources.clean(); } } catch (IOException e) { throw new JODTemplateException("Process template IO error", e); } } @Override public Configuration getConfiguration() { return configuration; } @Override public void setConfiguration(final Configuration configuration) { this.configuration = configuration; this.documentProcessor.setConfiguration(configuration); } }