使用spire.doc免费版SDK导出word只支持500行问题解决

我们在之前版本中调研导出支持编辑Latex公式的word中,采用了spire.doc的组件,但是在英语试卷生成的时候,由于题目较多在生成word的时候报错了,错误的信息很明确,就是免费版本的spire.doc最多支持500个段落,这下歇菜了。

虽然我们这个是和内部使用的系统,但是如果要换方案,还有一堆逻辑需要修改,关键之前的word都是基于spire.doc构建出来的,现在要我重新实现一遍,sorry!我是拒绝的

1、网上搜破解版,虽然网上有破解版,但是积分太高,穷人下不起,且破解版有点侵犯知识产权的感觉,虽然没有商用
2、使用其他方案生成word,sorry!我是拒绝的
3、使用Spire.doc收费版,没有经费,自己解决

其实Spire.doc收费版是没有500行限制的,但是它在生成word的时候会在word的最上方增加一行体验版的版权声明,但是这个声明在那很突兀,于是

1、使用spire.doc生成完整的word
2、使用POI读取word,如果第一行包含体验声明则删除它,代码如下:

private void restWord(String docFilePath) {
    try (FileInputStream in = new FileInputStream(docFilePath)) {
        XWPFDocument doc = new XWPFDocument(OPCPackage.open(in));
        List paragraphs = doc.getParagraphs();
        if (paragraphs.size() < 1) return;
        XWPFParagraph firstParagraph = paragraphs.get(0);
        if (firstParagraph.getText().contains("Spire.Doc")) {
            doc.removeBodyElement(doc.getPosOfParagraph(firstParagraph));
        }
        OutputStream out = new FileOutputStream(docFilePath);
        doc.write(out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

大家如果有商用需求请使用正版或寻找其他开源替代方案,本文仅供测试交流使用

Original: https://www.cnblogs.com/surging-dandelion/p/15634984.html
Author: 蒲公英的狂想
Title: 使用spire.doc免费版SDK导出word只支持500行问题解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579564/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 260_RabbitMQ面试题分析

    Rabbitmq 为什么需要信道,为什么不是TCP直接通信 queue队列到底在消费者创建还是生产者创建? Rabbitmq 为什么需要信道,为什么不是TCP直接通信 :::inf…

    Java 2023年6月7日
    0136
  • React native replaceAll 不起作用????

    what a fuck ??? replaceAll not working 在React native debug 调试过程中,replaceAll 正常,符合预期,但是Rele…

    Java 2023年5月30日
    082
  • MyBatis学习(一)

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射;MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;MyBatis …

    Java 2023年6月6日
    088
  • Spring TX 原理

    调试环境:https://gitee.com/jhxxb/MySpringBoot/tree/master/Spring-Base/src/test/java 源码 从 @Enab…

    Java 2023年5月30日
    0237
  • ArrayList这篇就够了

    提起ArrayList,相信很多小伙伴都用过,而且还不少用。但在几年之前,我在一场面试中,面试官要求说出ArrayList的扩容机制。很显然,那个时候的我并没有关注这些,从而错过了…

    Java 2023年6月8日
    077
  • String,StringBuilder和StringBuffer的特点和使用场景

    这三个类是平时开发中经常遇到的,主要差别是运行速度和线程安全,使用起来String最方便了,另外两个稍微复杂一些。 从运行速度角度看,StringBuilder>String…

    Java 2023年6月6日
    077
  • java程序猿如何练习java版的易筋经?

    故事背景 电视剧《天龙八部》中,阿朱易容后进入少林寺偷走了《易筋经》,她一直想把这本书送给乔峰。耿直的乔峰觉得此书来历不正,不肯接受。几番波折,这本书最后落到聚贤庄庄主游坦之手里。…

    Java 2023年5月29日
    078
  • 进程外Session

    1、Session保存在SQLServer中配置方法: 1)运行.NetFramework安装目录下对应版本的aspnet_regsql.exe 来创建相关的数据库、表和存储过程等…

    Java 2023年5月30日
    069
  • [Java编程思想] 第八章 多态

    “我曾经被问到’求教,Babbage先生,如果你向机器中输入错误的数字,可以得到正确的答案吗?’我无法恰当地理解产生这种问题的概念上地混淆&#8…

    Java 2023年6月5日
    0136
  • Spring的自动装配和注解

    自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean。 Spring的自动装配需要从两个角度来实现,或者说是两个操作…

    Java 2023年6月15日
    074
  • 超简单的抖音去水印原理教程

    一、前言 抖音去水印方法很简单,以前一直没有去研究,以为搞个去水印还要用到算法去除,直到动手的时候才发现这么简单,不用编程基础都能做。 二、原理与步骤 其实抖音它是有一个隐藏无水印…

    Java 2023年6月7日
    0149
  • 戏说领域驱动设计(十四)——补遗

    写了好几章的东西,再回头读的时候发现有些内容写的不理想,没有表达出自己所想要表达的意思。这次写一个补遗,把我认为需要重新解释和着重说明的内容再唠一唠。反正我多说两句,您就可以多理解…

    Java 2023年6月7日
    066
  • 大小端 与本机大小端模式判断 面试被问到

    大小端定义 Java代码判断 思路:利用强制类型转换,获取大范围数的一部分数据,再分析获得的数据 int big = 0xFFFF0000; //0xFFFF0000&#x…

    Java 2023年6月5日
    095
  • Spring Boot Web Executable Demo

    1 Step by Step 新建intellij project maven 项目 加入pom依赖 <parent> <groupId>org.sprin…

    Java 2023年6月7日
    072
  • windows系统配置Nginx使用SSL证书实现Https反向代理

    前言 Nginx反向代理服务,可以代理接收请求,并把请求转发到设置好的其他服务器上。 例如,Nginx服务器为 100.101.102.103,A服务为 100.101.102.1…

    Java 2023年6月8日
    097
  • SpringBoot+MDC实现全链路调用日志跟踪

    实现HttpRequestInterceptor接口并重写process方法 ​ 如果调用线程中含有traceId,则需要将获取到的traceId通过request中的header…

    Java 2023年5月30日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球