/**
* Copyright (C) 2011 Angelo Zerr <angelo.zerr@gmail.com>, Pascal Leclercq <pascal.leclercq@gmail.com>
*
* 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 fr.opensagres.xdocreport.examples.msword.docx;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import fr.opensagres.xdocreport.core.XDocReportException;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.debug.SysOutDebugger;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.TemplateEngineKind;
/**
* Example with MS Word DOCX which contains an cell with the content Hello
* !${name}. Merge with Freemarker template engine will replace this cell with
* Hello world!
*
*/
public class DocXHelloWordWithFreemarker {
public static void main(String[] args) {
try {
// 1) Set debugger to track XDocReport process
XDocReportRegistry.getRegistry().setDebugger(
SysOutDebugger.INSTANCE);
// 2) Load DocX file by filling Freemarker template engine and cache
// it
// to the registry
IXDocReport report = XDocReportRegistry
.getRegistry()
.loadReport(
DocXHelloWordWithFreemarker.class
.getResourceAsStream("DocXHelloWordWithFreemarker.docx"),
TemplateEngineKind.Freemarker);
// 3) Create context Java model
IContext context = report.createContext();
context.put("name", "world");
// 4) Merge Java model with the DocX
File out = new File("out");
if (!out.exists()) {
out.mkdir();
}
File file = new File(out, "DocXHelloWordWithFreemarker.docx");
report.process(context, new FileOutputStream(file));
} catch (IOException e) {
e.printStackTrace();
} catch (XDocReportException e) {
e.printStackTrace();
}
}
}