视频怎么转word文档 word怎么插入视频

你好 , 这是系列文章的最后一篇 , 我们将实现把文本记录导出到一个格式规整的word文档中 , 方便阅读和分享 。同样 , 相关代码均在gitee开源(https://gitee.com/coolpine/thomas)
整体架构本篇处于整体转换流程中第三步 , 具体如下图所示:

视频怎么转word文档 word怎么插入视频

文章插图
视频怎么转word文档 word怎么插入视频

文章插图
视频怎么转word文档 word怎么插入视频

文章插图
视频怎么转word文档 word怎么插入视频

文章插图

内容表格示例
对应表格的处理逻辑是:
// 创建表头Tbl tbl = Context.getWmlObjectFactory().createTbl();//设置表格基本样式 , 包括边框等String strTblPr = "<w:tblPr "+ Namespaces.W_NAMESPACE_DECLARATION+ ">"+ "<w:tblStyle w:val=\"TableGrid\"/>"+ "<w:tblW w:w=\"0\" w:type=\"auto\"/>"+ "<w:tblLook w:val=\"04A0\"/>"+ "</w:tblPr>";try {TblPr tblPr = (TblPr) XmlUtils.unmarshalString(strTblPr);tbl.setTblPr(tblPr);} catch (JAXBException e) {log.error("基于XML解析生成TblPr出错", e);}// 设置标题行Tr hearTr = Context.getWmlObjectFactory().createTr();tbl.getContent().add(hearTr);geneTblHearderCell(hearTr, "D9D9D9", 2629, docPart.createParagraphOfText("时间"));geneTblHearderCell(hearTr, "D9D9D9", 5667, docPart.createParagraphOfText("内容"));// 设置内容行taskResultRepo.findByTaskIdEqualsOrderByBeginTimeAsc(taskId).forEach(result -> {Tr tr = Context.getWmlObjectFactory().createTr();tbl.getContent().add(tr);//创建第一个单元格Tc tc1 = Context.getWmlObjectFactory().createTc();tc1.getContent().add(docPart.createParagraphOfText(formatSecond(result.getBeginTime())));//创建第二个单元格Tc tc2 = Context.getWmlObjectFactory().createTc();tc2.getContent().add(docPart.createParagraphOfText(result.getWords()));//将单元格加入到表格中tr.getContent().addAll(Arrays.asList(tc1, tc2));});//将表格加入到文档中docPart.getContent().add(tbl);//增加分页符docPart.getContent().add(createNextPage());有一点特别提醒下 , 建议尽量不要使用XmlUtils.unmarshalString来生成对象 , 除了上述参考官方示例在创建表头TblPr外 , 本项目所有其他结构 , 均是采用java对象来构建 。原因是直接基于xml解析 , 很容易出现命名空间的错误 。
docx4j还支持将图片插入到文档中 , 例如:
//将图片写入到word文档中Inline inline = null;try {BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordPackage,Files.readAllBytes(Paths.get("doc\\thomas-gitee.png")));inline = imagePart.createImageInline("开源工程地址", "二维码图片", 1, 2, false);} catch (Exception e) {log.error("创建图片对象出现异常", e);}ObjectFactory factory = Context.getWmlObjectFactory();P p = factory.createP();R r = factory.createR();p.getContent().add(r);Drawing drawing = factory.createDrawing();r.getContent().add(drawing);drawing.getAnchorOrInline().add(inline);以下是设置标题及章节 , 分别将内容样式设置为Title和Heading1即可:
//设置文档标题mainDocumentPart.addStyledParagraphOfText("Title", THOMAS_DOCX_NAME);//取出第一行 , 作为章节名称mainDocumentPart.addStyledParagraphOfText("Heading1", taskInfo.getTaskName());生成目录也很简单:
//生成目录 , 该段内容要放到最后面Toc.setTocHeadingText("目录");TocGenerator tocGenerator = new TocGenerator(wordPackage);tocGenerator.generateToc(5, " TOC \\o \"1-3\" \\h \\z \\u ", true);需要提醒的是 , generateToc方法中的第一个参数是将目录插入到文档中的位置 , 上述代码是将目录插入到第五个位置 。
文档结构组装完成后 , 直接WordprocessingMLPackage的save方法即可保存文档 。
最后至此 , 我们终于完成将MP4视频中的对话 , 最终转化为文字 , 并且输出为一个格式规范的word文档 , 实现过程如有有错漏之处 , 敬请反馈 , 谢谢 。
【视频怎么转word文档 word怎么插入视频】本系列采用《托马斯和朋友》动画视频作为素材 , 起源是孩子们特别喜欢这个动画节目 , 特别喜欢听托马斯的故事 , 为了更好的给孩子们讲托马斯睡前故事 , 一时兴起实现了这些功能 , 希望对你也有帮助

    推荐阅读