我在 Java 中使用 Odtftoolkit 库,并且我有一个使用带有TextUserFieldDeclElement
. 我的过程从同一个模板制作了两个不同的文档,我需要在同一个文档中显示两个页面。我的问题是TextUserFieldDeclElement
第一页显示的值与第二页相同。
我的代码是这样的:
1:制作每个文档(我首先使用对象“plantilla”调用此方法,然后使用其他不同的对象“plantilla”)。
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);
}