Lemostic
lemostic
采纳率61.5%
2017-04-17 15:53 阅读 3.6k
已采纳

Aspose.words处理word时,怎么删除空白页

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    qq_38584738 白洞里的黑鱼 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);
    }
    }
    }
    }
    图片说明

    点赞 评论 复制链接分享

相关推荐