Odftoolkit Вставить документ с TextUserFieldDeclElement
Я использую библиотеку Odtftoolkit в Java, и у меня есть процесс, который использует шаблон документа с TextUserFieldDeclElement
, Мой процесс создает два разных документа из одного шаблона, и мне нужно показать обе страницы в одном документе. Моя проблема в том что TextUserFieldDeclElement
первой страницы показывает то же значение, что и вторая страница.
Мой код такой:
1: Создайте каждый документ (я вызываю этот метод сначала с помощью объекта "плантилла", а затем с другим объектом "плантилла").
TextDocument outputOdt = TextDocument.loadDocument(new File(plantilla));
OdfElement contenedor = outputOdt.getVariableContainerElement();
org.w3c.dom.NodeList nodos = contenedor
.getElementsByTagName("text:user-field-decl");
for (int i = 0; i < nodos.getLength(); i++) {
if (nodos.item(i) instanceof TextUserFieldDeclElement) {
TextUserFieldDeclElement txt = (TextUserFieldDeclElement) nodos
.item(i);
if (txt.getTextNameAttribute() != null) {
// Consultamos si el atributo está en el hash
if (poGlobal.containsKey(txt.getTextNameAttribute())) {
outputOdt.getVariableFieldByName(
txt.getTextNameAttribute()).updateField(
poGlobal.get(txt.getTextNameAttribute()),
null);
}
}
}
}
File ficTmp = Fichero.dameFicheroTemporal(".odt");
// Volcamos al fichero temporal
outputOdt.save(ficTmp);
arDocumentos.add(ficTmp);
2: я работаю с массивом arDocuments и пытаюсь скопировать все документы так же, как:
try {
TextDocument target = TextDocument.loadDocument(this.arDocumentos
.get(0));
// Por cada documento, copiamos y pegamos en el destino
for (int i = 1; i < this.arDocumentos.size(); i++) {
Paragraph parrafo = target.addParagraph(null);
TextDocument src = TextDocument.loadDocument(this.arDocumentos
.get(i));
target.insertContentFromDocumentAfter(src, parrafo, false);
}
target.save(new File(destino));
} catch (Exception ex) {
throw new CtrError("Error al cerrar el documento.", ex);
}