> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Travailler avec les collections

> Trois types de collections d’ABBYY FineReader Engine : les collections temporaires, les collections d’objets enfants et les collections d’objets enfants en lecture seule, ainsi que la façon d’utiliser chacune d’elles.

<Note>
  Les exemples en C# et les informations s’appliquent uniquement à FRE for Windows.
</Note>

Il existe trois grands types de collections dans ABBYY FineReader Engine :

* les collections temporaires (collections de références à des objets existants)
* les collections d’objets enfants
* les collections d’objets enfants en lecture seule

Sur cette page, vous trouverez des informations sur les points suivants :

* comment travailler avec chaque type de collection

* comment afficher la liste de toutes les collections disponibles

* comment travailler avec les collections en .NET dans FRE for Windows

<div id="temporary-collections">
  ## Collections temporaires
</div>

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 :

1. Créez la collection à l’aide de la méthode de création correspondante de l’objet [Engine](/fr/fine-reader/engine/api-reference/engine-object-iengine-interface). Par exemple, pour l’objet IntsCollection, il s’agit de la méthode [CreateIntsCollection](/fr/fine-reader/engine/api-reference/engine-object-iengine-interface/creation-methods/createlessobjectgreater-methods). Ces collections peuvent également être les valeurs de retour de certaines méthodes.
2. Ajoutez des objets existants à la collection à l’aide de sa méthode [Add](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/add-method). Vous pouvez parcourir la collection à l’aide de sa propriété Count en lecture seule, de sa propriété [Element](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) en lecture-écriture et de sa méthode [Item](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method). 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#.
3. Si nécessaire, modifiez la collection à l’aide de ses autres méthodes : [InsertAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/insertat-method), [DeleteAt](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method), [DeleteAll](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method).
4. Passez la collection à la méthode qui l’exige comme paramètre.

Exemple d’utilisation de l’objet IntsCollection en C# :

<Accordion title="Code C#">
  ```csharp theme={null}
   
  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 traitement
  if( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate )
  {
   Document.SynthesizePages( pageIndices, null );
  }
  ```
</Accordion>

<div id="collections-of-child-objects">
  ## Collections d'objets enfants
</div>

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 :

1. 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](/fr/fine-reader/engine/api-reference/language-related-objects/baselanguage#dictionarydescriptions) de l'objet BaseLanguage.
2. Parcourez la collection à l'aide de la propriété Count en lecture seule, de la propriété [Element](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) et de la méthode [Item](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method). 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#.
3. 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](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method), [DeleteAll](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method).

Exemple d'utilisation de l'objet DictionaryDescriptions en C# :

<Accordion title="Code C#">
  ```csharp theme={null}
  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éments
  IDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;
  dictionaryDescriptions.DeleteAll();
  // Créer une description de dictionnaire utilisateur et l'ajouter à la collection
  IDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
  ```
</Accordion>

<div id="read-only-collections">
  ## Collections en lecture seule
</div>

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 :

1. 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](/fr/fine-reader/engine/api-reference/text-related-objects/text#paragraphs) de l’objet Text.
2. Parcourez la collection à l’aide des propriétés en lecture seule Count et [Element](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property), ainsi que de la méthode [Item](/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method). 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# :

<Accordion title="Code C#">
  ```csharp theme={null}
  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 bloc
  int paragraphsCount = textBlock.Text.Paragraphs.Count;
  for (int iPar = 0; iPar < paragraphsCount; iPar++)
  {
   FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
   string text = par.Text;
  }
  ```
</Accordion>

<div id="all-available-collections">
  ## Toutes les collections disponibles
</div>

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.

<table>
  <thead>
    <tr>
      <th>
        <p>
          <strong>Collections d'objets enfants</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>Collections en lecture seule</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>Collections temporaires</strong>
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <ul>
          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-related-objects/authorslist">
                AuthorsList
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/language-related-objects/baselanguages">
                BaseLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/classification-related-objects/categories">
                Categories
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>Find</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/layout-related-objects/checkmarkgroup">
                CheckmarkGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/classification-related-objects/classificationobjects">
                ClassificationObjects
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>Find</strong> supplémentaire,
            tandis que la méthode <strong>AddNew</strong> est remplacée par la{" "}
            méthode <strong>Add</strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions">
                DictionaryDescriptions
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-related-objects/documentinformationdictionary">
                DocumentInformationDictionary
              </a>
            </strong>

            {" "}

            – cette collection est également un dictionnaire ; par conséquent, la propriété{" "}
            <strong>Element</strong> est remplacée par la propriété{" "}
            <strong>Value</strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-related-objects/frpages">
                FRPages
              </a>
            </strong>

            {" "}

            – cette collection d'objets enfants diffère des autres collections du même
            type. Elle ne dispose pas de la méthode <strong>AddNew</strong> ; à la place,
            vous pouvez utiliser la méthode <strong>AddPage</strong> de l'objet parent{" "}
            <strong>FRDocument</strong>. Elle ne dispose pas non plus de la méthode{" "}
            <strong>DeleteAll</strong>, mais offre les méthodes supplémentaires{" "}
            <strong>IndexOf</strong>, <strong>Remove</strong> et{" "}
            <strong>Swap</strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/layout-related-objects/layoutblocks">
                LayoutBlocks
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/list">
                List
              </a>
            </strong>

            {" "}

            – cette collection ne dispose pas de méthode <strong>DeleteAt </strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-related-objects/pdfattachments">
                PDFAttachments
              </a>
            </strong>

            {" "}

            – cette collection dispose de la méthode <strong>AddFromFile </strong>
            <strong> </strong>et de la méthode <strong>AddFromMemory</strong> (Windows)
            à la place de la méthode <strong>AddNew</strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/parameter-objects/export-parameters/pdfpictures">
                PDFPictures
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/layout-related-objects/separatorgroup">
                SeparatorGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/layout-related-objects/tableseparators">
                TableSeparators
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>IndexOf</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/tabpositions">
                TabPositions
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/barcodetext">
                BarcodeText
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-related-objects/businesscards">
                BusinessCards
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/document-comparison-objects/changes">
                Changes
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/characterrecognitionvariants">
                CharacterRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/classification-related-objects/classificationresults">
                ClassificationResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/language-related-objects/detectedlanguages">
                DetectedLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/language-related-objects/fuzzystrings">
                FuzzyStrings
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/license-related-objects/licenses">
                Licenses
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>Find</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/paragraphlines">
                ParagraphLines
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/paragraphs">
                Paragraphs
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>IndexOf</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/language-related-objects/predefinedlanguages">
                PredefinedLanguages
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode <strong>Find</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/mechanism-objects/scansources">
                ScanSources
              </a>

              {" "}

              (Windows)
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/supplementary-objects-and-methods/splitregions">
                SplitRegions
              </a>
            </strong>

            {" "}

            – cette collection dispose d'une méthode{" "}
            <strong>GetSourcePageIndex</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/layout-related-objects/tablecells">
                TableCells
              </a>
            </strong>

            {" "}

            – cette collection dispose de méthodes supplémentaires : <strong>IndexOf</strong>,{" "}
            <strong>Merge</strong> et <strong>Split</strong>.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/classification-related-objects/trainingresults">
                TrainingResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/wordrecognitionvariants">
                WordRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/text-related-objects/words">
                Words
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/supplementary-objects-and-methods/stringscollection">
                StringsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/supplementary-objects-and-methods/intscollection">
                IntsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/image-related-objects/officeconverters">
                OfficeConverters
              </a>
            </strong>

            {" "}

            (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 <strong>Find</strong> supplémentaire.
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/image-related-objects/trainingimagescollection">
                TrainingImagesCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/fr/fine-reader/engine/api-reference/supplementary-objects-and-methods/regionscollection">
                RegionsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>Composants visuels :</strong>

            <ul>
              <li>
                <strong>
                  <a href="/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection">
                    SpellWordCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/fr/fine-reader/engine/visual-components-reference/supplementary-objects/spellreplacementcollection">
                    SpellReplacementCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/fr/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar">
                    Toolbar
                  </a>
                </strong>

                {" "}

                – cette collection dispose de méthodes supplémentaires <strong>Delete</strong>,{" "}
                <strong>Has</strong>.
              </li>

              <li>
                <strong>
                  <a href="/fr/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu">
                    PopupMenu
                  </a>
                </strong>

                {" "}

                – cette collection dispose de méthodes supplémentaires <strong>Delete</strong>,{" "}
                <strong>Has</strong>, ainsi que des propriétés <strong>CustomMenuEnabled</strong>
                , <strong>StandardMenuEnabled</strong>.
              </li>
            </ul>
          </li>
        </ul>
      </td>
    </tr>
  </tbody>
</table>

<div id="working-with-collections-in-net">
  ## Travailler avec les collections dans .NET
</div>

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](http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx).

Exemple d’utilisation de foreach avec la collection FRPages en C# :

<Accordion title="Code C#">
  ```csharp theme={null}
  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
  }
  ```
</Accordion>
