docx4j ersetzt keine Variablen

7

Ich folgte nur Ansatz Nr. 2 in der VariableReplace Beispiel von docx4j 2.8.1 und alles, was es tut, ist das Entfernen der Variablenmarker $ {}.

Die Schritte, die ich gemacht habe:

  • Geöffnetes Word 2013 gab $ {variable} nur als Text
  • ein
  • Gespeichert hat es irgendwo
  • lese es in meinem Java-Programm und baue meine HashMap mit .put ("variable", "TEST");
  • anderer Code wird aus dem obigen Beispiel kopiert und eingefügt.
  • Gespeichert das Dokument

Ich würde nur 'TEST' erwarten und nur 'Variable' ohne die Markierungen im Ausgabedokument bekommen.

    
Martin Dames 13.06.2013, 17:51
quelle

2 Antworten

19

Zweifelsohne spaltet Word Ihre "Variable" quer durch Läufe auf, mit Grammatik- oder Rechtschreibflags.

Fix it up mit VariablePrepare

Fügen Sie diese Zeile ein, nachdem Sie das WordprocessingMLPackage instanziiert haben:

%Vor%

Dann können Sie Ihre Zuordnungen verwenden, um die Variablen zu ersetzen.

    
JasonPlutext 17.06.2013 08:40
quelle
1

Ich weiß, dass dies ein alter Post ist, aber für andere, die darauf stolpern, ist ein anderer Grund, warum Sie dieses Ergebnis erhalten, wenn Sie falsche "Schlüssel" in Ihrer HashMap haben. In meinem Fall benutzte ich mein altes XML-Format als Schlüssel wie

%Vor%

wenn ich hätte verwenden sollen:

%Vor%

Das Dokument selbst verwendete Tags wie

%Vor%

Der VariableReplace-Code entfernt die Formatierung $ {}, ob eine Übereinstimmung gefunden wurde oder nicht. Wenn also keine Übereinstimmung gefunden wird, stimmen die Schlüssel möglicherweise nicht mit denen im Dokument überein, und dies hängt möglicherweise nicht unbedingt mit VariablePrepare zusammen. Aber das war ein sehr hilfreicher Beitrag für mich, da die VariablePrepare, VariableReplace Lösung jetzt für meine Zwecke funktioniert.

Ich bin mir auch nicht sicher, ob auch VariablePrepare mit dem Fall umgehen kann, in dem Sie die Schriftart, die Hervorhebung oder andere Formatierungen in der Mitte Ihres Tags im Dokument ändern. In solchen Fällen ist es nicht möglich, das Tag zu einem einzigen Lauf zusammenzuführen, und daher wird die Tag-Erkennung wahrscheinlich fehlschlagen.

    
Ted 19.08.2013 22:01
quelle

Tags und Links