blob: fe3c14ff3545253622a76efa2801f257b616aef4 [file] [log] [blame]
package opennlp.tools.similarity.apps.solr;
import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
import javax.xml.bind.JAXBException;
import org.docx4j.XmlUtils;
import org.docx4j.jaxb.Context;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.CommentsPart;
import org.docx4j.openpackaging.parts.WordprocessingML.EndnotesPart;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import org.docx4j.wml.CTEndnotes;
import org.docx4j.wml.CTFtnEdn;
import org.docx4j.wml.Comments;
public class CommentsRel {
private WordprocessingMLPackage wordMlPackage;
private MainDocumentPart mainPart;
private boolean relSet = false;
private org.docx4j.wml.ObjectFactory wmlObjectFactory;
private CommentsPart cmPart;
public CommentsRel(WordprocessingMLPackage wordMLPack) {
this.wordMlPackage = wordMLPack;
wmlObjectFactory = new org.docx4j.wml.ObjectFactory();
setCommentRel();
cmPart = wordMlPackage.getMainDocumentPart().getCommentsPart();
mainPart = wordMLPack.getMainDocumentPart();
}
private void setCommentRel() {
if (!commentRelSet()) {
CommentsPart cp;
try {
cp = new CommentsPart();
// Part must have minimal contents
Comments comments = wmlObjectFactory.createComments();
cp.setJaxbElement(comments);
wordMlPackage.getMainDocumentPart().addTargetPart(cp);
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private boolean commentRelSet() {
return !(wordMlPackage.getMainDocumentPart().getCommentsPart() == null);
}
public void addNewComment(String author, String text) {
// XMLGregorianCalendar xmlCal = new XMLGregorianCalendarImpl(); // You'll need to fix this!
// CommentRangeEnd cRangeEnde = wmlObjectFactory.createCommentRangeEnd();
// CommentRangeStart cRangeStart = wmlObjectFactory
// .createCommentRangeStart();
Comments comment = wmlObjectFactory.createComments();
// Comments.Comment myCom = wm
org.docx4j.wml.Comments.Comment c = Context.getWmlObjectFactory().createCommentsComment();
System.out.println("test");
// comment.setParent(cmPart);
c.setAuthor(author);
// c.setDate(xmlCal);
cmPart.getJaxbElement().getComment().add(c);
System.out.println("test ende");
}
// WordprocessingMLPackage wordML;
public static void main(String args[]) throws IOException {
File document = new File("C:/workspace/TestSolr/mydoc.docx");
MainDocumentPart mDocPart;
try {
/* mlPackage = new WordprocessingMLPackage().load(new File(document.getCanonicalPath()));
mDocPart = mlPackage.getMainDocumentPart();
CommentsRel myComment = new CommentsRel(mlPackage);
myComment.addNewComment("MC","Text");
*/
// Add an endnote
WordprocessingMLPackage mlPackage = WordprocessingMLPackage.createPackage();
// Setup endnotes part
EndnotesPart ep = new EndnotesPart();
CTEndnotes endnotes = Context.getWmlObjectFactory().createCTEndnotes();
ep.setJaxbElement(endnotes);
mlPackage.getMainDocumentPart().addTargetPart(ep);
CTFtnEdn endnote = Context.getWmlObjectFactory().createCTFtnEdn();
endnotes.getEndnote().add(endnote);
endnote.setId(BigInteger.ONE.add(BigInteger.ONE));
String endnoteBody = "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ><w:pPr><w:pStyle w:val=\"EndnoteText\"/></w:pPr><w:r><w:rPr><w:rStyle w:val=\"EndnoteReference\"/></w:rPr><w:endnoteRef/></w:r><w:r><w:t xml:space=\"preserve\"> An endnote</w:t></w:r></w:p>";
try {
endnote.getEGBlockLevelElts().add( XmlUtils.unmarshalString(endnoteBody));
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Add the body text referencing it
String docBody = "<w:p xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ><w:r><w:t>the quick brown</w:t></w:r><w:r><w:rPr><w:rStyle w:val=\"EndnoteReference\"/></w:rPr><w:endnoteReference w:id=\"2\"/></w:r></w:p>";
try {
mlPackage.getMainDocumentPart().addParagraph(docBody);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mlPackage.save(new File("C:/workspace/TestSolr/mydoc.docx-OUT.docx"));
} catch (Docx4JException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}