Wie man mit Dokumenteigenschaften in .NET arbeitet

Wie man mit Dokumenteigenschaften in .NET arbeitet

Wie man mit Dokumenteigenschaften in .NET arbeitet

Jedes Word-Dokument enthält zwei Kategorien von Metadaten — die Standardfelder, die Word für jede Datei verfolgt, und alle anwendungsspezifischen Werte, die ein Programm hinzugefügt hat. Dieser Leitfaden zeigt, wie man beide mit Aspose.Words FOSS für .NET liest und setzt, wobei Document.BuiltInDocumentProperties und Document.CustomDocumentProperties verwendet werden, die letztlich beide auf derselben DocumentProperty-Darstellung basieren.


Schritt-für-Schritt-Anleitung

Schritt 1: Eingebaute Dokumenteigenschaften lesen und setzen

Document.BuiltInDocumentProperties gibt eine BuiltInDocumentProperties-Sammlung zurück. Da es sich um eine feste, bekannte Menge von Eigenschaften handelt, werden Werte als gewöhnliche Mitglieder gelesen und geschrieben, anstatt sie nach Namen zu suchen — zum Beispiel BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords und .Comments für beschreibende Felder oder .CreatedTime, .LastSavedTime, .LastPrinted und .LastSavedBy für Zeitstempel. Statistiken wie .Characters, .CharactersWithSpaces, .Lines und .Bytes werden ebenfalls auf diese Weise bereitgestellt, zusammen mit .Template und .HyperlinkBase.


Schritt 2: Eine benutzerdefinierte Dokumenteigenschaft hinzufügen

Document.CustomDocumentProperties gibt eine CustomDocumentProperties Sammlung für anwendungsdefinierte Metadaten zurück, die nicht Teil des integrierten Word-Satzes ist. Rufen Sie eine der Add(name, value) Überladungen mit einem Namen und einem typisierten Wert auf – Zeichenfolge, Zahl, Boolesch oder Datum, je nachdem, welche Überladung dem Typ des Wertes entspricht – um eine neue Eigenschaft zu erstellen.


Schritt 3: Eine benutzerdefinierte Eigenschaft mit Dokumentinhalt verknüpfen

Anstatt eines statischen Wertes kann eine benutzerdefinierte Eigenschaft einen mit einem Lesezeichen versehenen Inhaltsbereich verfolgen, sodass ihr Wert mit diesem Inhalt synchron bleibt. Rufen Sie CustomDocumentProperties.AddLinkToContent(name, linkSource) auf und übergeben Sie einen Lesezeichennamen als linkSource, anstatt eine statische Eigenschaft manuell neu zu synchronisieren, wenn sich der verknüpfte Inhalt ändert.


Schritt 4: Eigenschaften nachschlagen, prüfen und entfernen

Sowohl BuiltInDocumentProperties als auch CustomDocumentProperties leiten sich von dem abstrakten DocumentPropertyCollection ab, sodass sie auf dieselbe Weise untersucht werden: Das Indizieren nach Name (z. B. properties[name]) ruft eine Eigenschaft ab, Contains(name) prüft, ob sie existiert, IndexOf(name) gibt ihre Position zurück und Count meldet, wie viele Eigenschaften die Sammlung enthält. Rufen Sie Contains(name) vor dem Indizieren nach Name auf, wenn eine benutzerdefinierte Eigenschaft möglicherweise nicht existiert, um zu vermeiden, dass ein fehlendes Property als Ausnahmeweg behandelt wird. Entfernen Sie eine Eigenschaft mit Remove(name) oder RemoveAt(index) oder leeren Sie alle Eigenschaften in der Sammlung mit Clear().


Schritt 5: Den Wert einer benutzerdefinierten Eigenschaft lesen, ohne ihren Typ im Voraus zu kennen

Ein DocumentProperty verfügt über ein Name, ein untypisiertes Value und ein Type – einen PropertyType Aufzählungswert: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray oder Other. Da Value untypisiert ist, verwenden Sie den passenden typisierten Zugriffspunkt anstelle einer direkten Typumwandlung: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() oder ToString(). Prüfen Sie IsLinkToContent und LinkSource, um festzustellen, ob eine Eigenschaft mit dem Dokumentinhalt verknüpft ist (siehe Schritt 3) und nicht einen statischen Wert enthält.


Schritt 6: Den Schutzstatus eines Dokuments prüfen

BuiltInDocumentProperties.Security meldet einen DocumentSecurity Wert, der die im Dokument gespeicherten Schutz-Metadaten beschreibt: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced oder ReadOnlyExceptAnnotations. Lesen Sie diese Eigenschaft, bevor Sie entscheiden, ob weitere schutzbezogene Verarbeitung eines geladenen Dokuments erforderlich ist.


Häufige Probleme und Lösungen

Indexieren eines CustomDocumentProperties Sammlung nach Namen liefert nichts Verwendbares. Die Eigenschaft existiert in diesem Dokument nicht. Rufen Sie Contains(name) zuerst, oder fügen Sie die Eigenschaft mit der entsprechenden Add(name, value) Überladung.

Das Auslesen des Werts einer benutzerdefinierten Eigenschaft liefert den falschen Typ. DocumentProperty.Value ist untypisiert object; der Aufrufer nahm einen Typ an, der nicht übereinstimmt Type. Verwenden Sie den entsprechenden typisierten Zugriff (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) basierend auf DocumentProperty.Type.

Ein verknüpfter benutzerdefinierter Eigenschaftswert sieht veraltet aus. Die Eigenschaft ist verknüpft über AddLinkToContent, und der markierte Inhalt wurde geändert. Bestätigen Sie die linkSource Lesezeichen markiert weiterhin den Bereich, der den Eigenschaftswert speisen sollte.

Wortstatistiken wie Characters or Lines stimmen nicht mit dem tatsächlichen aktuellen Inhalt des Dokuments überein. Eingebaute Statistiken spiegeln gespeicherte Metadaten wider, nicht eine Live-Neuzählung. Berechnen Sie neu und aktualisieren Sie die relevanten BuiltInDocumentProperties Werte, wenn ein aktueller Zählwert erforderlich ist.


Häufig gestellte Fragen

Wie lese oder setze ich den Autor und den Titel des Dokuments?

Verwenden Sie Document.BuiltInDocumentProperties.Author und .Title direkt — sie sind gewöhnliche String-Eigenschaften in der BuiltInDocumentProperties-Auflistung, die über Document.BuiltInDocumentProperties erreicht wird.

Wie füge ich anwendungsspezifische Metadaten hinzu, die keine Standard-Word-Eigenschaft sind?

Verwenden Sie Document.CustomDocumentProperties.Add(name, value) mit dem Namen und dem Wert der Eigenschaft; die passende Add-Überladung wird basierend auf dem Typ des Wertes ausgewählt.

Was ist der Unterschied zwischen BuiltInDocumentProperties und CustomDocumentProperties?

BuiltInDocumentProperties ist Words fester Satz standardisierter Metadatenfelder, auf die als benannte Mitglieder zugegriffen wird. CustomDocumentProperties ist eine offene, benannte Sammlung von DocumentProperty-Werten für anwendungsdefinierte Metadaten, die über den Indexer (z. B. properties[name]) und Contains per Name abgerufen wird.

Wie lasse ich eine benutzerdefinierte Eigenschaft einen Teil des Dokumentinhalts verfolgen anstelle eines statischen Wertes?

Verwenden Sie CustomDocumentProperties.AddLinkToContent(name, linkSource) und übergeben Sie einen Lesezeichen-Namen als linkSource; der Wert der Eigenschaft spiegelt dann diesen Lesezeichen-Inhalt wider.

Wie prüfe ich, ob ein Dokument passwortgeschützt ist?

Lese Document.BuiltInDocumentProperties.Security, einen DocumentSecurity-Wert; PasswordProtected weist darauf hin, dass die im Dokument gespeicherten Metadaten Passwortschutz angeben.


Siehe auch

 Deutsch