Use this file to discover all available pages before exploring further.
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.
Sub AddImageFileFromMemory( _ HGlobal As Int64, _ Callback As IImagePasswordCallback, _ [PrepareMode As IPrepareImageMode = Nothing], _ [PageIndices As IIntsCollection = Nothing], _ [FileName As String = "0"] _)
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.
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.
// 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émoireusing System.IO;// et l’espace de noms System.Runtime.InteropServices pour travailler avec des blocs mémoireusing System.Runtime.InteropServices;...// Nous supposons que nous avons déjà créé l’objet Engine// Créer le documentFREngine.IFRDocument document = engine.CreateFRDocument();// Image sourcestring imagePath = "D:\\Demo.tif";FileInfo file = new FileInfo(imagePath);// Taille de l’image sourcelong len = file.Length;// Ouvrir l’imageBinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));// Lire le nombre spécifié d’octets du flux actuel dans un tableau d’octetsbyte[] byteArray = br.ReadBytes((int)len);// Allouer un bloc de mémoireIntPtr 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 bitsMarshal.Copy(byteArray, 0, handle, (int)len);// Ajouter une image depuis la mémoire au documentdocument.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 processusMarshal.FreeHGlobal(handle);// Reconnaître le documentdocument.Process(null);