使用Docx4j操作PPT指南系列(二) 推荐
2012-01-10 09:38
405 查看
使用Docx4j操作PPT指南系列(二)
—— 使用xml 添加标题与副标题
在上一章节中我们尝试了创建一个新的PPT文件,并且在文件中添加了一个新页,在本章中我们将会了解到,如何在这些页面中添加标题。
首先我们来看下面的图片
这是一个典型的PPT封面,接下来我们就要通过xml来向封面中的标题框内添加内容。代码如下:
Docx4j通过XmlUtils.unmarshalString方法为我们提供了xml转换对象的功能,实际上这也是我们操作PPT的一种主要的方式。xml字符串可以通过将PPT另存为XML格式的文件中获取(ppt2007),大家可以多尝试一下。值得注意的是,通过另存XML文件获取的字符串是不包括XML命名空间的,需要我们自己加上。
执行代码最终的结果如下图所示:
OK, 在这一章,我们学习了如何向PPT中添加标题与副标题,在下一章中我们将会学习如何在PPT页中插入文本框以及其他的图形元素,而且我们将会同时介绍XML方式与代码两种不同方式。
—— 使用xml 添加标题与副标题
在上一章节中我们尝试了创建一个新的PPT文件,并且在文件中添加了一个新页,在本章中我们将会了解到,如何在这些页面中添加标题。
首先我们来看下面的图片
这是一个典型的PPT封面,接下来我们就要通过xml来向封面中的标题框内添加内容。代码如下:
public static void main(String[] args) { try { // 加载一个ppt文件作为模板 PresentationMLPackage presentationMLPackage = PresentationMLPackage .load(new File(PSMSConstants.REPORT_PPT2007_TEMPLATE_PATH)); SlidePart slidePart = (SlidePart) presentationMLPackage.getParts() .getParts().get(new PartName("/ppt/slides/slide1.xml")); // 读取XML生成形状 Shape title = (Shape) XmlUtils.unmarshalString( getSlideTitle("使用Docx4j操作PPT指南系列(二)"), Context.jcPML); // 注意,主标题与副标题的xml是不同的 Shape subtitle = (Shape) XmlUtils.unmarshalString( getSubSlideTitle("使用xml 添加标题与副标题"), Context.jcPML); ((Sld) slidePart.getJaxbElement()).getCSld().getSpTree() .getSpOrGrpSpOrGraphicFrame().add(title); ((Sld) slidePart.getJaxbElement()).getCSld().getSpTree() .getSpOrGrpSpOrGraphicFrame().add(subtitle); String path = "c://test.pptx"; presentationMLPackage.save(new java.io.File(path)); } catch (Docx4JException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JAXBException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 生成标题 * * @param preset * @return */ public static String getSlideTitle(String preset) { return "<p:sp xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" " + "xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" " + "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">" + "<p:nvSpPr><p:cNvPr id=\"2\" name=\"标题 1\"/>" + "<p:cNvSpPr><a:spLocks noGrp=\"1\"/>" + "</p:cNvSpPr><p:nvPr><p:ph type=\"title\"/>" + "</p:nvPr></p:nvSpPr><p:spPr/><p:txBody>" + "<a:bodyPr/><a:lstStyle/><a:p><a:r>" + "<a:rPr lang=\"en-US\" altLang=\"zh-CN\" dirty=\"0\" err=\"1\" smtClean=\"0\"/>" + "<a:t>" + preset + "</a:t></a:r>" + "<a:endParaRPr lang=\"zh-CN\" altLang=\"en-US\" dirty=\"0\"/></a:p>" + "</p:txBody></p:sp>"; } /** * 添加副标题 * * @param preset * @return */ public static String getSubSlideTitle(String preset) { return "<p:sp xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" " + "xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" " + "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">" + "<p:nvSpPr><p:cNvPr id=\"4\" name=\"副标题 3\"/>" + "<p:cNvSpPr><a:spLocks noGrp=\"1\"/>" + "</p:cNvSpPr><p:nvPr><p:ph type=\"subTitle\" idx=\"1\"/>" + "</p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr>" + "<a:normAutofit lnSpcReduction=\"10000\"/></a:bodyPr>" + "<a:lstStyle/><a:p><a:r><a:rPr lang=\"en-US\" altLang=\"zh-CN\" dirty=\"0\" smtClean=\"0\"/>" + "<a:t>" + preset + "</a:t></a:r><a:endParaRPr lang=\"zh-CN\" altLang=\"en-US\" dirty=\"0\"/>" + "</a:p></p:txBody></p:sp>"; } |
执行代码最终的结果如下图所示:
OK, 在这一章,我们学习了如何向PPT中添加标题与副标题,在下一章中我们将会学习如何在PPT页中插入文本框以及其他的图形元素,而且我们将会同时介绍XML方式与代码两种不同方式。
相关文章推荐
- 使用Docx4j操作PPT指南系列(一) 推荐
- 使用Docx4j操作PPT指南系列(三)
- 使用Docx4j操作PPT指南系列(附一)
- 使用Docx4j操作PPT指南系列(附二)
- 使用Docx4j操作PPT指南系列(五)
- 使用Docx4j操作PPT指南系列(四)
- [C# 开发技巧系列] 使用C#操作幻灯片 推荐
- 高效的使用空间SQL操作空间数据库系列的PPT
- Git 系列之三:Windows 下 Git 配置与使用指南
- [Python]MySQLdb for Python使用指南/Python的数据库操作
- System Repair Engineer(2.4.12.806版)简易使用指南 推荐
- BPFP系列:优化电池使用时间:根据需要操作广播接收器
- vSphere 4系列之十一:使用VMware vCenter Converter迁移到虚拟机 推荐
- 使用POI操作excel(读取和创建)快速开发指南
- DNS中GlobalNames区域图解使用---Windows2008新功能系列之五 推荐
- 安全系列之五:使用IPSec和组策略实现网络隔离(上) 推荐
- Yii框架官方指南系列23——使用数据库:数据访问对象(DAO)
- 一天一个shell命令 文本操作系列-linux dd使用教程
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式 .
- Vmware6.0虚拟机中文绿色版[安装使用完全指南] 推荐