1

我在 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);
}
4

0 回答 0