/** * Returns numbering format for this paragraph, eg bullet or * lowerLetter. * Returns null if this paragraph does not have numeric style. */ public String getNumFmt() { BigInteger numID = getNumID(); XWPFNumbering numbering = document.getNumbering(); if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); if (num != null) { BigInteger ilvl = getNumIlvl(); BigInteger abstractNumId = num.getCTNum().getAbstractNumId().getVal(); CTAbstractNum anum = numbering.getAbstractNum(abstractNumId).getAbstractNum(); CTLvl level = null; for (int i = 0; i < anum.sizeOfLvlArray(); i++) { CTLvl lvl = anum.getLvlArray(i); if (lvl.getIlvl().equals(ilvl)) { level = lvl; break; } } if (level != null && level.getNumFmt() != null && level.getNumFmt().getVal() != null) { return level.getNumFmt().getVal().toString(); } } } return null; }
/** * Creates an empty numbering if one does not already exist and sets the numbering member * * @return numbering */ public XWPFNumbering createNumbering() { if (numbering == null) { NumberingDocument numberingDoc = NumberingDocument.Factory.newInstance(); XWPFRelation relation = XWPFRelation.NUMBERING; int i = getRelationIndex(relation); XWPFNumbering wrapper = (XWPFNumbering) createRelationship(relation, XWPFFactory.getInstance(), i); wrapper.setNumbering(numberingDoc.addNewNumbering()); numbering = wrapper; } return numbering; }
/** * save and commit numbering */ @Override protected void commit() throws IOException { XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "numbering")); PackagePart part = getPackagePart(); OutputStream out = part.getOutputStream(); ctNumbering.save(out, xmlOptions); out.close(); }
/** * return the abstractNumID * If the AbstractNumID not exists * return null * * @param numID * @return abstractNumID */ public BigInteger getAbstractNumID(BigInteger numID) { XWPFNum num = getNum(numID); if (num == null) return null; if (num.getCTNum() == null) return null; if (num.getCTNum().getAbstractNumId() == null) return null; return num.getCTNum().getAbstractNumId().getVal(); } }
private ParagraphLevelCounter loadLevelTuples(CTDecimalNumber abNum) { //Unfortunately, we need to go this far into the underlying structure //to get the abstract num information for the edge case where //someone skips a level and the format is not context-free, e.g. "1.B.i". XWPFAbstractNum abstractNum = numbering.getAbstractNum(abNum.getVal()); CTAbstractNum ctAbstractNum = abstractNum.getCTAbstractNum(); LevelTuple[] levels = new LevelTuple[ctAbstractNum.sizeOfLvlArray()]; for (int i = 0; i < levels.length; i++) { levels[i] = buildTuple(i, ctAbstractNum.getLvlArray(i)); } return new ParagraphLevelCounter(levels); }
XWPFAbstractNum numAbstract = numbering.getAbstractNum(BigInteger.ONE); run.setText("Items " + nx.toString()); BigInteger numId = numbering.addNum(numAbstract.getAbstractNum().getAbstractNumId()); XWPFNum num = numbering.getNum(numId); CTNumLvl lvloverride = num.getCTNum().addNewLvlOverride(); lvloverride.setIlvl(BigInteger.ZERO);
xwpfAbstractNum = numberingMerge.getAbstractNum(xwpfNum.getCTNum().getAbstractNumId().getVal()); if (null == xwpfAbstractNum) { LOG.warn("cannot find cTAbstractNum by XWPFNum."); BigInteger numID = numbering.addNum(numbering.addAbstractNum(new XWPFAbstractNum(cTAbstractNum)));
while (!found) Object o = numbering.getAbstractNum(id); found = (o == null); if (!found) id = id.add(BigInteger.ONE); id = numbering.addAbstractNum(abs);
public BigInteger addNewNumbericId(Pair<Enum, String> numFmt) { XWPFNumbering numbering = this.getNumbering(); if (null == numbering) { numbering = this.createNumbering(); } NumberingWrapper numberingWrapper = new NumberingWrapper(numbering); CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance(); // if we have an existing document, we must determine the next // free number first. cTAbstractNum .setAbstractNumId(BigInteger.valueOf(numberingWrapper.getAbstractNumsSize() + 10)); Enum fmt = numFmt.getLeft(); String val = numFmt.getRight(); CTLvl cTLvl = cTAbstractNum.addNewLvl(); cTLvl.addNewNumFmt().setVal(fmt); cTLvl.addNewLvlText().setVal(val); cTLvl.addNewStart().setVal(BigInteger.valueOf(1)); cTLvl.setIlvl(BigInteger.valueOf(0)); if (fmt == STNumberFormat.BULLET) { cTLvl.addNewLvlJc().setVal(STJc.LEFT); } else { // cTLvl.setIlvl(BigInteger.valueOf(0)); } XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); return numbering.addNum(abstractNumID); }
} else if (relation.equals(XWPFRelation.NUMBERING.getRelation())) { this.numbering = (XWPFNumbering) p; this.numbering.onDocumentRead(); } else if (relation.equals(XWPFRelation.FOOTER.getRelation())) { XWPFFooter footer = (XWPFFooter) p;
XWPFNumbering numberingDocx2 = docx2.createNumbering(); try { Field f = numberingDocx1.getClass().getDeclaredField("ctNumbering"); f.setAccessible(true); numberingDocx2.setNumbering((CTNumbering)f.get(numberingDocx1)); } catch (NoSuchFieldException nsfex) { } catch (IllegalAccessException iaex) {
private XWPFNumbering loadNumbering(PackagePart packagePart) { try { PackageRelationshipCollection numberingParts = packagePart.getRelationshipsByType(XWPFRelation.NUMBERING.getRelation()); if (numberingParts.size() > 0) { PackageRelationship numberingRelationShip = numberingParts.getRelationship(0); if (numberingRelationShip == null) { return null; } PackagePart numberingPart = container.getPart(numberingRelationShip); if (numberingPart == null) { return null; } return new XWPFNumbering(numberingPart); } } catch (IOException | OpenXML4JException e) { LOG.warn("Couldn't load numbering", e); } return null; }
XWPFNumbering numbering = document.getNumbering(); if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID);
protected XWPFAbstractNum getXWPFAbstractNum( XWPFNum num ) { CTDecimalNumber abstractNumID = num.getCTNum().getAbstractNumId(); XWPFAbstractNum abstractNum = document.getNumbering().getAbstractNum( abstractNumID.getVal() ); return abstractNum; }
} else if (relation.equals(XWPFRelation.NUMBERING.getRelation())) { this.numbering = (XWPFNumbering) p; this.numbering.onDocumentRead(); } else if (relation.equals(XWPFRelation.FOOTER.getRelation())) { XWPFFooter footer = (XWPFFooter) p;
private XWPFNumbering loadNumbering(PackagePart packagePart) { try { PackageRelationshipCollection numberingParts = packagePart.getRelationshipsByType(XWPFRelation.NUMBERING.getRelation()); if (numberingParts.size() > 0) { PackageRelationship numberingRelationShip = numberingParts.getRelationship(0); if (numberingRelationShip == null) { return null; } PackagePart numberingPart = container.getPart(numberingRelationShip); if (numberingPart == null) { return null; } return new XWPFNumbering(numberingPart); } } catch (IOException | OpenXML4JException e) { LOG.warn("Couldn't load numbering", e); } return null; }
XWPFNumbering numbering = document.getNumbering(); if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); if (num != null) { BigInteger ilvl = getNumIlvl(); XWPFAbstractNum xwpfAbstractNum = numbering.getAbstractNum(abstractNumId);
public String getFormattedNumber(BigInteger numId, int iLvl) { if (numbering == null || iLvl < 0 || numId == null) { return ""; } int currNumId = numId.intValue(); XWPFNum xwpfNum = numbering.getNum(numId); if (xwpfNum == null) { return ""; } CTNum ctNum = xwpfNum.getCTNum(); CTDecimalNumber abNum = ctNum.getAbstractNumId(); int currAbNumId = abNum.getVal().intValue(); ParagraphLevelCounter lc = listLevelMap.get(currAbNumId); LevelTuple[] overrideTuples = overrideTupleMap.get(currNumId); if (lc == null) { lc = loadLevelTuples(abNum); } if (overrideTuples == null) { overrideTuples = loadOverrideTuples(ctNum, lc.getNumberOfLevels()); } String formattedString = lc.incrementLevel(iLvl, overrideTuples); listLevelMap.put(currAbNumId, lc); overrideTupleMap.put(currNumId, overrideTuples); return formattedString; }
protected XWPFAbstractNum getXWPFAbstractNum( XWPFNum num ) { CTDecimalNumber abstractNumID = num.getCTNum().getAbstractNumId(); XWPFAbstractNum abstractNum = document.getNumbering().getAbstractNum( abstractNumID.getVal() ); return abstractNum; }
/** * read numbering form an existing package */ @Override protected void onDocumentRead() throws IOException { NumberingDocument numberingDoc = null; InputStream is; is = getPackagePart().getInputStream(); try { numberingDoc = NumberingDocument.Factory.parse(is, DEFAULT_XML_OPTIONS); ctNumbering = numberingDoc.getNumbering(); //get any Nums for (CTNum ctNum : ctNumbering.getNumArray()) { nums.add(new XWPFNum(ctNum, this)); } for (CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumArray()) { abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); } isNew = false; } catch (XmlException e) { throw new POIXMLException(); } finally { is.close(); } }