Ce type de collection représente un ensemble de références à des objets existants. Il s’agit de collections temporaires, généralement utilisées pour transmettre différents ensembles de paramètres à des méthodes qui en ont besoin. Vous créez cette collection, vous y ajoutez des éléments (sous forme de références à des objets existants), vous la transmettez à la méthode requise, puis vous détruisez la collection, tandis que les objets qui y ont été ajoutés sont conservés. Le nom de ces collections se termine par le suffixe Collection (par exemple, StringsCollection, IntsCollection).Pour utiliser une collection de ce type :
Créez la collection à l’aide de la méthode de création correspondante de l’objet Engine. Par exemple, pour l’objet IntsCollection, il s’agit de la méthode CreateIntsCollection. Ces collections peuvent également être les valeurs de retour de certaines méthodes.
Ajoutez des objets existants à la collection à l’aide de sa méthode Add. Vous pouvez parcourir la collection à l’aide de sa propriété Count en lecture seule, de sa propriété Element en lecture-écriture et de sa méthode Item. La première renvoie le nombre d’éléments réellement contenus dans la collection ; les deuxième et troisième donnent accès à l’élément situé à l’indice spécifié. La propriété Element vous permet d’accéder à un élément de la collection à l’aide de l’opérateur [] en C#.
Si nécessaire, modifiez la collection à l’aide de ses autres méthodes : InsertAt, DeleteAt, DeleteAll.
Passez la collection à la méthode qui l’exige comme paramètre.
Exemple d’utilisation de l’objet IntsCollection en C# :
Code C#
for( int i = 0; i < Document.Pages.Count; i++ ){ if( Document.Pages[i].PageStructureOutOfDate ) { pageIndices.Add( i ); }}// Passe la collection d’indices de page créée à une méthode de traitementif( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate ){ Document.SynthesizePages( pageIndices, null );}
Un autre type représente une collection d’objets enfants d’un objet parent. Ces collections existent tant que leur objet parent existe. Elles vous permettent d’ajouter ou de supprimer des objets enfants de l’objet parent. Lorsqu’un élément est ajouté à la collection, un nouvel objet est créé en interne, puis ajouté à la collection. Exemples de telles collections : DictionaryDescriptions – une collection d’objets de description de dictionnaire, BaseLanguages – une collection de langues de base.Pour utiliser ce type de collections :
Obtenez la collection via la propriété de son objet parent. Par exemple, si vous voulez accéder à la collection des langues de base d’une langue de reconnaissance, utilisez la propriété DictionaryDescriptions de l’objet BaseLanguage.
Parcourez la collection à l’aide de la propriété Count en lecture seule, de la propriété Element et de la méthode Item. La première renvoie le nombre d’éléments effectivement contenus dans la collection, les deuxième et troisième renvoient l’élément situé à l’indice spécifié. La propriété Element permet d’accéder à un élément de la collection à l’aide de l’opérateur [] en C#.
Si nécessaire, ajoutez de nouveaux éléments à la collection à l’aide de sa méthode AddNew. Les méthodes AddNew des différentes collections peuvent avoir une syntaxe légèrement différente, mais elles font toutes la même chose : créer un nouvel élément de collection et l’ajouter à la collection. Vous pouvez supprimer des éléments à l’aide des méthodes DeleteAt, DeleteAll.
Exemple d’utilisation de l’objet DictionaryDescriptions en C# :
Code C#
FREngine.IEngine Engine = null;FREngine.IBaseLanguage baseLanguage = null;// Initialiser Engine et obtenir une langue de base d'une langue de texte...// Obtenir la collection des descriptions de dictionnaire d'une langue de base et supprimer tous les élémentsIDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;dictionaryDescriptions.DeleteAll();// Créer une description de dictionnaire utilisateur et l'ajouter à la collectionIDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
Certaines collections d’objets enfants sont en lecture seule. Cela signifie qu’elles ne disposent pas de méthodes de modification : vous pouvez seulement parcourir leurs éléments et les consulter. Exemples de telles collections : PredefinedLanguages – une collection de langues prédéfinies, Paragraphs – une collection de paragraphes d’un texte.Pour consulter les éléments de telles collections :
Récupérez la collection via la propriété de son objet parent. Par exemple, si vous souhaitez accéder à la collection de paragraphes d’un texte, utilisez la propriété Paragraphs de l’objet Text.
Parcourez la collection à l’aide des propriétés en lecture seule Count et Element, ainsi que de la méthode Item. La première renvoie le nombre d’éléments réellement contenus dans la collection ; les deuxième et troisième renvoient l’élément à l’indice spécifié. La propriété Element vous permet d’accéder à un élément de la collection à l’aide de l’opérateur [] en C#.
Exemple d’utilisation de l’objet Paragraphs en C# :
Code C#
FREngine.IEngine Engine = null;FREngine.IBlock block = null;// Initialiser Engine, reconnaître un document et obtenir un bloc de texte d’un layout...FREngine.ITextBlock textBlock = block.GetAsTextBlock();// Parcourir les paragraphes du texte du blocint paragraphsCount = textBlock.Text.Paragraphs.Count;for (int iPar = 0; iPar < paragraphsCount; iPar++){ FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar]; string text = par.Text;}
Vous trouverez ci-dessous la liste complète des collections disponibles dans FineReader Engine. Certaines d’entre elles proposent des méthodes supplémentaires pour manipuler les éléments. Voir les détails dans le tableau ci-dessous.
– cette collection dispose d’une méthode Find supplémentaire.
– cette collection dispose d’une méthode Find supplémentaire,
tandis que la méthode AddNew est remplacée par la
méthode Add.
– cette collection est également un dictionnaire ; par conséquent, la propriété
Element est remplacée par la propriété
Value.
– cette collection d’objets enfants diffère des autres collections du même
type. Elle ne dispose pas de la méthode AddNew ; à la place,
vous pouvez utiliser la méthode AddPage de l’objet parent
FRDocument. Elle ne dispose pas non plus de la méthode
DeleteAll, mais offre les méthodes supplémentaires
IndexOf, Remove et
Swap.
– cette collection ne dispose pas de méthode DeleteAt .
– cette collection dispose de la méthode AddFromFile et de la méthode AddFromMemory (Windows)
à la place de la méthode AddNew.
– cette collection dispose d’une méthode IndexOf supplémentaire.
– cette collection dispose d’une méthode Find supplémentaire.
– cette collection dispose d’une méthode IndexOf supplémentaire.
– cette collection dispose d’une méthode Find supplémentaire.
– cette collection dispose d’une méthode
GetSourcePageIndex supplémentaire.
– cette collection dispose de méthodes supplémentaires : IndexOf,
Merge et Split.
(Linux et Windows uniquement) – Cette collection se distingue de toutes les autres en ce qu’elle contient des constantes d’énumération, et non des objets. Elle dispose également d’une méthode Find supplémentaire.
– cette collection dispose de méthodes supplémentaires Delete,
Has.
– cette collection dispose de méthodes supplémentaires Delete,
Has, ainsi que des propriétés CustomMenuEnabled
, StandardMenuEnabled.
Toutes les interfaces de collection dérivent de l’interface IEnumerable. Cela signifie que vous pouvez utiliser l’instruction foreach en C# (for each en Visual Basic) pour manipuler des collections. Notez toutefois que l’utilisation de foreach avec des collections présente certaines particularités : par exemple, les énumérateurs ne peuvent pas servir à modifier la collection, mais uniquement à lire les données qu’elle contient. Voir les remarques sur msdn.microsoft.com.Exemple d’utilisation de foreach avec la collection FRPages en C# :
Code C#
FREngine.IFRDocument document;// Nous supposons que le document contient plusieurs pages...foreach( FREngine.IFRPage page in document.Pages ) { // effectuer une opération sur la page}