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:
Ich würde nur 'TEST' erwarten und nur 'Variable' ohne die Markierungen im Ausgabedokument bekommen.
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.
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.
Tags und Links docx4j