import org.apache.poi.xwpf.usermodel.XWPFHeader; //导入依赖的package包/类
/**
* Parses a template document and returns the {@link DocumentTemplate} resulting from
* this parsing.
*
* @param uriConverter
* the {@link URIConverter uri converter} to use.
* @param templateURI
* URI for the template, used when external links (images, includes) have to be resolved
* @param queryEnvironment
* the {@link IQueryEnvironment}
* @param classProvider
* the {@link IClassProvider} to use for service Loading
* @return the {@link DocumentTemplate} resulting from parsing the specified
* document
* @throws DocumentParserException
* if a problem occurs while parsing the document.
*/
@SuppressWarnings("resource")
public static DocumentTemplate parse(URIConverter uriConverter, URI templateURI, IQueryEnvironment queryEnvironment,
IClassProvider classProvider) throws DocumentParserException {
final DocumentTemplate result = (DocumentTemplate) EcoreUtil.create(TemplatePackage.Literals.DOCUMENT_TEMPLATE);
final ResourceImpl r = new ResourceImpl(templateURI);
try {
// resources are closed in DocumentTemplate.close()
final InputStream is = uriConverter.createInputStream(templateURI);
final OPCPackage oPackage = OPCPackage.open(is);
final XWPFDocument document = new XWPFDocument(oPackage);
final List messages = parseTemplateCustomProperties(queryEnvironment,
classProvider, document);
r.getContents().add(result);
final M2DocParser parser = new M2DocParser(document, queryEnvironment);
final Template documentBody = parser.parseTemplate();
for (TemplateValidationMessage validationMessage : messages) {
documentBody.getValidationMessages().add(validationMessage);
}
result.setBody(documentBody);
result.setInputStream(is);
result.setOpcPackage(oPackage);
result.setDocument(document);
for (XWPFFooter footer : document.getFooterList()) {
final M2DocParser footerParser = new M2DocParser(footer, queryEnvironment);
result.getFooters().add(footerParser.parseTemplate());
}
for (XWPFHeader header : document.getHeaderList()) {
final M2DocParser headerParser = new M2DocParser(header, queryEnvironment);
result.getHeaders().add(headerParser.parseTemplate());
}
} catch (IOException e) {
throw new DocumentParserException("Unable to open " + templateURI, e);
} catch (InvalidFormatException e1) {
throw new DocumentParserException("Invalid .docx format " + templateURI, e1);
}
return result;
}