Zum Hauptinhalt springen
C#-Beispiele und Informationen gelten nur für FRE für Windows.
In ABBYY FineReader Engine gibt es drei Haupttypen von Sammlungen:
  • temporäre Sammlungen (Sammlungen von Verweisen auf vorhandene Objekte)
  • Sammlungen untergeordneter Objekte
  • nur lesbare Sammlungen untergeordneter Objekte
Auf dieser Seite finden Sie Informationen zu Folgendem:
  • wie Sie mit den einzelnen Sammlungstypen arbeiten
  • wie Sie die Liste aller verfügbaren Sammlungen anzeigen
  • wie Sie in FRE für Windows in .NET mit Sammlungen arbeiten

Temporäre Sammlungen

Dieser Sammlungstyp stellt eine Sammlung von Verweisen auf vorhandene Objekte dar. Es handelt sich um temporäre Sammlungen, die in der Regel verwendet werden, um verschiedene Parametersätze an Methoden zu übergeben, die diese benötigen. Sie erstellen eine solche Sammlung, fügen ihr Elemente hinzu (die Elemente werden als Verweise auf vorhandene Objekte hinzugefügt), übergeben sie an die benötigte Methode und löschen die Sammlung anschließend, während die ihr hinzugefügten Objekte erhalten bleiben. Solche Sammlungen tragen in ihrem Namen das Suffix Collection (z. B. StringsCollection, IntsCollection). So arbeiten Sie mit einer Sammlung dieses Typs:
  1. Erstellen Sie die Sammlung mit der entsprechenden Erstellmethode des Objekts Engine. Für das Objekt IntsCollection ist dies beispielsweise die Methode CreateIntsCollection. Diese Sammlungen können auch Rückgabewerte einiger Methoden sein.
  2. Fügen Sie der Sammlung vorhandene Objekte mit der Methode Add hinzu. Sie können die Sammlung durchlaufen, indem Sie die nur lesbare Eigenschaft Count, die Eigenschaft Element mit Lese-/Schreibzugriff und die Methode Item verwenden. Die erste liefert die tatsächliche Anzahl der in der Sammlung enthaltenen Elemente, die zweite und dritte ermöglichen den Zugriff auf das Element am angegebenen Index. Mit der Eigenschaft Element können Sie in C# über den Operator [] auf ein Element der Sammlung zugreifen.
  3. Ändern Sie die Sammlung bei Bedarf mit weiteren Methoden der Sammlung: InsertAt, DeleteAt und DeleteAll.
  4. Übergeben Sie die Sammlung als Parameter an die Methode, die sie benötigt.
Ein Beispiel für die Verwendung des Objekts IntsCollection in C#:
 
for( int i = 0; i < Document.Pages.Count; i++ )
{
 if( Document.Pages[i].PageStructureOutOfDate )
 {
  pageIndices.Add( i );
 }
}
// Übergeben Sie die erstellte Sammlung von Seitenindizes an eine Verarbeitungsmethode
if( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate )
{
 Document.SynthesizePages( pageIndices, null );
}

Sammlungen untergeordneter Objekte

Ein weiterer Typ stellt eine Sammlung untergeordneter Objekte eines übergeordneten Objekts dar. Diese Sammlungen existieren, solange ihr übergeordnetes Objekt existiert. Über solche Sammlungen können Sie dem übergeordneten Objekt untergeordnete Objekte hinzufügen oder daraus entfernen. Wenn Sie ein Element zur Sammlung hinzufügen, wird intern ein neues Objekt erstellt und anschließend der Sammlung hinzugefügt. Beispiele für solche Sammlungen: DictionaryDescriptions – eine Sammlung von Wörterbuchbeschreibungsobjekten, BaseLanguages – eine Sammlung von Basissprachen. So verwenden Sie solche Sammlungen:
  1. Rufen Sie die Sammlung über die Eigenschaft ihres übergeordneten Objekts ab. Wenn Sie beispielsweise auf die Sammlung der Wörterbuchbeschreibungen einer Basissprache zugreifen möchten, verwenden Sie die Eigenschaft DictionaryDescriptions des BaseLanguage-Objekts.
  2. Durchlaufen Sie die Sammlung mithilfe der nur lesbaren Eigenschaften Count und Element sowie der Methode Item. Die erste gibt die tatsächliche Anzahl der in der Sammlung enthaltenen Elemente zurück, die zweite und dritte geben das Element am angegebenen Index zurück. Mit der Eigenschaft Element können Sie in C# mithilfe des Operators [] auf ein Element der Sammlung zugreifen.
  3. Fügen Sie bei Bedarf mit der Methode AddNew neue Elemente zur Sammlung hinzu. Die AddNew-Methoden verschiedener Sammlungen können eine leicht unterschiedliche Syntax haben, bewirken aber alle dasselbe: Sie erstellen ein neues Sammlungselement und fügen es der Sammlung hinzu. Elemente können Sie mit den Methoden DeleteAt und DeleteAll löschen.
Ein Beispiel für die Arbeit mit dem Objekt DictionaryDescriptions in C#:
FREngine.IEngine Engine = null;
FREngine.IBaseLanguage baseLanguage = null;
// Engine initialisieren und eine Basissprache einer Textsprache abrufen
...
// Sammlung von Wörterbuchbeschreibungen einer Basissprache abrufen und alle Elemente entfernen
IDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;
dictionaryDescriptions.DeleteAll();
// Eine Benutzerwörterbuchbeschreibung erstellen und der Sammlung hinzufügen
IDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );

Nur lesbare Sammlungen

Einige Sammlungen untergeordneter Objekte sind nur lesbar. Das bedeutet, dass sie keine Methoden zum Bearbeiten haben; Sie können ihre Elemente nur durchlaufen und anzeigen. Beispiele für solche Sammlungen sind: PredefinedLanguages – eine Sammlung vordefinierter Sprachen, Paragraphs – eine Sammlung von Absätzen eines Texts. So zeigen Sie die Elemente solcher Sammlungen an:
  1. Rufen Sie die Sammlung über die Eigenschaft des übergeordneten Objekts ab. Wenn Sie beispielsweise auf die Sammlung von Absätzen eines Texts zugreifen möchten, verwenden Sie die Eigenschaft Paragraphs des Text-Objekts.
  2. Durchlaufen Sie die Sammlung mithilfe der nur lesbaren Eigenschaften Count und Element sowie der Methode Item. Die erste liefert die Anzahl der Elemente, die tatsächlich in der Sammlung enthalten sind, die zweite und die dritte liefern das Element am angegebenen Index. Mit der Eigenschaft Element können Sie in C# über den Operator [] auf ein Element der Sammlung zugreifen.
Ein Beispiel für die Arbeit mit dem Paragraphs-Objekt in C#:
FREngine.IEngine Engine = null;
FREngine.IBlock block = null;
// Engine initialisieren, ein Dokument erkennen und einen Textblock eines Layouts abrufen
...
FREngine.ITextBlock textBlock = block.GetAsTextBlock();
// Absätze des Texts des Blocks durchlaufen
int paragraphsCount = textBlock.Text.Paragraphs.Count;
for (int iPar = 0; iPar < paragraphsCount; iPar++)
{
 FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
 string text = par.Text;
}

Alle verfügbaren Sammlungen

Nachfolgend finden Sie die vollständige Liste der in FineReader Engine verfügbaren Sammlungen. Einige Sammlungen bieten zusätzliche Methoden für die Arbeit mit Elementen. Einzelheiten finden Sie in der folgenden Tabelle.

  • – Diese Sammlung verfügt über eine zusätzliche Find-Methode.
  • – Diese Sammlung verfügt über eine zusätzliche Find-Methode; die AddNew-Methode wird durch die Add-Methode ersetzt.
  • – Diese Sammlung ist zugleich ein Wörterbuch; daher wird die Element-Eigenschaft durch die Value-Eigenschaft ersetzt.
  • – Diese Sammlung untergeordneter Objekte unterscheidet sich von anderen desselben Typs. Sie verfügt nicht über die AddNew-Methode; stattdessen kann die AddPage-Methode des übergeordneten FRDocument-Objekts verwendet werden. Außerdem fehlt die DeleteAll-Methode; dafür stehen die zusätzlichen Methoden IndexOf, Remove und Swap zur Verfügung.
  • – Diese Sammlung verfügt nicht über eine DeleteAt -Methode.
  • – Diese Sammlung verfügt anstelle der AddNew-Methode über die AddFromFile -Methode und die AddFromMemory-Methode (Windows).
  • – Diese Sammlung verfügt über eine zusätzliche IndexOf-Methode.
  • – Diese Sammlung verfügt über eine zusätzliche Find-Methode.
  • – Diese Sammlung verfügt über eine zusätzliche IndexOf-Methode.
  • – Diese Sammlung verfügt über eine zusätzliche Find-Methode.
  • – Diese Sammlung verfügt über eine zusätzliche GetSourcePageIndex-Methode.
  • – Diese Sammlung verfügt über die zusätzlichen Methoden IndexOf, Merge und Split.
  • (nur Linux und Windows) – Diese Sammlung unterscheidet sich von allen anderen dadurch, dass sie Enumerationskonstanten enthält und keine Objekte. Sie verfügt außerdem über eine zusätzliche Find-Methode.
    • – diese Sammlung verfügt über die zusätzlichen Methoden Delete und Has.
    • – diese Sammlung verfügt über die zusätzlichen Methoden Delete und Has sowie die Eigenschaften CustomMenuEnabled und StandardMenuEnabled.

Arbeiten mit Sammlungen in .NET

Alle Schnittstellen für Sammlungen leiten sich von der IEnumerable-Schnittstelle ab. Das bedeutet, dass Sie die foreach-Anweisung in C# (For Each in Visual Basic) verwenden können, um mit Sammlungen zu arbeiten. Beachten Sie, dass die Arbeit mit Sammlungen mittels foreach einige Besonderheiten aufweist: Enumeratoren können beispielsweise nicht zum Ändern der Sammlung verwendet werden, sondern nur zum Lesen der darin enthaltenen Daten. Siehe die Hinweise auf msdn.microsoft.com. Ein Beispiel für die Verwendung von foreach mit der FRPages-Sammlung in C#:
FREngine.IFRDocument document;
// Wir gehen davon aus, dass das Dokument einige Seiten enthält
...
foreach( FREngine.IFRPage page in document.Pages ) {
 // etwas mit der Seite tun
}