> ## 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étodo FindPageSplitPosition del objeto FRPage

> Método FindPageSplitPosition del objeto FRPage en la API de ABBYY FineReader Engine: encuentra la posición en la que una imagen puede dividirse en páginas (por ejemplo, una doble página de un libro); toma un objeto TextOrientation como entrada.

Este método determina la posición en la que la imagen puede dividirse en páginas, si existe. Se utiliza para detectar si es posible separar páginas dobles de un libro.

Para encontrar la posición en la que se puede dividir la imagen:

1. Detecte la orientación de la imagen mediante el método [IFRPage::DetectOrientation](/es/fine-reader/engine/api-reference/document-related-objects/frpage/detectorientation-method).
2. Pase el objeto [TextOrientation](/es/fine-reader/engine/api-reference/text-related-objects/textorientation) devuelto al método FindPageSplitPosition.

La posición de división se define mediante dos líneas, cuyas coordenadas se devuelven en los parámetros startSplitPosition y endSplitPosition. El área de la imagen comprendida entre estas dos líneas debe eliminarse al dividir la imagen en páginas. Esta área suele contener ruido.

<div id="syntax">
  ## Sintaxis
</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">
  ## Parámetros
</div>

ExtractionParams

\[in] El objeto [ObjectsExtractionParams](/es/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/objectsextractionparams) que almacena los parámetros de extracción de objetos. Este parámetro puede ser 0. En este caso, los objetos se extraen con los parámetros predeterminados o, si se ha cargado un [perfil](/es/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles), se usan los parámetros definidos por ese perfil.

TextOrientation

\[in] Hace referencia al objeto [TextOrientation](/es/fine-reader/engine/api-reference/text-related-objects/textorientation) que especifica la orientación del texto en la imagen. Si este parámetro es 0, ABBYY FineReader Engine asume que la imagen tiene una orientación normal.

SplitDirection

\[out] Esta variable recibe el tipo de posible división: división vertical, división horizontal o ninguna división. Consulte la descripción de [PageSplitDirectionEnum](/es/fine-reader/engine/api-reference/enumerations/pagesplitdirectionenum) para obtener más detalles.

StartSplitPosition

\[out] La coordenada de la primera línea que define la posición de división (si es posible realizar una división). El significado de este valor depende del valor de la variable splitDirection. Si se detecta la posibilidad de una división vertical, contiene la coordenada horizontal de la línea de división. Si se detecta la posibilidad de una división horizontal, contiene la coordenada vertical de la línea de división. La coordenada se proporciona con respecto a la página en blanco y negro de la imagen, corregida en cuanto a la inclinación.

EndSplitPosition

\[out] La coordenada de la segunda línea que define la posición de división (si es posible realizar una división). El significado de este valor depende del valor de la variable splitDirection. Si se detecta la posibilidad de una división vertical, contiene la coordenada horizontal de la línea de división. Si se detecta la posibilidad de una división horizontal, contiene la coordenada vertical de la línea de división. La coordenada se proporciona con respecto a la página en blanco y negro de la imagen, corregida en cuanto a la inclinación.

<div id="return-values">
  ## Valores de retorno
</div>

Este método no tiene valores de retorno específicos. Devuelve los [valores de retorno estándar de las funciones de ABBYY FineReader Engine](/es/fine-reader/engine/api-reference/return-codes).

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

<Accordion title="Código 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;
   // Detectar la orientación del texto
   FREngine.ITextOrientation ori = page.DetectOrientation(null, ppp.ObjectsExtractionParams, ppp.RecognizerParams);
   // Buscar la posición de división
   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;
   }
   // Dividir la imagen en dos páginas
   // Dimensiones de la imagen
   int width = page.ImageDocument.ColorImage.Width;
   int height = page.ImageDocument.ColorImage.Height;
   // Duplicar la página
   frDoc.AddPage(page);
   FREngine.IFRPage secondPage = frDoc.Pages[frDoc.Pages.Count - 1];
   // Recortar la primera y la segunda páginas
   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">
  ## Consulte también
</div>

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

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

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

[Trabajo con perfiles](/es/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles)
