use of org.docx4j.wml.Body in project Java-Tutorial by gpcodervn.
the class Docx4jUtils method setPageMargins.
/**
* Set document page margins to 50 pixels
*/
private void setPageMargins() {
try {
Body body = wordMLPackage.getMainDocumentPart().getContents().getBody();
PageDimensions page = new PageDimensions();
PgMar pgMar = page.getPgMar();
pgMar.setBottom(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setTop(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setLeft(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setRight(BigInteger.valueOf(pixelsToDxa(50)));
SectPr sectPr = factory.createSectPr();
body.setSectPr(sectPr);
sectPr.setPgMar(pgMar);
} catch (Docx4JException e) {
e.printStackTrace();
}
}
use of org.docx4j.wml.Body in project docx4j-template by vindell.
the class Docx4j_替换模板 method replaceTemplateDocx.
public void replaceTemplateDocx() throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
HashMap<String, String> staticMap = getStaticData();
// 替换普通变量
documentPart.variableReplace(staticMap);
Document document = (Document) documentPart.getContents();
Body body = document.getBody();
MyTblFinder tblFinder = new MyTblFinder();
new TraversalUtil(body, tblFinder);
// 替换表格模板第三行数据
Tbl firstTbl = tblFinder.getTbls().get(0);
List<Object> trObjList = firstTbl.getContent();
Tr tr = (Tr) trObjList.get(2);
replaceTrTotalData(tr, getTotalData());
int lvlIndex = 3;
// 替换表格模板第四行数据
int lvlTotalSize = 4;
tr = (Tr) trObjList.get(lvlIndex);
List<String[]> lvDataList = getLvDataList(lvlTotalSize);
replaceTrData(firstTbl, tr, lvDataList, lvlIndex);
// 重新获取表格数据
trObjList = firstTbl.getContent();
int sexTotalSize = 2;
// 替换表格模板第五行数据
tr = (Tr) trObjList.get(lvlIndex + lvlTotalSize);
List<String[]> sexDataList = getSexDataList(2);
replaceTrSexData(tr, sexDataList.get(0));
// 替换表格模板第六行数据
tr = (Tr) trObjList.get(4 + lvlTotalSize);
replaceTrSexData(tr, sexDataList.get(1));
// 替换表格模板第七行数据
tr = (Tr) trObjList.get(5 + lvlTotalSize);
int nationTotalSize = 56;
List<String[]> nationDataList = getNationDataList(nationTotalSize);
replaceTrData(firstTbl, tr, nationDataList, lvlIndex + lvlTotalSize + sexTotalSize);
// 合并层次单元格 层次位于第3行
mergeCellsVertically(firstTbl, 0, lvlIndex, lvlIndex + lvlTotalSize - 1);
// 合并民族单元格 层次+性别2行
mergeCellsVertically(firstTbl, 0, lvlIndex + lvlTotalSize + sexTotalSize, lvlIndex + lvlTotalSize + sexTotalSize + nationTotalSize - 1);
// 替换图表数据
String[] chartArr = getChartData();
replacePieChartData(wordMLPackage, chartArr);
// 保存结果
saveWordPackage(wordMLPackage, outputfilepath);
}
use of org.docx4j.wml.Body in project docx4j-template by vindell.
the class SdtFinder method printSdtContent.
public void printSdtContent(String filePath) throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(filePath));
MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
Document wmlDocumentEl = (Document) mdp.getContents();
Body body = wmlDocumentEl.getBody();
SdtFinder sdtFinder = new SdtFinder();
new TraversalUtil(body, sdtFinder);
for (Child sdtChild : sdtFinder.sdtList) {
if (sdtChild instanceof SdtRun) {
SdtRun sdtRun = (SdtRun) sdtChild;
SdtPr sdtPr = sdtRun.getSdtPr();
printSdtPrContent(sdtPr);
// System.out.println(XmlUtils.marshaltoString(sdtPr, true,
// true));
SdtContent sdtContent = sdtRun.getSdtContent();
System.out.println("-----------p content=" + getContentAccessorContent(sdtContent));
} else if (sdtChild instanceof CTSdtCell) {
CTSdtCell sdtCell = (CTSdtCell) sdtChild;
SdtPr sdtPr = sdtCell.getSdtPr();
printSdtPrContent(sdtPr);
SdtContent sdtContent = sdtCell.getSdtContent();
System.out.println("-----------table content=" + getContentAccessorContent(sdtContent));
} else if (sdtChild instanceof SdtBlock) {
SdtBlock sdtBlock = (SdtBlock) sdtChild;
SdtPr sdtPr = sdtBlock.getSdtPr();
printSdtPrContent(sdtPr);
SdtContent sdtContent = sdtBlock.getSdtContent();
System.out.println("-----------sdtblock content=" + getContentAccessorContent(sdtContent));
}
}
}
use of org.docx4j.wml.Body in project docx4j-template by vindell.
the class HtmlToDOCDemo method convertToWmlObject.
private static List<Object> convertToWmlObject(WordprocessingMLPackage wordMLPackage, String content) throws Docx4JException, JAXBException {
MainDocumentPart document = wordMLPackage.getMainDocumentPart();
// 获取Jsoup参数
String charsetName = Docx4jProperties.getProperty(Docx4jConstants.DOCX4J_CONVERT_OUT_WMLTEMPLATE_CHARSETNAME, Docx4jConstants.DEFAULT_CHARSETNAME);
List<Object> wmlObjList = null;
String templateString = XmlUtils.marshaltoString(document.getContents().getBody());
System.out.println(templateString);
Body templateBody = document.getContents().getBody();
try {
document.getContents().setBody(XmlUtils.deepCopy(templateBody));
document.getContent().clear();
Document doc = Jsoup.parse(content);
doc.outputSettings().syntax(Document.OutputSettings.Syntax.xml).escapeMode(Entities.EscapeMode.xhtml);
// XHTMLImporterImpl xhtmlImporter = new XHTMLImporterImpl(wordMLPackage);
AlternativeFormatInputPart part = document.addAltChunk(AltChunkType.Xhtml, doc.html().getBytes(Charset.forName(charsetName)));
WordprocessingMLPackage tempPackage = document.convertAltChunks();
File file = new File("d://temp.docx");
tempPackage.save(file);
wmlObjList = document.getContent();
// part.getOwningRelationshipPart().getSourceP().get
// wmlObjList = xhtmlImporter.convert(doc.html(), doc.baseUri());
} finally {
document.getContents().setBody(templateBody);
}
return wmlObjList;
}
use of org.docx4j.wml.Body in project docx4j-template by vindell.
the class Docx4jStyle_S3 method setPageMargins.
public void setPageMargins(WordprocessingMLPackage wordMLPackage, ObjectFactory factory) {
try {
Body body = wordMLPackage.getMainDocumentPart().getContents().getBody();
PageDimensions page = new PageDimensions();
PgMar pgMar = page.getPgMar();
pgMar.setBottom(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setTop(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setLeft(BigInteger.valueOf(pixelsToDxa(50)));
pgMar.setRight(BigInteger.valueOf(pixelsToDxa(50)));
SectPr sectPr = factory.createSectPr();
body.setSectPr(sectPr);
sectPr.setPgMar(pgMar);
} catch (Exception e) {
e.printStackTrace();
}
}
Aggregations