2016-10-09 2 views

답변

2

워드 문서에 각주를 추가하는 가장 좋은 방법인지는 확실치 않지만 작동하지 않습니다. 각주가 단어를 사용하여 추가 된 문서의 Open XML을 검토 한 후 각주가 필요함은 물론 단락 안의 참조 및 선택적으로 강력히 권장되는 3 가지 스타일을 발견했습니다.

문서에 각주를 추가하려면 CTFtnEdn 인스턴스가 필요하며 이는 CTFtnEdn.Factory.newInstance()을 사용하여 얻을 수 있습니다. 이제 단어를 사용하여 만든 내가 각주 안에있는 내용을 참조 각주의 내용을 추가합니다 :

<xml-fragment w:id="1" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape"> 
    <w:p w:rsidR="00B87AAC" w:rsidRDefault="00B87AAC"> 
     <w:pPr> 
      <w:pStyle w:val="FootnoteText"/> 
     </w:pPr> 
     <w:r> 
      <w:rPr> 
       <w:rStyle w:val="FootnoteReference"/> 
      </w:rPr> 
      <w:footnoteRef/> 
     </w:r> 
     <w:r> 
      <w:t xml:space="preserve">Here is a Footnote</w:t> 
     </w:r> 
     <w:bookmarkStart w:id="0" w:name="_GoBack"/> 
     <w:bookmarkEnd w:id="0"/> 
    </w:p> 
</xml-fragment> 

을 그리고 여기에 자바를 사용하는 것이 제작의 예입니다

하면 태그 된 후에는 CTFtnEdn 인스턴스에 추가 된 경우 document.addFootnote()을 사용하여 WMPFDocument에 추가해야합니다.

이제 문서의 단락에 대한 참조를 추가하십시오. 각주가 참조없이 페이지 하단에 표시 될 것 같지 않습니다. 참조에 대한 오픈 XML처럼 보이는 다음 첨자 세와 각주에게 그것의 자신 만의 스타일을 제공하기 위해

ctr = document.getParagraphArray(0).getCTP().addNewR(); 
ctr.addNewRPr().addNewRStyle().setVal("FootnoteReference"); 
ctr.addNewFootnoteReference().setId(id); 

:

<w:r w:rsidR="00B87AAC"> 
    <w:rPr> 
     <w:rStyle w:val="FootnoteReference"/> 
    </w:rPr> 
    <w:footnoteReference w:id="1"/> 
</w:r> 

이 쉽게 아래의 코드를 사용하여 자바에서 할 수 있습니다 스타일을 추가해야합니다.

<w:style w:styleId="FootnoteReference" w:type="character"> 
    <w:name w:val="footnote reference"/> 
    <w:basedOn w:val="DefaultParagraphFont"/> 
    <w:uiPriority w:val="99"/> 
    <w:semiHidden/> 
    <w:unhideWhenUsed/> 
    <w:rPr> 
     <w:vertAlign w:val="superscript"/> 
    </w:rPr> 
</w:style> 
<w:style w:styleId="FootnoteText" w:type="paragraph"> 
    <w:name w:val="footnote text"/> 
    <w:basedOn w:val="Normal"/> 
    <w:link w:val="FootnoteTextChar"/> 
    <w:uiPriority w:val="99"/> 
    <w:semiHidden/> 
    <w:unhideWhenUsed/> 
    <w:rPr> 
     <w:sz w:val="20"/> 
     <w:szCs w:val="20"/> 
    </w:rPr> 
</w:style> 
<w:style w:customStyle="1" w:styleId="FootnoteTextChar" w:type="character"> 
    <w:name w:val="Footnote Text Char"/> 
    <w:basedOn w:val="DefaultParagraphFont"/> 
    <w:link w:val="FootnoteText"/> 
    <w:uiPriority w:val="99"/> 
    <w:semiHidden/> 
    <w:rPr> 
     <w:sz w:val="20"/> 
     <w:szCs w:val="20"/> 
    </w:rPr> 
</w:style> 

그리고 자바에서 이것을 추가 : 다음은 모두 세 가지의 오픈 XML은

document.getStyles().addStyle(new XWPFStyle(style))이 문서에 새 스타일을 추가하는 데 사용 된 공지 것을
CTStyle style = CTStyle.Factory.newInstance(); 
style.setStyleId("FootnoteReference"); 
style.setType(STStyleType.CHARACTER); 
style.addNewName().setVal("footnote reference"); 
style.addNewBasedOn().setVal("DefaultParagraphFont"); 
style.addNewUiPriority().setVal(new BigInteger("99")); 
style.addNewSemiHidden(); 
style.addNewUnhideWhenUsed(); 
style.addNewRPr().addNewVertAlign().setVal(STVerticalAlignRun.SUPERSCRIPT); 

document.getStyles().addStyle(new XWPFStyle(style)); 

style = CTStyle.Factory.newInstance(); 
style.setType(STStyleType.PARAGRAPH); 
style.setStyleId("FootnoteText"); 
style.addNewName().setVal("footnote text"); 
style.addNewBasedOn().setVal("Normal"); 
style.addNewLink().setVal("FootnoteTextChar"); 
style.addNewUiPriority().setVal(new BigInteger("99")); 
style.addNewSemiHidden(); 
style.addNewUnhideWhenUsed(); 
CTRPr rpr = style.addNewRPr(); 
rpr.addNewSz().setVal(new BigInteger("20")); 
rpr.addNewSzCs().setVal(new BigInteger("20")); 

document.getStyles().addStyle(new XWPFStyle(style)); 

style = CTStyle.Factory.newInstance(); 
style.setCustomStyle(STOnOff.X_1); 
style.setStyleId("FootnoteTextChar"); 
style.setType(STStyleType.CHARACTER); 
style.addNewName().setVal("Footnote Text Char"); 
style.addNewBasedOn().setVal("DefaultParagraphFont"); 
style.addNewLink().setVal("FootnoteText"); 
style.addNewUiPriority().setVal(new BigInteger("99")); 
style.addNewSemiHidden(); 
rpr = style.addNewRPr(); 
rpr.addNewSz().setVal(new BigInteger("20")); 
rpr.addNewSzCs().setVal(new BigInteger("20")); 

document.getStyles().addStyle(new XWPFStyle(style)); 

.

public static void main(String[] args) throws FileNotFoundException, IOException, XmlException{ 
    // create doc 
    XWPFDocument document = new XWPFDocument(); 

    // some sample text 
    document.createParagraph().createRun().setText("This is a Test."); 

    // check to add footnotes in case of empty 
    if (document.getFootnotes().isEmpty()){ 
     document.createFootnotes(); 
    } 

    // add footnote 
    CTFtnEdn ctfInstance = CTFtnEdn.Factory.newInstance(); 

    BigInteger id = new BigInteger("1"); 

    ctfInstance.setId(id); 
    CTP ctp = ctfInstance.addNewP(); 

    ctp.addNewPPr().addNewPStyle().setVal("FootnoteText"); 

    CTR ctr = ctp.addNewR(); 
    ctr.addNewRPr().addNewRStyle().setVal("FootnoteReference"); 
    ctr.addNewFootnoteRef(); 

    CTText cttext = ctp.addNewR().addNewT(); 
    cttext.setStringValue("This should be a footnote"); 
    cttext.setSpace(SpaceAttribute.Space.PRESERVE); 

    // add footnote to document 
    document.addFootnote(ctfInstance); 

    // add reference to footnote at end of first paragraph 
    ctr = document.getParagraphArray(0).getCTP().addNewR(); 
    ctr.addNewRPr().addNewRStyle().setVal("FootnoteReference"); 
    ctr.addNewFootnoteReference().setId(id); 

    // styles 

    // if styles dont already exist then create them 
    if (document.getStyles()==null){ 
     document.createStyles(); 
    } 

    CTStyle style = CTStyle.Factory.newInstance(); 
    style.setStyleId("FootnoteReference"); 
    style.setType(STStyleType.CHARACTER); 
    style.addNewName().setVal("footnote reference"); 
    style.addNewBasedOn().setVal("DefaultParagraphFont"); 
    style.addNewUiPriority().setVal(new BigInteger("99")); 
    style.addNewSemiHidden(); 
    style.addNewUnhideWhenUsed(); 
    style.addNewRPr().addNewVertAlign().setVal(STVerticalAlignRun.SUPERSCRIPT); 

    // add style 
    document.getStyles().addStyle(new XWPFStyle(style)); 

    style = CTStyle.Factory.newInstance(); 
    style.setType(STStyleType.PARAGRAPH); 
    style.setStyleId("FootnoteText"); 
    style.addNewName().setVal("footnote text"); 
    style.addNewBasedOn().setVal("Normal"); 
    style.addNewLink().setVal("FootnoteTextChar"); 
    style.addNewUiPriority().setVal(new BigInteger("99")); 
    style.addNewSemiHidden(); 
    style.addNewUnhideWhenUsed(); 
    CTRPr rpr = style.addNewRPr(); 
    rpr.addNewSz().setVal(new BigInteger("20")); 
    rpr.addNewSzCs().setVal(new BigInteger("20")); 

    // add style 
    document.getStyles().addStyle(new XWPFStyle(style)); 

    style = CTStyle.Factory.newInstance(); 
    style.setCustomStyle(STOnOff.X_1); 
    style.setStyleId("FootnoteTextChar"); 
    style.setType(STStyleType.CHARACTER); 
    style.addNewName().setVal("Footnote Text Char"); 
    style.addNewBasedOn().setVal("DefaultParagraphFont"); 
    style.addNewLink().setVal("FootnoteText"); 
    style.addNewUiPriority().setVal(new BigInteger("99")); 
    style.addNewSemiHidden(); 
    rpr = style.addNewRPr(); 
    rpr.addNewSz().setVal(new BigInteger("20")); 
    rpr.addNewSzCs().setVal(new BigInteger("20")); 

    // add style 
    document.getStyles().addStyle(new XWPFStyle(style)); 

    // save document 
    FileOutputStream out = new FileOutputStream(new File("yourPathHere.docx")); 
    document.write(out); 
    out.close(); 
} 
: 여기

SSCCE (끝에서 출력 경로를 변경해야 함) 인