目录

利用aspose-word for java和aspose-pdf for java完成word转pdf并且生成目录

1. jacob

2. aspose

2.1 利用aspose-word for java将word转为pdf

2.2 利用aspose-word for java提取word中的标题

2.3 利用aspose-pdf for java插入pdf书签


利用aspose-word for java和aspose-pdf for java完成word转pdf并且生成目录

最近开发的项目涉及到word转pdf,在做了调研之后,发现了几款比较不错的工具:

1. jacob

这个解决方案太依赖于windows的office了,所以自己也只是写了个demo,没有深入研究。

2. aspose

aspose比传统的poi操作word简单了不少,更重要的是支持了doc和docx两种格式

2.1 利用aspose-word for java将word转为pdf

以下代码轻轻松松就可以实现:

// wordPath为word的绝对路径
com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
// word转pdf,pdfPath为pdf要保存的绝对路径
doc.save(pdfPath, SaveFormat.PDF);

本来以为做完这个功能已经可以摸鱼了,结果下一个功能又来了。(产品问:为什么转换的pdf没有目录呢?)

在苦苦研究了差不多一个多月的时间,终于在公司大神的帮助下,今天彻底完成了这个功能。

2.2 利用aspose-word for java提取word中的标题

com.aspose.words.Document originDoc = new com.aspose.words.Document("D:\\test\\1.doc");
// 后面需要用这个对象去获取当前段落所在的页码
LayoutCollector layoutCollector = new LayoutCollector(originDoc);
// 需要获取所有的section,要不然部分word提取目录不完整
Section[] sections = originDoc.getSections().toArray();
// 获取所有的段落
List<Paragraph> paragraphs = new ArrayList<>();
for (Section s:sections) {paragraphs.addAll(Arrays.asList(s.getBody().getParagraphs().toArray()));}
// 获取标题的关键代码。标题对应的值为0-8,提取自己所需标题即可
p.getParagraphFormat().getOutlineLevel();
// 获取页码
layoutCollector.getEndPageIndex(p);
// 获取标题名称
p.getListLabel().getLabelString() + " " + p.getText();

以上只是部分代码,需要源码的可以私信我。

2.3 利用aspose-pdf for java插入pdf书签

Document pdfDoc = new Document(filePath);
OutlineCollection outlineCollection = pdfDoc.getOutlines();
for (HeadingNode node :list) {OutlineItemCollection outLineItem = new                 OutlineItemCollection(outlineCollection);outLineItem.setTitle(node.getHeaderName());outLineItem.setAction(new GoToAction(node.getHeaderPage()));addPdfBKRecursive(node, outlineCollection, outLineItem);outlineCollection.add(outLineItem);
}
pdfDoc.save();

所以,整个功能的实现逻辑应该是:word转为pdf,获取原word的目录大纲,根据word获取的目录大纲添加pdf书签。在获取word目录和添加pdf书签都用到了递归。需要源码的可以私信我。

最后附一张自己完成功能的战果图:

原word的目录

转换为pdf书签之后的效果

每一个功能在没有实现出来之前是那样不切实际,实现出来之后自身又成长不少,所以,不用急于去下结论。

word换pdf并且自动生成目录相关推荐

  1. 怎么用计算机做目录,word怎么生成目录,教您Word文档如何自动生成目录

    word是我们常用的文字编辑器,学会一些word基本操作,使办公更加方便.我们平时写文章或写论文的时候为了方便,文章生成一个目录在查找的时候就很容易找到,如何生成目录呢?下面,小编给大家介绍Word文 ...

  2. Word 2010文档自动生成目录和某页插入页码

    一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...

  3. Word排版如何快速自动生成目录,简单实用,一看就懂!

    都说 "人靠衣装马靠鞍",的确如此,不光是人需要收拾的干净利落,我们的文章排版也是如此,只有当你的界面排版干净整洁时,才有让人阅读下去的欲望.那么现在问题来了,如何在排版中快速自动 ...

  4. php自动生成word目录,word文档怎么自动生成目录章节

    方法:1.单击"开始"菜单区域的文档样式选项,编辑标题样式:如标题1.标题2等等.2.单击"开始"-样式"-右下角的"扩展"按钮. ...

  5. Word文档如何自动生成目录

    前言 进度进行到了软工文档,参考文档上的目录既正规又好看,让我忍不住想研究一下. 内容 其实我个人觉得Word目录生成方式和CSDN的目录生成方式有很多相似之处,接下来咱们就看看具体步骤. 步骤一: ...

  6. word生成html包含目录,word2007自动生成目录,目录里包含有正文,怎么办

    word2007自动生成目录,目录里包含有正文,怎么办 相关说明: 请看,显示级别那项,1级,2级,3级文本显示的都没有正文的,可是目录生成出来就是有 大刚视图中确认大刚级别为"正文文本&q ...

  7. Typora导出word文档自动生成目录

    一.关键步骤 Typora导出word文档 用WPS打开word文档,自动生成目录 在空白处,插入编号,插入编号后删除这条编号 更新目录,更新整个目录 完成目录自动生成

  8. word自动生成目录 页码不能右对齐问题

    在用word自动生成目录时,产生的目录总是不能右对齐,如下图 这时可以再生成目录对话框中修改相关选项来更正这个错误. 在引用->目录->插入目录的对话框中,<常规>--< ...

  9. PDF文档一键自动生成目录和书签

      在工作中经常会遇到编写文档的时候,当我们在word编写完文档后,一般可以自动生成一个目录.为了方便阅读和保护文档不被破坏,一般发送给别人的时候,需要把word文档转换成PDF格式.但是word文档 ...

最新文章

  1. springmvc + jquery 错误.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
  2. 算法复习之坐标离散化
  3. oracle存储过程无效字符_Oracle存储过程基础+ 错误代码
  4. c# cookie帮助类
  5. IDEA导入Eclipse项目
  6. GitHub上Java的Bloom Bloom实现
  7. Google Protocol Buffer
  8. mysql常用语句1
  9. matlab幂指数函数图像,matlab画指数函数曲线
  10. 【181012】VC++ 中国象棋人机对弈程序源代码
  11. 微信渐变国旗头像来了!一键生成
  12. [iOS]苹果开发证书 一个证书多人开发 注意项
  13. 植树节推文如何排版?—135植树节样式上新
  14. 史上最全无线通信频率分配表
  15. Vue3+Vite+TS后台项目 ~ 10.商品管理
  16. 深信服实习面经11_02
  17. (Samsung)Netsol SRAM,Novachips SATA3 SSD Controller,Zywyn 3V RS232,PLX
  18. Java实现字符串反转的几种方法
  19. ARM-(一)定时器:PWM定时器,看门狗WTD定时器
  20. app android 升级提示,app版本升级原生弹框和进度提示(包含wgt升级)

热门文章

  1. C语言学习———函数
  2. 真相 | 投机者根本不是用户!区块链市场因他们起高楼,因他们崩到底!
  3. DDR突然初始化失败 Debug记录
  4. MAC下安装ElasticSearch(官网下载安装包)
  5. selenium 火狐下载弹框去除
  6. 世界第一台计算机是多少位,世界上第一台计算机的字长是多少位?
  7. python中3or5-python3 中 and 和 or 运算规律
  8. crash report
  9. 6-27 实验9_7_设计函数int getVowel(char str[],char vowel[]); (100 分)
  10. 2023年武汉大学艺术专硕考研上岸前辈初复试备考经验指导