> ## 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.

# Méthode FindPageSplitPosition de l’objet FRPage

> Méthode FindPageSplitPosition de l’objet FRPage dans l’API ABBYY FineReader Engine — recherche la position à laquelle une image peut être divisée en pages (par exemple, une double page de livre) ; prend un objet TextOrientation en entrée.

Cette méthode recherche la position de séparation de l’image en pages, si elle existe. Elle sert à détecter s’il est possible de séparer des doubles pages dans un livre.

Pour trouver la position à laquelle l’image peut être séparée :

1. Détectez l’orientation de l’image à l’aide de la méthode [IFRPage::DetectOrientation](/fr/fine-reader/engine/api-reference/document-related-objects/frpage/detectorientation-method).
2. Transmettez à la méthode FindPageSplitPosition l’objet [TextOrientation](/fr/fine-reader/engine/api-reference/text-related-objects/textorientation) renvoyé.

La position de séparation est définie par deux lignes, dont les coordonnées sont renvoyées dans les paramètres startSplitPosition et endSplitPosition. La zone de l’image située entre ces deux lignes doit être supprimée lors de la séparation de l’image en pages. Cette zone contient généralement des artéfacts.

<div id="syntax">
  ## Syntaxe
</div>

<div id="c">
  ### C++
</div>

```cpp theme={null}
HRESULT FindPageSplitPosition(
  IObjectsExtractionParams* ExtractionParams,
  ITextOrientation*         TextOrientation,
  PageSplitDirectionEnum*   SplitDirection,
  int*                      StartSplitPosition,
  int*                      EndSplitPosition
);
```

### C\#

```csharp theme={null}
void FindPageSplitPosition(
  IObjectsExtractionParams    ExtractionParams,
  ITextOrientation            TextOrientation,
  out PageSplitDirectionEnum SplitDirection,
  out int                    StartSplitPosition,
  out int                    EndSplitPosition
);
```

<div id="visual-basic-net">
  ### Visual Basic .NET
</div>

```vb theme={null}
Sub FindPageSplitPosition( _
  ExtractionParams As IObjectsExtractionParams, _
  TextOrientation As TextOITextOrientationrientation, _
  ByRef SplitDirection As PageSplitDirectionEnum, _
  ByRef StartSplitPosition As Integer, _
  ByRef EndSplitPosition As Integer _
)
```

<div id="parameters">
  ## Paramètres
</div>

ExtractionParams

\[in] Objet [ObjectsExtractionParams](/fr/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/objectsextractionparams) qui stocke les paramètres d’extraction des objets. Ce paramètre peut être égal à 0. Dans ce cas, les objets sont extraits avec les paramètres par défaut ou, si un [profil](/fr/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles) a été chargé, avec les paramètres définis par ce profil.

TextOrientation

\[in] Fait référence à l’objet [TextOrientation](/fr/fine-reader/engine/api-reference/text-related-objects/textorientation), qui spécifie l’orientation du texte sur l’image. Si ce paramètre vaut 0, ABBYY FineReader Engine suppose que l’image a une orientation normale.

SplitDirection

\[out] Cette variable reçoit le type de séparation possible : séparation verticale, séparation horizontale ou absence de séparation. Reportez-vous à la description de [PageSplitDirectionEnum](/fr/fine-reader/engine/api-reference/enumerations/pagesplitdirectionenum) pour plus de détails.

StartSplitPosition

\[out] Coordonnée de la première ligne qui définit la position de séparation (si une séparation est possible). La signification de cette valeur dépend de celle de la variable splitDirection. Si une séparation verticale possible est détectée, elle contient la coordonnée horizontale de la ligne de séparation. Si une séparation horizontale possible est détectée, elle contient la coordonnée verticale de la ligne de séparation. La coordonnée est donnée par rapport à la page noir et blanc redressée de l’image.

EndSplitPosition

\[out] Coordonnée de la deuxième ligne qui définit la position de séparation (si une séparation est possible). La signification de cette valeur dépend de celle de la variable splitDirection. Si une séparation verticale possible est détectée, elle contient la coordonnée horizontale de la ligne de séparation. Si une séparation horizontale possible est détectée, elle contient la coordonnée verticale de la ligne de séparation. La coordonnée est donnée par rapport à la page noir et blanc redressée de l’image.

<div id="return-values">
  ## Valeurs de retour
</div>

Cette méthode n’a pas de valeurs de retour spécifiques. Elle renvoie les [valeurs de retour standard des fonctions ABBYY FineReader Engine](/fr/fine-reader/engine/api-reference/return-codes).

<div id="samples">
  ## Exemples
</div>

<Accordion title="Code C#">
  ```csharp theme={null}
  private bool splitImage(FREngine.IFRPage page, FREngine.IFRDocument frDoc, FREngine.IPageProcessingParams ppp)
  {
   int splitStartPosition = 0;
   int splitEndPosition = 0;
   bool isVerticalSplit = true;
   // Détecter l’orientation du texte
   FREngine.ITextOrientation ori = page.DetectOrientation(null, ppp.ObjectsExtractionParams, ppp.RecognizerParams);
   // Déterminer la position de séparation
   FREngine.PageSplitDirectionEnum pageSplitDirection;
   page.FindPageSplitPosition(ppp.ObjectsExtractionParams, ori, out pageSplitDirection, out splitStartPosition, out splitEndPosition);
   if (pageSplitDirection == FREngine.PageSplitDirectionEnum.PSD_NoSplit)
   {
    return false;
   }
   else if (pageSplitDirection == FREngine.PageSplitDirectionEnum.PSD_HorizontalSplit)
   {
    isVerticalSplit = false;
   }
   // Scinder l’image en deux pages
   // Dimensions de l’image
   int width = page.ImageDocument.ColorImage.Width;
   int height = page.ImageDocument.ColorImage.Height;
   // Dupliquer la page
   frDoc.AddPage(page);
   FREngine.IFRPage secondPage = frDoc.Pages[frDoc.Pages.Count - 1];
   // Rogner la première et la seconde page
   FREngine.IImageModification firstModification = engine.CreateImageModification();
   FREngine.IRegion firstClipRegion = engine.CreateRegion();
   FREngine.IImageModification secondModification = engine.CreateImageModification();
   FREngine.IRegion secondClipRegion = engine.CreateRegion();
   if (isVerticalSplit)
   {
    firstClipRegion.AddRect(0, 0, splitStartPosition, height - 1 );
    secondClipRegion.AddRect(splitEndPosition, 0, width - 1, height - 1);
   }
   else
   {
    firstClipRegion.AddRect(0, 0, width - 1, splitStartPosition);
    secondClipRegion.AddRect(0, splitEndPosition, width - 1, height - 1);
   }
   firstModification.AddClipRegion(firstClipRegion);
   page.ImageDocument.Modify(firstModification);
   secondModification.AddClipRegion(secondClipRegion);
   secondPage.ImageDocument.Modify(secondModification);
   return true;
  }
  ```
</Accordion>

<div id="see-also">
  ## Voir aussi
</div>

[FRPage](/fr/fine-reader/engine/api-reference/document-related-objects/frpage)

[DetectOrientation](/fr/fine-reader/engine/api-reference/document-related-objects/frpage/detectorientation-method)

[PageSplitDirectionEnum](/fr/fine-reader/engine/api-reference/enumerations/pagesplitdirectionenum)

[Utilisation des profils](/fr/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles)
