org.docx4j.finders.SectPrFinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of docx4j Show documentation
Show all versions of docx4j Show documentation
docx4j is a library which helps you to work with the Office Open
XML file format as used in docx
documents, pptx presentations, and xlsx spreadsheets.
package org.docx4j.finders;
import java.util.ArrayList;
import java.util.List;
import org.docx4j.TraversalUtil.CallbackImpl;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import org.docx4j.wml.P;
import org.docx4j.wml.SectPr;
public class SectPrFinder extends CallbackImpl {
/*
* There can be a body level sectPr.
*
* Other sectPr are typically in a top level paragraph.
*
* They can also be in a rich text content control.
*
* (Word won't let you copy/paste a sectPr into a table cell.
* And if you put one there in the XML, on opening, Word will
* display the table, but gets a bit confused - it may show it
* twice the second time on a separate page. On save, the
* sectPr will be retained. If you put the sectPr in a
* content control in a tc, the behaviour is similar. )
*
* If you put a sectPr in a text box, Word can open the
* docx, and shows it as a page break. But trying to
* do that from within the Word UI results in:
* "You cannot put section breaks into a header, footer,
* footnote, endnote, comment, text box, callout, or macro."
*
* Based on the above, this finder looks for the sectPr
* only:
* - body level sectPr
* - top level P
* - inside a p in a content control (but not in a
* table)
*/
private List sectPrList = new ArrayList();
private SectPr bodyLevel = null;
public SectPrFinder(MainDocumentPart mdp) {
// Handle the body level one
if (mdp.getJaxbElement().getBody().getSectPr()!=null) {
bodyLevel = mdp.getJaxbElement().getBody().getSectPr();
}
}
private SectPrFinder(){};
/**
* Note that the body level sectPr (if there is one)
* is at the start of the list.
*
* @return the sectPrList
*/
@Deprecated
public List getSectPrList() {
if (bodyLevel!=null ) {
sectPrList.remove(bodyLevel);
sectPrList.add(0, bodyLevel);
}
return sectPrList;
}
/**
* The body level sectPr (if there is one)
* is at the end of the list.
*
* @return the sectPrList
*/
public List getOrderedSectPrList() {
if (bodyLevel!=null ) {
sectPrList.remove(bodyLevel); // in case user has previously called this method or the deprecated getSectPrList()
sectPrList.add(bodyLevel);
}
return sectPrList;
}
@Override
public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy