使用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<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();
    }
}

最后

大家如果有商用需求請使用正版或尋找其他開源替代方案,本文僅供測試交流使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM