aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用
插入目录以及设置目录样式的代码:
//将光标移到目录书签
builder.moveToBookmark("TOC");
builder.insertBreak(BreakType.PAGE_BREAK);//设置目录的格式
//“目录”两个字居中显示、加粗、搜宋体
builder.getCurrentParagraph().getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.setBold(true);
builder.getFont().setName(FontName.SONG);
builder.writeln("目录");
//清清除所有样式设置
builder.getParagraphFormat().clearFormatting();
//目录居左
builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);//插入目录,这是固定的
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
field.update();
doc.updateFields();// 更新域doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_1).getFont().setSize(FontSize.FONT105); //改变目录的字体大小doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_2).getFont().setSize(FontSize.FONT105); //改变目录的字体大小doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_3).getFont().setSize(FontSize.FONT105); //改变目录的字体大小doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_3).getParagraphFormat().setLineSpacing(18);//改变目录行距merge.updatePageLayout();
merge.updateFields();field.update();
//读取配置文件获取word路径
Properties properties = new Properties();
InputStream in = this.getClass().getResourceAsStream("/config/docPath.properties");
properties.load(in);
reportDocPath = properties.get("docPath").toString();
System.out.println("————————————路径:" + reportDocPath);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String now = sdf.format(new Date()).replaceAll("-", ".");
doc.save(reportDocPath + now + ".doc");
可以看出,在生成目录后我尝试进行了许多关于文档、域的更新,然而,word并不为之所动,目录中的页码和实际页码依然纹丝不动的不对应着,如图:
目录:
word文档内部:
后期也做了更多尝试,比如宏什么的,都没用,和之前说的word文档在WPS中的兼容性一样,这个问题的源头依然只是一个非常不起眼的小属性,也是随着WPS兼容性的解决随之解决的,看到之后的确哭笑不得呢~当初我可是因为这个页码的问题苦苦追寻了一个多星期的答案(···未果···)
解决方案:
检查你的代码,看看是否存在类似于这行的代码:
builder.getCellFormat().setWidth(PreferredWidthType.POINTS);
如果有,恭喜你,注释掉这一行你就得救了!重新生成一份word吧,Here comes the sunshine! b( ̄▽ ̄)d
真的,当我注释掉这一行后,整个人都不好了,就这一行属性设置,引起了目录页码和实际页码不对应、WPS显示一团糟两个大问题,惨不惨!
快去试试吧!
aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用相关推荐
- java生成word文档_Java多种方式动态生成doc文档
本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...
- 是的你没看错,js生成word文档
用js生成word文档 查看Demo 你可以生成一份 word 文档,在此文档中可以添加多种元素并设置多种属性. 可添加的元素 段落 超链接 标题 表格 列表 图片 可设置的属性 font:字体,比如 ...
- word插件php,php使用phpword插件生成word文档
php使用phpword插件生成word文档 php使用phpword插件生成word文档,有需要的朋友可以参考参考. require_once '../libs/PHPWord/PHPWord.ph ...
- matlab 生成 word 表格,利用MATLAB生成Word文档.doc
利用MATLAB生成Word文档 function ceshi_Word %利用MATLAB生成Word文档 % ceshi_Word % % Copyright 2009 - 2010 xiezhh ...
- Aspose.Words简单生成word文档
Aspose.Words简单生成word文档 Aspose.Words.Document doc = new Aspose.Words.Document(); Aspose.Words.Documen ...
- 【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格
1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档 ...
- java下freemarker2.3.28+aspose实现生成word文档生成、word转pdf转换
一.java生成word文档 java生成word文档常用的两种方式: (1)apache下的poi类库处理office文档 (2)freemarker编辑word文件转换的xml文件 通过网上了解, ...
- Word处理控件Aspose.Words功能演示:使用 C++ 创建 MS Word 文档 (DOC/DOCX)
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...
- 用Aspose.Words for .NET动态生成word文档中的图片或水印
1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...
- vue+docxtemplater实现读取word文档,根据后端数据生成echarts图表插入word,并下载为docx格式文件
一.需求 word自带的图表不能满足需求,并且编写过程繁琐,需要写一个页面,主要功能是能读取服务器的word模板,根据后台给的数据,自动生成echarts图表并插入到word指定位置,然后点击能下载插 ...
最新文章
- Java 的 JSP 已经被淘汰了吗?
- Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...
- 《你说对就队》第四次作业:项目需求调研与分析
- [云炬创业基础笔记]第二章创业者测试24
- .net bootstrap 下拉树状选择框_Bootstrap搭建图书管理系统
- C++的#include_next
- C语言,利用一维数组输出每月对应的天数。
- 理解React的组件
- 大数据售前的一点感悟
- jsp管理系统页面模板_Jsp+Ssh2+Mysql实现的CRM客户关系管理系统
- UML工具Visual Paradigm入门:业务流程建模 (BPM) 教程
- yyds,35岁自学编程,入职微软
- photoshop涂抹工具
- codelite编译器配置
- 知道创宇赵伟乌镇演讲:以云护云、以云治云,构建云端安全治理体系
- haproxy代理https配置方法【转】
- 记录生活账本,查看账目清晰更可查
- Button设置elevation阴影
- 《诗经·甘棠》:两种相思一样情 转自国学
- pyqt5 QPainter绘制图形,并旋转