使用Docx4j操作PPT指南系列(一)

简介:

使用Docx4j操作PPT指南系列(一)

                                                         —— pptx文档的生成与添加新页

写在最前

        由于项目需要系统生成ppt文档,在开源技术中选定了docx4j。docx4j操作ppt的文档几乎没有(中文的就更加凤毛麟角了),所有的东西只能自己去摸索,因此才有了这一系列的文档,也算是抛砖引玉,受限于项目使用场景,本系列仅对项目中使用的一些功能进行描述,我想差不多能够涵盖基本的功能,欢迎各位看官与我进行交流,共同进步。

准备工作

下载docx4j,项目网址:http://www.docx4java.org/trac/docx4j

下载地址:

Maven配置:

<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j</artifactId>
<version>2.7.1</version>
</dependency>

注意:docx4j主要用于操作Office2007版本。

创建ppt文档


public class CreatePPTX
{

   public static void main(String[] args)
     throws Exception
   {
     String outputfilepath = "c://pptx-test.pptx";
 

     // 创建文档的主体
     PresentationMLPackage presentationMLPackage = PresentationMLPackage.createPackage();

    // 获取MainPresentationPart,实际上使用 

   //  presentationMLPackage.getMainPresentationPart();   方法也可以


     MainPresentationPart pp = (MainPresentationPart)presentationMLPackage.getParts().getParts().get(new PartName("/ppt/presentation.xml"));
 

     // 获取布局信息,实际上是获取幻灯片母版的布局页,这个功能很重要。

    // 创建一个新页时必须应用一个布局

    // "/ppt/slideLayouts/slideLayout1.xml"这个是母版页的id,具体要看母版中有多少布

    // 局样式,是1、2、3、4依次排列的
     SlideLayoutPart layoutPart = (SlideLayoutPart)presentationMLPackage.getParts().getParts().get(new PartName("/ppt/slideLayouts/slideLayout1.xml"));
 

     // 创建一个新页,一定要带上布局页信息,否则打开ppt时会报错,

     // 并且自动指定一个默认的布局样式

     // "/ppt/slides/slide1.xml" 每一页的partName不能重复
     SlidePart slidePart = PresentationMLPackage.createSlidePart(pp, layoutPart, new PartName("/ppt/slides/slide1.xml"));
 

    // 保存成文件
     presentationMLPackage.save(new File(outputfilepath));
 
     System.out.println("\n\n done .. saved " + outputfilepath);
   }
}

个人建议不要直接创建新的ppt文件,一般对于企业来说都会有几种特定的ppt模板,直接使用这些模板可以节省大量的时间,而且封面页以及母版的布局都是定制好的,只需要用就可以了。

唯一代码上有所区别,是从一个文件中加载的,如下:

PresentationMLPackage presentationMLPackage = PresentationMLPackage.load(new File(
     PSMSConstants.REPORT_PPT2007_TEMPLATE_PATH));

OK, 在这一部分内容中,应该以及掌握了使用docx4j创建pptx文件以及添加内容页的方法,在下一部分中,将介绍如何向内容页中添加文本和图形等内容。



本文转自william_xu 51CTO博客,原文链接:http://blog.51cto.com/williamx/758955,如需转载请自行联系原作者

相关文章
|
搜索推荐 数据可视化 数据安全/隐私保护
免费、强大的开源笔记软件Joplin综合评测 —印象笔记的开源替代
Joplin 介绍 绝大部分开源工具都是免费的。如果寻找免费的笔记应用,自然需要考虑开源笔记软件。 在我的视野范围内,常见开源笔记软件包括Boostnote、GitNote、Joplin. 其中,前两者都是面向开发人员,全平台、支持中文、支持浏览器插件和扩展。而 Joplin 则面向一般用户。下面主要介绍 Joplin.
2503 0
免费、强大的开源笔记软件Joplin综合评测 —印象笔记的开源替代
|
12月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
8832 2
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
|
存储 负载均衡 NoSQL
Tomcat 9.X(9.0.74)集群实现Session共享(基于redisson)
本文主要介绍了tomcat集群环境下基于redis+Redisson实现session共享,分享给大家,供广大从业者学习和参考。
13100 4
|
存储 机器学习/深度学习 PyTorch
Pytorch-张量形状操作
PyTorch中,张量形状操作至关重要,如reshape用于改变维度而不变元素,transpose/permute用于维度交换,view改形状需内存连续,squeeze移除单维度,unsqueeze添加维度。这些函数帮助数据适应神经网络层间的转换。例如,reshape能调整数据适配层的输入,transpose用于矩阵转置或多维排列,而squeeze和unsqueeze则用于处理单维度。理解并熟练运用这些工具是深度学习中必要的技能。
|
关系型数据库 数据库 数据管理
DTS的应用
【6月更文挑战第3天】DTS的应用
1428 3
|
监控 API 开发工具
邮件中继中转邮箱API发送邮件的方法和步骤
AokSend介绍了使用邮件中继中转邮箱API发送邮件的步骤:理解API概念,获取API密钥,设置发件人和收件人信息,构建并发送API请求,处理响应,监控调试,及完善邮件功能。该服务支持大量验证码发送、触发式接口和高触达SMTP/API接口。选择合适提供商并参考文档可优化邮件发送。
|
机器学习/深度学习 人工智能
一键从Prompt到PowerPoint,斯坦福博士生自制的PPT生成神器火了
一键从Prompt到PowerPoint,斯坦福博士生自制的PPT生成神器火了
743 0
|
缓存 关系型数据库 MySQL
及到Linux系统的软件包依赖和冲突问题
及到Linux系统的软件包依赖和冲突问题
504 2
|
XML JSON Java
JSONPath 解析 JSON
JSONPath 解析 JSON
333 0