前言
我們在之前版本中調研導出支持編輯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();
}
}
最后
大家如果有商用需求請使用正版或尋找其他開源替代方案,本文僅供測試交流使用