Привет, ребята, обратите внимание, что это похоже на проблему в предыдущем посте - но опубликованное там решение не решает мою ошибку.
Мои требования заключались в том, чтобы
1) загружать документы из нескольких слов и 2) объединять документы в одно слово.
Ребята, мне удалось объединить файлы с помощью Apache POI API. Однако, как только я пытаюсь открыть объединенный файл, Microsoft Word генерирует следующую ошибку:
"Word обнаружил нечитаемый контент в final.docx. Хотите восстановить содержимое этого документа? Если вы доверяйте источнику этого документа, нажмите кнопку Да. "
Ребята, обратите внимание, что Microsoft Word может полностью восстановить файл после того, как я нажмите «ДА»; результирующие файлы были правильно объединены. Однако я хотел бы по возможности исключить предупреждение об ошибке повреждения файла.
Мой список кодов для класса слияния,
package rx.reportgenerator.gh;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
/**
*
* @author kwadwooteng-amoko
*/
public class WordMerge {
private final OutputStream merger;
private final List<InputStream> docs;
private XWPFDocument first;
public WordMerge(OutputStream result) {
this.merger = merger;
docs = new ArrayList<>();
}
public void add(InputStream document) throws Exception{
docs.add(document);
OPCPackage src = OPCPackage.open(document);
XWPFDocument xDocument = new XWPFDocument(src);
XWPFParagraph paragraph = xDocument.createParagraph();
paragraph.setPageBreak(true);
if(docs.size() == 1){
first = xDocument;
} else {
CTBody xBody = xDocument.getDocument().getBody();
first.getDocument().addNewBody().set(xBody);
}
}
public void doMerge() throws Exception{
first.write(merger);
}
public void close() throws Exception{
merger.flush();
merger.close();
for (InputStream input : inputs) {
input.close();
}
}
}
Мои библиотечные зависимости, насколько мне известно, все до даты:
Понятия не имею, почему код генерирует ошибку. Хотя слияние завершено точно. Можете ли вы помочь мне, ребята