aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用
2016-12-02 17:15
453 查看
插入目录以及设置目录样式的代码:
//将光标移到目录书签 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 c4c4 + ".doc");
可以看出,在生成目录后我尝试进行了许多关于文档、域的更新,然而,word并不为之所动,目录中的页码和实际页码依然纹丝不动的不对应着,如图:
目录:
word文档内部:
后期也做了更多尝试,比如宏什么的,都没用,和之前说的word文档在WPS中的兼容性一样,这个问题的源头依然只是一个非常不起眼的小属性,也是随着WPS兼容性的解决随之解决的,看到之后的确哭笑不得呢~当初我可是因为这个页码的问题苦苦追寻了一个多星期的答案(···未果···)
解决方案:
检查你的代码,看看是否存在类似于这行的代码:builder.getCellFormat().setWidth(PreferredWidthType.POINTS);
如果有,恭喜你,注释掉这一行你就得救了!重新生成一份word吧,Here comes the sunshine! b( ̄▽ ̄)d
真的,当我注释掉这一行后,整个人都不好了,就这一行属性设置,引起了目录页码和实际页码不对应、WPS显示一团糟两个大问题,惨不惨!
快去试试吧!
相关文章推荐
- 用Aspose.Words for .NET动态生成word文档中的数据表格
- 在邮件合并时使用Aspose.Words生成多个文档的具体代码
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法(转)
- 【转载自某园友】用Aspose.Words for .NET动态生成word文档中的数据表格
- asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格的方法(转)
- Word文档目录自动生成和页码设置
- word文档的生成、修改、渲染、打印,使用Aspose.Words
- Aspose.Words简单生成word文档
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法
- asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格的方法
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法
- 用Aspose.Words for .NET动态生成word文档中的数据表格
- Aspose.Words操作word生成PDF文档
- Aspose.Words for .NET动态生成word文档中的图片或水印
- 推荐.NET使用Aspose.Words动态生成word文档数据表格(附Aspose.Words for NET 6.5 破解版下载)
- Word文档中的域代码导致的页码显示为PAGE
- word如何自动生成目录-----如何写软件文档
- 软件文档写作、毕业论文word排版技巧之【目录的生成】
- word如何自动生成目录-----如何写软件文档