使用Docx4j操作PPT指南系列(三)
—— 添加文本框与其他图形元素
上一章介绍了如何使用Docx4j向PPT中添加标题元素,本章我们来尝试向PPT中加入文本框与其他的图形元素,与上一章不同,本章中将会增加“使用代码创建图形元素”的部分。
还是先来看一页PPT:
我们接下来将会在红框的位置添加一个文本框,并在文本框中增加“插入一个文本框 ”这样一段文字。
先使用Xml方式插入:
private final int tTextAyX = 539552; private void createStChartSlide( String partTitle = title; SlidePart slidePart = createCommonSlide(presentationMLPackage, Shape descShape; try { descShape = (Shape) XmlUtils.unmarshalString( } catch (JAXBException e1) { } private String getRandomID(){ /** MainPresentationPart mainPart = presentationMLPackage SlideLayoutPart layoutPart; try { SlidePart slidePart = PresentationMLPackage.createSlidePart( Shape titleShape = (Shape) XmlUtils.unmarshalString( ((Sld) slidePart.getJaxbElement()).getCSld().getSpTree() return slidePart; } catch (InvalidFormatException e) { return null; } /** |
通过上面的代码,我们就可以得到如图中的PPT页。如果我们不想采用XML方式的话,Docx4j还支持使用代码方式插入,代码相对复杂一些,但不难理解(完全符合Microsoft OOXml的结构),我们只需要将上面生成Shape部分的代码替换为下面的代码即可:
private void createShape(SlidePart slidePart, String value) { Shape shape = graphicObjectFactory.createShape(); NvSpPr nvSpPr = graphicObjectFactory.createShapeNvSpPr(); CTNonVisualDrawingProps cnvpr = objectFactory shape.setNvSpPr(nvSpPr); CTShapeProperties ctShapePr = objectFactory.createCTShapeProperties(); CTTransform2D ctTransform2D = objectFactory.createCTTransform2D(); CTPoint2D ctPoint2D = objectFactory.createCTPoint2D(); ctTransform2D.setOff(ctPoint2D); ctShapePr.setXfrm(ctTransform2D); CTTextBody txBody = objectFactory.createCTTextBody(); CTTextParagraph ctTextPr = objectFactory.createCTTextParagraph(); CTTextCharacterProperties ctTpr = objectFactory // 14号字体 TextFont font = objectFactory.createTextFont(); ctTpr.setLatin(font); run.setRPr(ctTpr); // 设置内容 ctTextPr.getEGTextRun().add(run); ctTextPr.setEndParaRPr(objectFactory.createCTTextCharacterProperties()); txBody.getP().add(ctTextPr); shape.setTxBody(txBody); shape.setSpPr(ctShapePr); } |
其他图形元素的操作方式与文本框基本一致,在XML中加黑的部分
"<p:nvSpPr><p:cNvPr id=\"5\" name=\"TextBox 4\"/><p:cNvSpPr txBox=\"1\"/><p:nvPr/></p:nvSpPr>" |
OK,以上是这一部分的全部内容,在下一章中我们将学习如何在PPT中插入一张图片。
本文转自william_xu 51CTO博客,原文链接:http://blog.51cto.com/williamx/769277,如需转载请自行联系原作者