在使用Aspose.words处理word文档时,最后一页处理完之后存在着几行没有用的文字,怎么能删除最后这一页呢?
找了很多资料都没有说到这个,而且在api中也貌似没找到怎么删除指定的一页。请大家指教!

Aspose.words处理word时,怎么删除空白页
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 白洞里的黑鱼 2020-09-09 11:45关注
aspose.words是不能按照页数删除东西的,他的结构是以section为主的,但是section会跨页的,你如果按照页数操作会断section,所以是不行的,如果你要删除空白的页面,可以尝试对section循环,如果你能确定在最后一页就直接拿做后一个section,然后根据section.getBody().getText()是不是包含内容,如果没有你就可以直接删除了,如果是有的,可能就是那页空白页只能算一个paragraph,你就要在paragraph的级别去判断是不是空白页然后再删除。
总的来说就是你不能想着对页面进行操作的,你能动的页面只有他的基本属性样式,不能对其中的内容进行控制,我自己做的项目也有删除空白的部分内容,我是删除了整个文档的空白页,空白行的可以看一下,有没有你要的;
//得到去除空白页的部分
public static void removeBlank(Document document) {
for (Section section : document.getSections()) {
//删除空白页部分
if (StrUtil.isBlank(section.getBody().getText())){
document.removeChild(section);
}
//得到所有段落
for (Paragraph paragraph : section.getBody().getParagraphs()) {
//flag代表该段落有没有图片
boolean flag = false;
if (paragraph.getChildNodes(NodeType.SHAPE,true).getCount()==0){
flag = true;
}
//得到各个run
RunCollection runs = paragraph.getRuns();
if (flag){
//首先去除各个部分的转义字符,如果删除之后run为空则去除
for (Run run : runs) {
run.setText(run.getText().replaceAll("[\f|\r|\n]",""));
}
//删除空白的paragraph,如果有图片则不删除,
String content = StrUtil.cleanBlank(paragraph.getText());
if (StrUtil.isBlank(content)){
section.getBody().getParagraphs().remove(paragraph);
}
}
}
//去除空白的table
for (Table table : section.getBody().getTables()) {
for (Row row : table.getRows()) {
for (Cell cell : row.getCells()) {
if (StrUtil.isBlank(cell.getText())){
row.getCells().remove(cell);
}
}
if (StrUtil.isBlank(row.getText())){
table.getRows().remove(row);
}
}
if (StrUtil.isBlank(table.getText())){
section.getBody().getTables().remove(table);
}
}
}
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 5无用 1