Methode AddImageFileFromMemory des FRDocument-Objekts
Methode AddImageFileFromMemory des FRDocument-Objekts in der ABBYY FineReader Engine API — Öffnet eine Bilddatei aus dem globalen Speicher (zuvor vom Benutzer geladen) und fügt ihre Seiten dem Dokument hinzu.
Use this file to discover all available pages before exploring further.
Diese Methode öffnet eine Bilddatei aus dem globalen Speicher, in den der Benutzer sie zuvor geladen hat, und fügt dem Dokument die Seiten der geöffneten Datei hinzu.
Sub AddImageFileFromMemory( _ HGlobal As Int64, _ Callback As IImagePasswordCallback, _ [PrepareMode As IPrepareImageMode = Nothing], _ [PageIndices As IIntsCollection = Nothing], _ [FileName As String = "0"] _)
DataPtr[in] Linux: Gibt die Adresse des Speicherblocks an, der die Bilddatei enthält.DataSize[in] Linux: Gibt die Größe des in den Speicher geladenen Bildes an.HGlobal[in] macOS und Windows: Gibt das HGLOBAL-Handle des Speicherblocks an, der die Bilddatei enthält. Das Handle wird als __int64 übergeben. Dieses Handle muss gültig sein.Callback[in] Diese Variable verweist auf die Schnittstelle des benutzerimplementierten Objekts vom Typ ImagePasswordCallback, das zur Verarbeitung möglicher Kennwortabfragen für den Zugriff auf Bilder im PDF-Format verwendet wird. Dieser Parameter ist optional und kann 0 sein; in diesem Fall können kennwortgeschützte Dateien nicht verarbeitet werden.PrepareMode[in] Verweist auf das Objekt PrepareImageMode, das angibt, wie ein Bild beim Öffnen vorverarbeitet wird. Dieser Parameter ist optional und kann 0 sein; in diesem Fall werden entweder die Standardparameter verwendet oder, falls ein Profil geladen wurde, die in diesem Profil festgelegten Parameter.PageIndices[in] Dieser Parameter verweist auf das Objekt IntsCollection, das die Indizes der Seiten angibt, die dem Dokument hinzugefügt werden sollen. Beachten Sie, dass doppelte Indizes nicht zulässig sind. Um dieselbe Seite mehrmals hinzuzufügen, rufen Sie diese Methode bitte mehrmals auf. Dieser Parameter ist optional und kann 0 sein; in diesem Fall werden alle Seiten der geöffneten Datei dem Dokument hinzugefügt.FileName[in] Gibt den Namen der Bilddatei an. Diese Information wird verwendet, um das Dateiformat zu bestimmen, falls es nicht ausdrücklich angegeben ist, sowie in Fehlermeldungen. Dieser Parameter ist optional und kann 0 sein.Zum Öffnen von Office-Formaten (nur Linux und Windows) übergeben Sie den Namen des Dokuments mit seiner Erweiterung.
Diese Methode funktioniert nicht, wenn die Engine unter Linux als Out-of-Process-Server geladen wird oder wenn das Objekt unter Windows mit dem Objekt OutprocLoader erstellt wird. Verwenden Sie in diesem Fall die Methode AddImageFileFromStream (Win).
Je nach Wert der Eigenschaft IEngine::MultiProcessingParams kann ABBYY FineReader Engine das Öffnen mehrseitiger Dokumente auf die CPU-Kerne verteilen.
Unter Windows unterstützt diese Methode das Öffnen von WIC-kompatiblen Dateien nicht.
// Dieses Beispiel zeigt, wie eine Bilddatei in den Speicher geladen// und anschließend zur Verarbeitung an FineReader Engine übergeben werden kann...// In diesem Codebeispiel verwenden wir den Namespace System.IO für die Arbeit mit einer Datei im Speicherusing System.IO;// und den Namespace System.Runtime.InteropServices für die Arbeit mit Speicherblöckenusing System.Runtime.InteropServices;...// Wir gehen davon aus, dass das Engine-Objekt bereits erstellt wurde// Dokument erstellenFREngine.IFRDocument document = engine.CreateFRDocument();// Quellbildstring imagePath = "D:\\Demo.tif";FileInfo file = new FileInfo(imagePath);// Größe des Quellbildslong len = file.Length;// Das Bild öffnenBinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));// Die angegebene Anzahl von Bytes aus dem aktuellen Stream in ein Byte-Array lesenbyte[] byteArray = br.ReadBytes((int)len);// Einen Speicherblock zuweisenIntPtr handle = Marshal.AllocHGlobal((int)len);// Daten aus einem Zeiger auf nicht verwalteten Speicher in ein verwaltetes 32-Bit-Ganzzahl-Array mit Vorzeichen kopierenMarshal.Copy(byteArray, 0, handle, (int)len);// Bild aus dem Speicher zum Dokument hinzufügendocument.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");// Zuvor im nicht verwalteten Speicher des Prozesses reservierten Speicher freigebenMarshal.FreeHGlobal(handle);// Dokument verarbeitendocument.Process(null);