Created attachment 35230 [details] The file caused the exeption
Code that caused the drop XWPFDocument docx = new XWPFDocument(new FileInputStream("D:\\curs.docx")); ArrayList<Segment> topic = new ArrayList<>(); int i = 0; for(XWPFParagraph paragraph : docx.getParagraphs()){ byte sid = paragraph.getStyleID() != null ? (byte) paragraph.getStyleID().charAt(0) : 0; if (sid >= 49 && sid <=52 ){ if (paragraph.getText().length() > 0) { System.out.println(paragraph.getStyleID() + ":" + paragraph.getText()); Segment segment = new Segment(paragraph.getText(), Integer.valueOf(paragraph.getStyleID().charAt(0))); segment.doc = new XWPFDocument(docx.getPackage()); segment.from = i; if(topic.size() > 0){ topic.get(topic.size() - 1).to = i - 1; } topic.add(segment); } } i++; } for(Segment segment : topic){ i = 0; for(XWPFParagraph paragraph : docx.getParagraphs()) { if(!(i >= segment.from && i <=segment.to)){ int pPos = segment.doc.getPosOfParagraph(paragraph); segment.doc.removeBodyElement(pPos); } i++; } segment.doc.write(new FileOutputStream(new File("D:\\test\\" + segment.title + ".docx"))); segment.doc.close(); }
I don't think using the existing parts for creating new XWFPDocument instances like you try to do here will work, probably better to immediately retrieve the necessary information from the part and not create many instances of XWPFDocument here. If you still cannot get it to work when not doing this copying, then please reopen this issue and attach a real self-sufficient unit-test, your example relies on some classes that are not included, so it cannot be reproduced easily.