2013-06-13 6 views
3

내 Word 문서에서 docx4j를 사용하여 글 머리 기호로 번호가없는 목록을 만들고 싶습니다. 나는이 일을하기로되어있는 다음 코드를 발견했다. 그러나 내가 시도한 것은 무엇이든, 생성 된 목록은 번호가 매겨진 목록입니다! Word 2010, 독일어 버전 및 docx4j-2.8.1을 사용합니다.docx4j 번호 매기기/글 머리 기호 목록 만들기

wordMLPackage = WordprocessingMLPackage.createPackage(); 

    ObjectFactory factory = new org.docx4j.wml.ObjectFactory(); 
    P p = factory.createP(); 

    org.docx4j.wml.Text t = factory.createText(); 
    t.setValue(text); 

    org.docx4j.wml.R run = factory.createR(); 
    run.getContent().add(t); 

    p.getContent().add(run); 

    org.docx4j.wml.PPr ppr = factory.createPPr(); 

    p.setPPr(ppr); 

    // Create and add <w:numPr> 
    NumPr numPr = factory.createPPrBaseNumPr(); 
    ppr.setNumPr(numPr); 

    // The <w:ilvl> element 
    Ilvl ilvlElement = factory.createPPrBaseNumPrIlvl(); 
    numPr.setIlvl(ilvlElement); 
    ilvlElement.setVal(BigInteger.valueOf(0)); 

    // The <w:numId> element 
    NumId numIdElement = factory.createPPrBaseNumPrNumId(); 
    numPr.setNumId(numIdElement); 
    numIdElement.setVal(BigInteger.valueOf(1)); 

    wordMLPackage.getMainDocumentPart().addObject(p); 

진정한 정렬되지 않은 맹목적 목록을 생성하는 사람이 있습니까?

답변

0

게시 한 코드에 "목록 번호 1, 레벨 0 사용"이라고 나와 있습니다.

분명히 그 목록은 번호가 매겨진 목록입니다.

번호 매기기 정의 부분에서 글 머리 기호 목록을보고 사용하십시오.

글 머리 기호 목록이없는 경우 추가해야합니다. 샘플 docx를 docx4j 온라인 데모에 업로드하여 적절한 컨텐츠를 생성 할 수 있습니다. 또는 수행 방법에 대한 예제는 ListHelper을 참조하십시오.

+0

ListHelper에 대한 링크가 작동하지 않습니다. –

+0

이 자료는 현재 별도의 프로젝트에 있습니다. https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/main/java/org/docx4j/convert/in/xhtml/ListHelper.java – JasonPlutext

+2

"사용 목록 번호 1, 레벨 0"에서 번호가 매겨진 목록임을 아는 방법을 설명하십시오. – MondKin

1

희망이 도움이됩니다.

import org.docx4j.XmlUtils; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.WordprocessingML.NumberingDefinitionsPart; 
import org.docx4j.wml.*; 

import javax.xml.bind.JAXBException; 
import java.io.File; 
import java.math.BigInteger; 


public class GenerateBulletedList { 

private static final String BULLET_TEMPLATE ="<w:numbering xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">" + 
     "<w:abstractNum w:abstractNumId=\"0\">" + 
     "<w:nsid w:val=\"12D402B7\"/>" + 
     "<w:multiLevelType w:val=\"hybridMultilevel\"/>" + 
     "<w:tmpl w:val=\"AECAFC2E\"/>" + 
     "<w:lvl w:ilvl=\"0\" w:tplc=\"04090001\">" + 
     "<w:start w:val=\"1\"/>" + 
     "<w:numFmt w:val=\"bullet\"/>" + 
     "<w:lvlText w:val=\"\uF0B7\"/>" + 
     "<w:lvlJc w:val=\"left\"/>" + 
     "<w:pPr>" + 
     "<w:ind w:left=\"360\" w:hanging=\"360\"/>" + 
     "</w:pPr>" + 
     "<w:rPr>" + 
     "<w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/>" + 
     "</w:rPr>" + 
     "</w:lvl>" + 
     "</w:abstractNum>"+ 
     "<w:num w:numId=\"1\">" + 
     "<w:abstractNumId w:val=\"0\"/>" + 
     "</w:num>" + 
     "</w:numbering>"; 

public static void main(String[] args) throws Exception{ 

    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); 
    createBulletedList(wordMLPackage); 
    wordMLPackage.save(new File("Output.docx")); 
} 

private static void createBulletedList(WordprocessingMLPackage wordMLPackage)throws Exception{ 
    NumberingDefinitionsPart ndp = new NumberingDefinitionsPart(); 
    wordMLPackage.getMainDocumentPart().addTargetPart(ndp); 
    ndp.setJaxbElement((Numbering) XmlUtils.unmarshalString(BULLET_TEMPLATE)); 
    wordMLPackage.getMainDocumentPart().addObject(createParagraph("India")); 
    wordMLPackage.getMainDocumentPart().addObject(createParagraph("United Kingdom")); 
    wordMLPackage.getMainDocumentPart().addObject(createParagraph("France")); 

} 
private static P createParagraph(String country) throws JAXBException { 

    ObjectFactory factory = new org.docx4j.wml.ObjectFactory(); 
    P p = factory.createP(); 
    String text = 
      "<w:r xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">" + 
        " <w:rPr>" + 
        "<w:b/>" + 
        " <w:rFonts w:ascii=\"Arial\" w:cs=\"Arial\"/><w:sz w:val=\"16\"/>" + 
        " </w:rPr>" + 
        "<w:t>" + country + "</w:t>" + 
        "</w:r>"; 

    R r = (R) XmlUtils.unmarshalString(text); 
    org.docx4j.wml.R run = factory.createR(); 
    run.getContent().add(r); 

    p.getContent().add(run); 
    org.docx4j.wml.PPr ppr = factory.createPPr(); 

    p.setPPr(ppr); 
    // Create and add <w:numPr> 
    PPrBase.NumPr numPr = factory.createPPrBaseNumPr(); 
    ppr.setNumPr(numPr); 


    // The <w:numId> element 
    PPrBase.NumPr.NumId numIdElement = factory.createPPrBaseNumPrNumId(); 
    numPr.setNumId(numIdElement); 
    numIdElement.setVal(BigInteger.valueOf(1)); 
    return p; 
} 


} 
+0

@ NSNoob downvote하는 이유는 무엇입니까? –

+0

[내 downvote하지] (http://imgur.com/a/j4oEl). 자바에서 일하는 사람으로부터 온 것이어야하며 당신의 대답은 가난하다고 생각합니다. – NSNoob

+0

미안하지만 ... –

관련 문제