Apache POI를 사용하여 단어 문서 (.docx
)에 각주를 추가하려면 어떻게해야합니까? I know how to retrieve footnotes already in the document,하지만 실제로 추가 할 수는 없습니다.단어 문서에 각주 추가
0
A
답변
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 (끝에서 출력 경로를 변경해야 함) 인
관련 문제
- 1. svg 문서에 커브를 추가 단어
- 2. 많은 단어 문서에 머리말과 꼬리말을 추가 하시겠습니까?
- 3. 자바를 사용하여 단어 문서에 대한 참조 추가
- 4. 날짜를 단어 문서에 삽입하십시오.
- 5. 파이썬에서 단어 문서에 단어 개수를 얻는 방법?
- 6. RTF 문서에 목차 추가
- 7. 단어 문서에 rtf 텍스트 삽입
- 8. 문서에 단어 수가 포함되어 있습니다.
- 9. 단어 수는 Vim 문서에 인쇄됩니다.
- 10. 파일이 단어 문서에 첨부되어 있습니다.
- 11. 특정 위치의 단어 문서에 여러 이미지 추가 OpenXML
- 12. 특정 단어 2007 문서에 Word 추가 기능 2007을 추가하는 방법
- 13. 텍스트 선택 및 각주 삽입
- 14. 단어 문서 본문 글꼴 및 각주 글꼴 변경
- 15. Markdown 각주
- 16. 유액, 각주
- 17. ggplot2 각주
- 18. 각주 $ http.get
- 19. BufferedImage를 PDFBox 문서에 추가
- 20. 기존 문서에 이미지 추가
- 21. solr 문서에 덧글 추가
- 22. 문서에 Jquery 플러그인 추가
- 23. 문서에 하위 문서 추가
- 24. XSLT 결과 문서에 추가
- 25. FlowDocuments 문서에 꼬리말 추가
- 26. RTF 문서에 이미지 추가
- 27. 워드 문서에 추가 할 때 그림이 겹칩니다.
- 28. 페이지의 각주 변경 URL
- 29. VBA 매크로를 사용하여 단어 문서에 추가하는 방법
- 30. C# 오류 텍스트 문서에 단어 문서 복사