DOCX4J - шаблон docx - конвертер PDFJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 DOCX4J - шаблон docx - конвертер PDF

Сообщение Anonymous »

Я хочу преобразовать шаблон DOCX в PDF на Java с помощью Maven. Шаблон содержит условия if, циклы каждого и динамически отображаемые таблицы на основе данных. Мне нужно заполнить этот шаблон данными JSON, а затем преобразовать его в PDF. Как этого добиться?
Я пробовал использовать библиотеку DOCx4J, но столкнулся с некоторыми проблемами. В частности, я борюсь с обработкой условных операторов и циклов в шаблоне. Кроме того, динамическое отображение таблиц на основе данных JSON не работает должным образом.
Вот краткое изложение того, что я сделал на данный момент:
  • Шаблон DOCX загружен с помощью DOCx4J.
  • Попытка заполнить шаблон данными JSON.< /p>
  • Пытался обрабатывать условные операторы и циклы в шаблоне.
Может ли кто-нибудь предоставить рекомендации или примеры того, как правильно этого добиться? Будем очень признательны за любую помощь в обработке условных операторов, циклов и динамического рендеринга таблиц в шаблонах DOCX.
pom.xml


org.docx4j
docx4j
11.5.1


org.docx4j
docx4j-export-fo
11.5.1


org.glassfish.jaxb
jaxb-runtime
2.3.6



Код Java
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.wml.*;

import java.io.File;
import java.util.List;
import java.util.Map;

public class DocxToPdfConverter {

public static void main(String[] args) throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File("documentTemplate_docx4j.docx"));
replacePlaceholders(wordMLPackage, data);
wordMLPackage.save(new File("filled_template.docx"));
}

// Method to replace placeholders in the DOCX template
private static void replacePlaceholders(WordprocessingMLPackage wordMLPackage, Map data) {
// Get the content of the DOCX document
List paragraphs = wordMLPackage.getMainDocumentPart().getContent();

for (Object obj : paragraphs) {
if (obj instanceof P) { // If the object is a paragraph
P paragraph = (P) obj;
List runs = paragraph.getContent();
for (Object runObj : runs) {
if (runObj instanceof R) { // If the object is a run (text chunk)
R run = (R) runObj;
List texts = run.getContent();
for (Object textObj : texts) {
if (textObj instanceof Text) { // Use org.docx4j.wml.Text instead of T
Text text = (Text) textObj;
String textValue = text.getValue();

// Replace placeholders with data
for (Map.Entry entry : data.entrySet()) {
textValue = textValue.replace("", entry.getValue());
}

// Set the updated value
text.setValue(textValue);
}
}
}
}
}
}
}
}


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • DOCX4J - шаблон docx - конвертер PDF
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • DOCX4J - Шаблон DOCX - PDF -конвертер
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • DOCX4J - Шаблон DOCX - PDF -конвертер
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Docx Шаблон Docx4j, заменяющий текст в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Docx в PDF -преобразование с использованием DOCX4J создает артефакт в пронумерованном списке
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

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