package word;

import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;

import java.io.FileInputStream; import java.io.FileOutputStream;

public class Word { public static void main(String[] args) { try { // 读取输入文件 FileInputStream input01 = new FileInputStream('input01.docx'); XWPFDocument document01 = new XWPFDocument(input01); FileInputStream input03 = new FileInputStream('input03.docx'); XWPFDocument document03 = new XWPFDocument(input03);

        // 获取输入文件的书签
        for (XWPFParagraph paragraph : document01.getParagraphs()) {
            for (XWPFRun run : paragraph.getRuns()) {
                for (CTBookmark bookmark : run.getCTR().getBookmarkStartArray()) {
                    String bookmarkName = bookmark.getName();
                    // 获取对应的书签位置
                    XWPFParagraph targetParagraph = findBookmarkParagraph(document03, bookmarkName);
                    if (targetParagraph != null) {
                        // 复制内容到目标书签位置
                        XWPFRun newRun = targetParagraph.createRun();
                        newRun.setText(run.getText(0));
                        newRun.setFontSize(run.getFontSizeAsDouble());
                        newRun.setFontFamily(run.getFontFamily());
                        newRun.setBold(run.isBold());
                        newRun.setItalic(run.isItalic());
                        newRun.setUnderline(run.getUnderline());
                    }
                }
            }
        }

        // 保存新文件
        FileOutputStream output = new FileOutputStream('input04.docx');
        document03.write(output);
        output.close();

        // 关闭文件流
        document01.close();
        document03.close();
        input01.close();
        input03.close();

        System.out.println('复制完成!');
    } catch (Exception e) {
        e.printStackTrace();
    }
}

// 根据书签名称找到对应的段落
private static XWPFParagraph findBookmarkParagraph(XWPFDocument document, String bookmarkName) {
    for (XWPFParagraph paragraph : document.getParagraphs()) {
        for (CTBookmark bookmark : paragraph.getCTP().getBookmarkStartArray()) {
            if (bookmark.getName().equals(bookmarkName)) {
                return paragraph;
            }
        }
    }
    return null;
}

}


原文地址: https://www.cveoy.top/t/topic/fLZl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录