Ersetzen Sie Felder durch statischen Text

Das Ersetzen von Feldern ist häufig erforderlich, wenn Sie Ihr Dokument als statische Kopie speichern möchten. Zum Beispiel beim Versenden als Anhang in einer E-Mail. Durch die Konvertierung von Feldern wie DATE oder TIME in statischen Text wird im Dokument das gleiche Datum angezeigt, an dem es gesendet wurde. In manchen Situationen müssen Sie möglicherweise auch die bedingten IF-Felder aus Ihrem Dokument entfernen und sie stattdessen durch das aktuellste Textergebnis ersetzen. Konvertieren Sie beispielsweise das Ergebnis des IF-Felds in statischen Text, damit es seinen Wert nicht mehr dynamisch ändert, wenn Felder im Dokument aktualisiert werden.

Das folgende Diagramm zeigt, wie das IF-Feld in einem Dokument gespeichert wird:

  • Der Text ist von den speziellen Feldknoten FieldStart und FieldEnd umgeben
  • Der FieldSeparator-Knoten trennt den Text innerhalb des Feldes in den Feldcode und das Feldergebnis
  • Der Feldcode definiert das allgemeine Verhalten des Feldes, während das Feldergebnis das aktuellste Ergebnis beibehält, wenn dieses Feld mit Microsoft Word oder Aspose.Words aktualisiert wird
  • Das Feldergebnis ist das, was im Feld gespeichert und beim Betrachten im Dokument angezeigt wird

update-remove-a-field-aspose-words

Die Struktur ist unten auch in hierarchischer Form anhand des Demoprojekt “DocumentExplorer”. ersichtlich

update-remove-a-field-aspose-words-2

Felder, die nicht durch Text ersetzt werden können

Das Ersetzen eines Felds durch statischen Text funktioniert bei einigen Feldern in einer Kopf- oder Fußzeile nicht ordnungsgemäß.

Wenn Sie beispielsweise versuchen, das PAGE-Feld in einer Kopf- oder Fußzeile in statischen Text umzuwandeln, wird auf allen Seiten derselbe Wert angezeigt. Dies liegt daran, dass Kopf- und Fußzeilen auf mehreren Seiten wiederholt werden. Wenn sie als Felder verbleiben, werden sie besonders behandelt, damit auf jeder Seite das richtige Ergebnis angezeigt wird.

Im Header lässt sich das PAGE-Feld jedoch gut in einen statischen Textlauf übersetzen. Dieser Textlauf wird so ausgewertet, als wäre es die letzte Seite im Abschnitt, was dazu führt, dass in jedem PAGE-Feld in der Kopfzeile die letzte Seite aller Seiten angezeigt wird.

Das folgende Codebeispiel zeigt, wie das Feld durch sein neuestes Ergebnis ersetzt wird:

Konvertieren Sie bestimmte Feldtypen in bestimmte Dokumentteile

Da die ConvertFieldsToStaticText-Methode zwei Parameter akzeptiert – die CompositeNode-Eigenschaften und die FieldType-Enumeration – ist es möglich, jeden zusammengesetzten Knoten an diese Methode zu übergeben. Dadurch können Felder nur in bestimmten Teilen des Dokuments in statischen Text umgewandelt werden.

Sie können beispielsweise ein Document-Objekt übergeben und Felder des angegebenen Typs aus dem gesamten Dokument in statischen Text konvertieren, oder Sie können ein Body-Objekt eines Abschnitts übergeben und nur die in diesem Hauptteil gefundenen Felder konvertieren.

Die an die ConvertFieldsToStaticText-Methode übergebene FieldType-Enumeration gibt an, welche Art von Feldern in statischen Text konvertiert werden sollen. Alle anderen im Dokument gefundenen Feldtypen bleiben unverändert.

Das folgende Codebeispiel zeigt, wie man Felder eines bestimmten Typs – targetFieldType – in einem bestimmten Knoten – compositeNode – auswählt und sie dann in statischen Text umwandelt:

Das folgende Codebeispiel zeigt, wie alle IF-Felder in einem Dokument in statischen Text konvertiert werden:

Das folgende Codebeispiel zeigt, wie alle PAGE-Felder im Hauptteil eines Dokuments in statischen Text konvertiert werden:

Das folgende Codebeispiel zeigt, wie alle IF-Felder im letzten Absatz in statischen Text konvertiert werden: