Passer au contenu principal
Cette méthode ouvre un fichier image depuis la mémoire globale, dans laquelle il a été préalablement chargé par l’utilisateur, puis ajoute au document les pages correspondant au fichier ouvert.

Syntaxe

C++

Linux et macOS
HRESULT  AddImageFileFromMemory(
  void*                   DataPtr,
  __int64                 DataSize,
  IImagePasswordCallback* Callback,
  IPrepareImageMode*      PrepareMode,
  IIntsCollection*        PageIndices,
  BSTR                    FileName
);
Windows
HRESULT  AddImageFileFromMemory(
  __int64                 HGlobal,
  IImagePasswordCallback* Callback,
  IPrepareImageMode*      PrepareMode,
  IIntsCollection*        PageIndices,
  BSTR                    FileName
);

C#

void AddImageFileFromMemory(
  Int64                  HGlobal,
  IImagePasswordCallback Callback,
  IPrepareImageMode       PrepareMode,
  IIntsCollection         PageIndices,
  string                 FileName
);

Visual Basic .NET

Sub AddImageFileFromMemory( _
  HGlobal As Int64, _
  Callback As IImagePasswordCallback, _
  [PrepareMode As IPrepareImageMode = Nothing], _
  [PageIndices As IIntsCollection = Nothing], _
  [FileName As String = "0"] _
)

Paramètres

DataPtr [in] Linux : spécifie l’adresse du bloc mémoire qui contient le fichier image. DataSize [in] Linux : spécifie la taille de l’image chargée en mémoire. HGlobal [in] macOS et Windows : spécifie le handle HGLOBAL du bloc mémoire qui contient le fichier image. Le handle est transmis sous la forme __int64. Ce handle doit être valide. Callback [in] Cette variable fait référence à l’interface de l’objet de type ImagePasswordCallback implémenté par l’utilisateur, utilisée pour gérer d’éventuelles demandes de mot de passe lors de l’accès à des images au format PDF. Ce paramètre est facultatif et peut valoir 0, auquel cas les fichiers protégés par mot de passe ne peuvent pas être traités. PrepareMode [in] Fait référence à l’objet PrepareImageMode, qui spécifie comment une image sera prétraitée lors de son ouverture. Ce paramètre est facultatif et peut valoir 0, auquel cas les paramètres par défaut sont utilisés ou, si un profil a été chargé, les paramètres définis par ce profil sont appliqués. PageIndices [in] Ce paramètre fait référence à l’objet IntsCollection, qui spécifie les indices des pages à ajouter au document. Notez que les indices dupliqués ne sont pas autorisés. Pour ajouter plusieurs fois la même page, veuillez appeler cette méthode plusieurs fois.
Ce paramètre est facultatif et peut valoir 0, auquel cas toutes les pages du fichier ouvert seront ajoutées au document.
FileName [in] Spécifie le nom du fichier image. Cette information est utilisée pour déterminer le format du fichier, s’il n’est pas explicitement spécifié, ainsi que dans les messages d’erreur. Ce paramètre est facultatif et peut valoir 0. Pour ouvrir les formats Office (Linux et Windows uniquement), transmettez le nom du document avec son extension.

Valeurs de retour

Cette méthode n’a pas de valeur de retour spécifique. Elle renvoie les valeurs de retour standard des fonctions ABBYY FineReader Engine.

Remarques

  • Les fichiers au format SVG ne peuvent pas être ouverts à partir de la mémoire.
  • Lors de l’ouverture d’un fichier PDF Portfolio à l’aide de cette méthode, sa page de garde est toujours incluse dans le fichier de sortie.
  • Cette méthode peut signaler des événements aux écouteurs associés à l’interface IConnectionPointContainer de l’objet FRDocument.
  • Pour Linux et Windows :
    • Si votre licence inclut le module Office Formats Opening, vous pouvez également utiliser cette méthode pour ouvrir des documents numériques dans des formats pris en charge.
    • Cette méthode ne fonctionne pas si l’Engine est chargé en tant que serveur hors processus sous Linux ou si l’objet est créé à l’aide de l’objet OutprocLoader sous Windows. Dans ce cas, envisagez d’utiliser la méthode AddImageFileFromStream (Win).
    • Selon la valeur de la propriété IEngine::MultiProcessingParams, ABBYY FineReader Engine peut répartir l’ouverture des documents multipages entre les cœurs du processeur.
  • Sous Windows, cette méthode ne prend pas en charge l’ouverture des fichiers compatibles WIC.

Exemples

// Cet exemple montre comment un fichier image peut être chargé en mémoire
// puis ajouté pour traitement dans FineReader Engine
...
// Dans cet exemple de code, nous utilisons l’espace de noms System.IO pour manipuler un fichier en mémoire
using System.IO;
// et l’espace de noms System.Runtime.InteropServices pour travailler avec des blocs mémoire
using System.Runtime.InteropServices;
...
// Nous supposons que nous avons déjà créé l’objet Engine
// Créer le document
FREngine.IFRDocument document = engine.CreateFRDocument();
// Image source
string imagePath = "D:\\Demo.tif";
FileInfo file = new FileInfo(imagePath);
// Taille de l’image source
long len = file.Length;
// Ouvrir l’image
BinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));
// Lire le nombre spécifié d’octets du flux actuel dans un tableau d’octets
byte[] byteArray = br.ReadBytes((int)len);
// Allouer un bloc de mémoire
IntPtr handle = Marshal.AllocHGlobal((int)len);
// Copier les données d’un pointeur de mémoire non managée vers un tableau managé d’entiers signés 32 bits
Marshal.Copy(byteArray, 0, handle, (int)len);
// Ajouter une image depuis la mémoire au document
document.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");
// Libérer la mémoire précédemment allouée à partir de la mémoire non managée du processus
Marshal.FreeHGlobal(handle);
// Reconnaître le document
document.Process(null);

Voir aussi

FRDocument