Java源码示例:org.apache.poi.xwpf.usermodel.XWPFHeader
示例1
/**
* 解析页眉和页脚
*
* @param doc
* @param map
* @throws Exception
*/
private void parseHeaderAndFoot(MyXWPFDocument doc, Map<String, Object> map) throws Exception {
List<XWPFHeader> headerList = doc.getHeaderList();
for (XWPFHeader xwpfHeader : headerList) {
for (int i = 0; i < xwpfHeader.getListParagraph().size(); i++) {
parseThisParagraph(xwpfHeader.getListParagraph().get(i), map);
}
}
List<XWPFFooter> footerList = doc.getFooterList();
for (XWPFFooter xwpfFooter : footerList) {
for (int i = 0; i < xwpfFooter.getListParagraph().size(); i++) {
parseThisParagraph(xwpfFooter.getListParagraph().get(i), map);
}
}
}
示例2
/**
* 解析页眉和页脚
*
* @param doc
* @param map
* @throws Exception
*/
private void parseHeaderAndFoot(MyXWPFDocument doc, Map<String, Object> map) throws Exception {
List<XWPFHeader> headerList = doc.getHeaderList();
for (XWPFHeader xwpfHeader : headerList) {
for (int i = 0; i < xwpfHeader.getListParagraph().size(); i++) {
parseThisParagraph(xwpfHeader.getListParagraph().get(i), map);
}
}
List<XWPFFooter> footerList = doc.getFooterList();
for (XWPFFooter xwpfFooter : footerList) {
for (int i = 0; i < xwpfFooter.getListParagraph().size(); i++) {
parseThisParagraph(xwpfFooter.getListParagraph().get(i), map);
}
}
}
示例3
/**
* 解析页眉和页脚
* @param doc
* @param map
* @throws Exception
*/
private void parseHeaderAndFoot(MyXWPFDocument doc, Map<String, Object> map) throws Exception {
List<XWPFHeader> headerList = doc.getHeaderList();
for (XWPFHeader xwpfHeader : headerList) {
for (int i = 0; i < xwpfHeader.getListParagraph().size(); i++) {
parseThisParagraph(xwpfHeader.getListParagraph().get(i), map);
}
}
List<XWPFFooter> footerList = doc.getFooterList();
for (XWPFFooter xwpfFooter : footerList) {
for (int i = 0; i < xwpfFooter.getListParagraph().size(); i++) {
parseThisParagraph(xwpfFooter.getListParagraph().get(i), map);
}
}
}
示例4
@Override
public XWPFParagraph caseDocumentTemplate(DocumentTemplate documentTemplate) {
cleanBody(generatedDocument);
final int unitOfWork = MONITOR_WORK
/ (1 + documentTemplate.getFooters().size() + documentTemplate.getHeaders().size());
doSwitch(documentTemplate.getBody());
worked(monitor, unitOfWork);
final XWPFDocument document = (XWPFDocument) generatedDocument;
final Iterator<XWPFFooter> footers = document.getFooterList().iterator();
for (final Block footer : documentTemplate.getFooters()) {
final XWPFFooter f = footers.next();
cleanBody(f);
generatedDocument = f;
doSwitch(footer);
worked(monitor, unitOfWork);
}
final Iterator<XWPFHeader> headers = document.getHeaderList().iterator();
for (final Block header : documentTemplate.getHeaders()) {
final XWPFHeader h = headers.next();
cleanBody(h);
generatedDocument = h;
doSwitch(header);
worked(monitor, unitOfWork);
}
return currentGeneratedParagraph;
}
示例5
/**
* Gets the {@link List} of missing variable names.
*
* @return the {@link List} of missing variable names
*/
public List<String> getMissingVariables() {
final List<String> res = new ArrayList<>();
final IQueryEnvironment queryEnvironment = Query.newEnvironment();
final M2DocParser parser = new M2DocParser(document, queryEnvironment);
try {
final List<Template> templates = new ArrayList<>();
final Block block = parser.parseBlock(templates);
final Set<String> missing = new LinkedHashSet<>();
final Set<String> used = new LinkedHashSet<>();
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, block);
for (XWPFFooter footer : document.getFooterList()) {
final M2DocParser footerParser = new M2DocParser(footer, queryEnvironment);
final Block footerBlock = footerParser.parseBlock(null, TokenType.EOF);
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, footerBlock);
}
for (XWPFHeader header : document.getHeaderList()) {
final M2DocParser headerParser = new M2DocParser(header, queryEnvironment);
final Block headerBlock = headerParser.parseBlock(null, TokenType.EOF);
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, headerBlock);
}
res.addAll(missing);
} catch (DocumentParserException e) {
// can't parse then nothing is missing
}
return res;
}
示例6
/**
* Gets the {@link List} of unused variable names.
*
* @return the {@link List} of unused variable names
*/
public List<String> getUnusedDeclarations() {
final List<String> res = new ArrayList<>(getVariables().keySet());
final IQueryEnvironment queryEnvironment = Query.newEnvironment();
final M2DocParser parser = new M2DocParser(document, queryEnvironment);
try {
final List<Template> templates = new ArrayList<>();
final Block block = parser.parseBlock(templates);
final Set<String> missing = new LinkedHashSet<>();
final Set<String> used = new LinkedHashSet<>();
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, block);
for (XWPFFooter footer : document.getFooterList()) {
final M2DocParser footerParser = new M2DocParser(footer, queryEnvironment);
final Block footerBlock = footerParser.parseBlock(null, TokenType.EOF);
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, footerBlock);
}
for (XWPFHeader header : document.getHeaderList()) {
final M2DocParser headerParser = new M2DocParser(header, queryEnvironment);
final Block headerBlock = headerParser.parseBlock(null, TokenType.EOF);
walkForNeededVariables(new ArrayList<>(getVariables().keySet()), missing, used, headerBlock);
}
res.removeAll(used);
} catch (DocumentParserException e) {
// can't parse then nothing is used
}
return res;
}
示例7
/**
* Marks the {@link CTSimpleField} of the given {@link IBody} as
* {@link CTSimpleField#setDirty(org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.Enum) dirty}.
*
* @param body
* the {@link IBody}
*/
public void markFieldsAsDirty(IBody body) {
if (body instanceof XWPFDocument) {
final XWPFDocument document = (XWPFDocument) body;
for (XWPFHeader header : document.getHeaderList()) {
markFieldsAsDirty(header);
}
for (XWPFFooter footer : document.getFooterList()) {
markFieldsAsDirty(footer);
}
}
for (IBodyElement element : body.getBodyElements()) {
markFieldsAsDirty(element);
}
}
示例8
/**
* Parses a document for {@link UserContent} and returns the {@link DocumentTemplate} resulting from
* this parsing.
*
* @param uriConverter
* the {@link URIConverter uri converter} to use.
* @param documentURI
* URI for the document
* @param queryEnvironment
* the {@link IQueryEnvironment}
* @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 parseUserContent(URIConverter uriConverter, URI documentURI,
IQueryEnvironment queryEnvironment) throws DocumentParserException {
final DocumentTemplate result = (DocumentTemplate) EcoreUtil.create(TemplatePackage.Literals.DOCUMENT_TEMPLATE);
final ResourceImpl r = new ResourceImpl(documentURI);
try {
// resources are closed in DocumentTemplate.close()
final InputStream is = uriConverter.createInputStream(documentURI);
final OPCPackage oPackage = OPCPackage.open(is);
final XWPFDocument document = new XWPFDocument(oPackage);
r.getContents().add(result);
final BodyGeneratedParser parser = new BodyGeneratedParser(document, queryEnvironment);
result.setBody(parser.parseBlock(null));
result.setInputStream(is);
result.setOpcPackage(oPackage);
result.setDocument(document);
for (XWPFFooter footer : document.getFooterList()) {
final BodyGeneratedParser footerParser = new BodyGeneratedParser(footer, queryEnvironment);
result.getFooters().add(footerParser.parseBlock(null));
}
for (XWPFHeader header : document.getHeaderList()) {
final BodyGeneratedParser headerParser = new BodyGeneratedParser(header, queryEnvironment);
result.getHeaders().add(headerParser.parseBlock(null));
}
} catch (IOException e) {
throw new DocumentParserException("Unable to open " + documentURI, e);
} catch (InvalidFormatException e1) {
throw new DocumentParserException("Invalid .docx format " + documentURI, e1);
}
return result;
}
示例9
List<MetaTemplate> resolveHeaders(List<XWPFHeader> headers) {
List<MetaTemplate> metaTemplates = new ArrayList<>();
if (null == headers) return metaTemplates;
headers.forEach(header -> {
metaTemplates.addAll(resolveBodyElements(header.getBodyElements()));
});
return metaTemplates;
}
示例10
@SuppressWarnings("serial")
@Test
public void testIfFalse() throws Exception {
Map<String, Object> datas = new HashMap<String, Object>() {
{
put("title", "poi-tl");
put("isShowTitle", true);
put("showUser", false);
put("showDate", false);
}
};
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/template/iterable_if1.docx");
template.render(datas);
XWPFDocument document = XWPFTestSupport.readNewDocument(template);
XWPFParagraph paragraph = document.getParagraphArray(0);
assertEquals(paragraph.getText(), "Hi, poi-tl");
XWPFTable table = document.getTableArray(0);
XWPFTableCell cell = table.getRow(1).getCell(0);
assertEquals(cell.getText(), "Hi, poi-tl");
XWPFHeader header = document.getHeaderArray(0);
paragraph = header.getParagraphArray(0);
assertEquals(paragraph.getText(), "Hi, poi-tl");
}
示例11
@SuppressWarnings("serial")
@Test
public void testIfTrue() throws Exception {
Map<String, Object> datas = new HashMap<String, Object>() {
{
put("title", "poi-tl");
put("isShowTitle", true);
put("showUser", new HashMap<String, Object>() {
{
put("user", "Sayi");
put("showDate", new HashMap<String, Object>() {
{
put("date", "2020-02-10");
}
});
}
});
}
};
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/template/iterable_if1.docx");
template.render(datas);
XWPFDocument document = XWPFTestSupport.readNewDocument(template);
XWPFTable table = document.getTableArray(0);
XWPFTableCell cell = table.getRow(1).getCell(0);
XWPFHeader header = document.getHeaderArray(0);
testParagraph(document);
testParagraph(cell);
testParagraph(header);
}
示例12
private void addWaterMark(Object obj, String watermark, String color) {
if (obj instanceof XWPFDocument) {
XWPFDocument doc = (XWPFDocument) obj;
// create header-footer
XWPFHeaderFooterPolicy headerFooterPolicy = doc.getHeaderFooterPolicy();
if (headerFooterPolicy == null) headerFooterPolicy = doc.createHeaderFooterPolicy();
// create default Watermark - fill color black and not rotated
headerFooterPolicy.createWatermark(watermark);
// get the default header
// Note: createWatermark also sets FIRST and EVEN headers
// but this code does not updating those other headers
XWPFHeader header = headerFooterPolicy.getHeader(XWPFHeaderFooterPolicy.DEFAULT);
XWPFParagraph paragraph = header.getParagraphArray(0);
// get com.microsoft.schemas.vml.CTShape where fill color and rotation is set
XmlObject[] xmlobjects = paragraph.getCTP().getRArray(0).getPictArray(0).selectChildren(new QName("urn:schemas-microsoft-com:vml", "shape"));
if (xmlobjects.length > 0) {
com.microsoft.schemas.vml.CTShape ctshape = (com.microsoft.schemas.vml.CTShape)xmlobjects[0];
// set fill color
ctshape.setFillcolor(color);
// set rotation
ctshape.setStyle(ctshape.getStyle() + ";rotation:315");
}
} else if (obj instanceof HWPFDocument) {
}
}
示例13
/**
* 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
* @param monitor
* used to track the progress will generating
* @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, Monitor monitor) throws DocumentParserException {
final DocumentTemplate result = (DocumentTemplate) EcoreUtil.create(TemplatePackage.Literals.DOCUMENT_TEMPLATE);
final ResourceImpl r = new ResourceImpl(templateURI);
try {
monitor.beginTask("Parsing " + templateURI, TOTAL_PARSE_MONITOR_WORK);
monitor.subTask("Loading template");
// resources are closed in DocumentTemplate.close()
final InputStream is = uriConverter.createInputStream(templateURI);
final OPCPackage oPackage = OPCPackage.open(is);
final XWPFDocument document = new XWPFDocument(oPackage);
nextSubTask(monitor, LOAD_TEMPLATE_MONITOR_WORK, "Parsing template custom properties");
final List<TemplateValidationMessage> messages = parseTemplateCustomProperties(queryEnvironment,
classProvider, document);
r.getContents().add(result);
nextSubTask(monitor, PARSE_TEMPLATE_CUSTOM_PROPERTIES_MONITOR_WORK, "Parsing template body");
final int unitOfWork = PARSE_TEMPLATE_MONITOR_WORK
/ (1 + document.getFooterList().size() + document.getHeaderList().size());
final M2DocParser parser = new M2DocParser(document, queryEnvironment);
final Block documentBody = parser.parseBlock(result.getTemplates(), TokenType.EOF);
for (TemplateValidationMessage validationMessage : messages) {
documentBody.getValidationMessages().add(validationMessage);
}
result.setBody(documentBody);
result.setInputStream(is);
result.setOpcPackage(oPackage);
result.setDocument(document);
nextSubTask(monitor, unitOfWork, "Parsing template footers");
for (XWPFFooter footer : document.getFooterList()) {
final M2DocParser footerParser = new M2DocParser(footer, queryEnvironment);
result.getFooters().add(footerParser.parseBlock(null, TokenType.EOF));
monitor.worked(unitOfWork);
}
nextSubTask(monitor, 0, "Parsing template headers");
for (XWPFHeader header : document.getHeaderList()) {
final M2DocParser headerParser = new M2DocParser(header, queryEnvironment);
result.getHeaders().add(headerParser.parseBlock(null, TokenType.EOF));
monitor.worked(unitOfWork);
}
} catch (IOException e) {
throw new DocumentParserException("Unable to open " + templateURI, e);
} catch (InvalidFormatException e1) {
throw new DocumentParserException("Invalid .docx format " + templateURI, e1);
} finally {
monitor.done();
}
return result;
}