Я новичок в 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
Добавление документа с использованием POI с сохранением исходного форматирования ⇐ JAVA
Программисты JAVA общаются здесь
1719981477
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("
Подробнее здесь: [url]https://stackoverflow.com/questions/78700087/appending-docx-using-poi-by-keep-original-formatting[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия