package org.docx4j.samples;
import java.io.File;
import java.math.BigInteger;
import org.docx4j.customxml.ObjectFactory;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.io.SaveToZipFile;
import org.docx4j.wml.STPageOrientation;
/**
* 创建ooxml文档
* @素馨花
* @version 1.0
*/
public class CreateWordprocessingMLDocument {
public static void main(String[] args) throws Exception {
System.out.println( "Creating package..");
//创建文档处理对象
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
//插入文字方法-1(快捷方法,忽略详细属性)
wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Title", "赛灵通(www.xerllent.cn)工作文档标题");
wordMLPackage.getMainDocumentPart().addParagraphOfText("赛灵通项目(Xerllent Projects)是一项基于j2ee技术的企业信息化系统研发计划!");
//插入文字方法-2(对象构造法,可以操作任何属性)
/**
* To get bold text, you must set the run's rPr@w:b,
* so you can't use the createParagraphOfText convenience method
* org.docx4j.wml.P p = wordMLPackage.getMainDocumentPart().createParagraphOfText("text");//创建无格式文本代码段
* */
org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory();//文档子对象工厂
org.docx4j.wml.P p = factory.createP();//创建段落P
//创建文本段R内容
org.docx4j.wml.R run = factory.createR();//创建文本段R
org.docx4j.wml.Text t = factory.createText();//创建文本段内容Text
t.setValue("text");
run.getRunContent().add(t);//Text添加到R
//设置文本段R属性,Optionally, set pPr/rPr@w:b
org.docx4j.wml.RPr rpr = factory.createRPr();
org.docx4j.wml.BooleanDefaultTrue b = new org.docx4j.wml.BooleanDefaultTrue();//创建带缺省值的boolen属性对象
b.setVal(true);
rpr.setB(b);
run.setRPr(rpr);//设置文本段R属性
p.getParagraphContent().add(run);//R添加到P
// 创建默认的段落属性,并加入到段落对象中去
org.docx4j.wml.PPr ppr = factory.createPPr();
org.docx4j.wml.ParaRPr paraRpr = factory.createParaRPr();
ppr.setRPr(paraRpr);
p.setPPr( ppr );//段落属性PPr添加到P
//将P段落添加到文档里
wordMLPackage.getMainDocumentPart().addObject(p);
//动态插入打印页面及分栏设置,这时一个A3幅面,页面分2栏的设置,试卷页面
org.docx4j.wml.SectPr sp= factory.createSectPr();
org.docx4j.wml.SectPr.PgSz pgsz=factory.createSectPrPgSz();//
pgsz.setW(BigInteger.valueOf(23814L));
pgsz.setH(BigInteger.valueOf(16840L));
pgsz.setOrient(STPageOrientation.LANDSCAPE);
pgsz.setCode(BigInteger.valueOf(8L));
sp.setPgSz(pgsz);
org.docx4j.wml.SectPr.PgMar pgmar= factory.createSectPrPgMar();//
pgmar.setTop(BigInteger.valueOf(1440));
pgmar.setRight(BigInteger.valueOf(1440));
pgmar.setBottom(BigInteger.valueOf(1440));
pgmar.setLeft(BigInteger.valueOf(1440));
pgmar.setHeader(BigInteger.valueOf(720));
pgmar.setFooter(BigInteger.valueOf(720));
sp.setPgMar(pgmar);
org.docx4j.wml.CTColumns cols=factory.createCTColumns();//
cols.setNum(BigInteger.valueOf(2));
cols.setSpace(BigInteger.valueOf(425));
sp.setCols(cols);
org.docx4j.wml.CTDocGrid grd=factory.createCTDocGrid();//
grd.setLinePitch(BigInteger.valueOf(360));
sp.setDocGrid(grd);
wordMLPackage.getMainDocumentPart().addObject(sp);
// 插入文字方法-3(更加简便快捷的插入内容方法,可以操作任何属性,但必须熟悉ooxml文档格式)
//自定义标签转化的时候,必须加xmlns:w=/"http://schemas.openxmlformats.org/wordprocessingml/2006/main/"语句
String str = "
Bold, just at w:r level
";wordMLPackage.getMainDocumentPart().addObject(org.docx4j.XmlUtils.unmarshalString(str));
//自定义标签转化的时候,必须加xmlns:w=/"http://schemas.openxmlformats.org/wordprocessingml/2006/main/"语句
String str1 = "";
wordMLPackage.getMainDocumentPart().addObject(org.docx4j.XmlUtils.unmarshalString(str1) );
System.out.println( ".. done!");
// Now save it
wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/sample-docs/bolds.docx") );
System.out.println("Done.");
}
}