Zum Hauptinhalt springen
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.

Syntax

C++

Linux und 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"] _
)

Parameter

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.

Rückgabewerte

Diese Methode hat keine spezifischen Rückgabewerte. Sie gibt die Standard-Rückgabewerte von ABBYY FineReader Engine-Funktionen zurück.

Hinweise

  • Dateien im SVG-Format können nicht aus dem Speicher geöffnet werden.
  • Wenn Sie eine PDF-Portfolio-Datei mit dieser Methode öffnen, wird ihr Deckblatt immer in die Ausgabedatei aufgenommen.
  • Diese Methode kann Ereignisse an Listener melden, die mit der IConnectionPointContainer-Schnittstelle des Objekts FRDocument verbunden sind.
  • Für Linux und Windows:
    • Wenn Ihre Lizenz das Modul Office Formats Opening umfasst, können Sie diese Methode auch verwenden, um digitale Dokumente in unterstützten Formaten zu öffnen.
    • 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.

Beispiele

// 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 Speicher
using System.IO;
// und den Namespace System.Runtime.InteropServices für die Arbeit mit Speicherblöcken
using System.Runtime.InteropServices;
...
// Wir gehen davon aus, dass das Engine-Objekt bereits erstellt wurde
// Dokument erstellen
FREngine.IFRDocument document = engine.CreateFRDocument();
// Quellbild
string imagePath = "D:\\Demo.tif";
FileInfo file = new FileInfo(imagePath);
// Größe des Quellbilds
long len = file.Length;
// Das Bild öffnen
BinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));
// Die angegebene Anzahl von Bytes aus dem aktuellen Stream in ein Byte-Array lesen
byte[] byteArray = br.ReadBytes((int)len);
// Einen Speicherblock zuweisen
IntPtr handle = Marshal.AllocHGlobal((int)len);
// Daten aus einem Zeiger auf nicht verwalteten Speicher in ein verwaltetes 32-Bit-Ganzzahl-Array mit Vorzeichen kopieren
Marshal.Copy(byteArray, 0, handle, (int)len);
// Bild aus dem Speicher zum Dokument hinzufügen
document.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");
// Zuvor im nicht verwalteten Speicher des Prozesses reservierten Speicher freigeben
Marshal.FreeHGlobal(handle);
// Dokument verarbeiten
document.Process(null);

Siehe auch

FRDocument