Добавление документа с использованием POI с сохранением исходного форматированияJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Добавление документа с использованием POI с сохранением исходного форматирования

Сообщение Anonymous »

Я новичок в POI.
когда я объединяю более одного документа с одним и тем же семейством шрифтов (Airal, Calibri, Times New Roman), с объединенным документом проблем не возникает. Например, если у меня есть два документа с одним и тем же семейством шрифтов Calibri, проблем с объединением документов не возникнет. Он сохраняет и выводит исходное форматирование.
Однако объединение разных документов с разными шрифтами Faimly приводит к путанице. Например, если у меня более одного документа Airal, Calibri, исходное форматирование не сохраняется. особенно второй документ. Первый вариант подходит для комбинированного документа
1. Что я делаю неправильно и как этого избежать?
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
import org.apache.xmlbeans.XmlOptions;

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

public class ClearCTBodyAndAppend {
public static void main(String[] args) {
try (FileInputStream fis1 = new FileInputStream("path/to/your/first_document.docx");
XWPFDocument document1 = new XWPFDocument(fis1);
FileInputStream fis2 = new FileInputStream("path/to/your/second_document.docx");
XWPFDocument document2 = new XWPFDocument(fis2)) {

// Append the body of the second document to the first
CTBody ctBody1 = document1.getDocument().getBody();
CTBody ctBody2 = document2.getDocument().getBody();
appendBody(ctBody1, ctBody2);

// Save the modified document
try (FileOutputStream fos = new FileOutputStream("path/to/your/combined_document.docx")) {
document1.write(fos);
}

} catch (IOException e) {
e.printStackTrace();
}
}

private static void appendBody(CTBody src, CTBody append) {
try {
XmlOptions optionsOuter = new XmlOptions();
optionsOuter.setSaveOuter();
String appendString = append.xmlText(optionsOuter);
String srcString = src.xmlText();
String prefix = srcString.substring(0, srcString.indexOf(">") + 1);
String mainPart = srcString.substring(srcString.indexOf(">") + 1, srcString.lastIndexOf("

Подробнее здесь: https://stackoverflow.com/questions/787 ... formatting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»