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

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

2026-01-15 09:48:21 苏内容
  标签: word
阅读:25

前言

我们在之前版本中调研导出支持编辑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<XWPFParagraph> 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();

    }

}

最后

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

来源:https://www.cnblogs.com/surging-dandelion/p/15634984.html

我没试过这个方法,最后还是在github找的人家和谐完的

扩展阅读
相关阅读
© CopyRight 2010-2021, PREDREAM.ORG, Inc.All Rights Reserved. 京ICP备13045924号-1