Vai al contenuto principale
Questo metodo apre un file immagine presente nella memoria globale, dove era stato precedentemente caricato dall’utente, e aggiunge al documento le pagine corrispondenti al file aperto.

Sintassi

C++

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

Parametri

DataPtr [in] Linux: specifica l’indirizzo del blocco di memoria che contiene il file immagine. DataSize [in] Linux: specifica la dimensione dell’immagine caricata in memoria. HGlobal [in] macOS e Windows: specifica l’handle HGLOBAL del blocco di memoria che contiene il file immagine. L’handle viene passato come __int64. Questo handle deve essere valido. Callback [in] Questa variabile fa riferimento all’interfaccia dell’oggetto di tipo ImagePasswordCallback, implementato dall’utente, usato per gestire eventuali richieste di password per l’accesso alle immagini in formato PDF. Questo parametro è facoltativo e può essere 0; in tal caso, i file protetti da password non possono essere elaborati. PrepareMode [in] Fa riferimento all’oggetto PrepareImageMode, che specifica come un’immagine verrà preelaborata durante l’apertura. Questo parametro è facoltativo e può essere 0; in tal caso vengono usati i parametri predefiniti oppure, se è stato caricato un profilo, i parametri impostati da tale profilo. PageIndices [in] Questo parametro fa riferimento all’oggetto IntsCollection, che specifica gli indici delle pagine da aggiungere al documento. Si noti che gli indici duplicati non sono consentiti. Per aggiungere più volte la stessa pagina, chiamare questo metodo più volte.
Questo parametro è facoltativo e può essere 0; in tal caso tutte le pagine del file aperto verranno aggiunte al documento.
FileName [in] Specifica il nome del file immagine. Queste informazioni vengono usate per determinare il formato del file, se non è specificato esplicitamente, e nei messaggi di errore. Questo parametro è facoltativo e può essere 0. Per aprire i formati di Office (solo Linux e Windows), passare il nome del documento con la relativa estensione.

Valori di ritorno

Questo metodo non prevede valori di ritorno specifici. Restituisce i valori di ritorno standard delle funzioni di ABBYY FineReader Engine.

Note

  • I file in formato SVG non possono essere aperti dalla memoria.
  • Quando si apre un file PDF Portfolio con questo metodo, la relativa copertina viene sempre inclusa nel file di output.
  • Questo metodo può notificare eventi ai listener associati all’interfaccia IConnectionPointContainer dell’oggetto FRDocument.
  • Per Linux e Windows:
    • Se la licenza include il modulo Office Formats Opening, è possibile utilizzare questo metodo anche per aprire documenti digitali nei formati supportati.
    • Questo metodo non funziona se l’Engine viene caricato come server out-of-process su Linux o se l’oggetto viene creato tramite l’oggetto OutprocLoader in Windows. In questo caso, prendere in considerazione l’uso del metodo AddImageFileFromStream (Win).
    • A seconda del valore della proprietà IEngine::MultiProcessingParams, ABBYY FineReader Engine può distribuire l’apertura dei documenti multipagina tra i core CPU.
  • Per Windows, questo metodo non supporta l’apertura di file compatibili con WIC.

Esempi

// Questo sample mostra come caricare un file immagine in memoria
// e quindi aggiungerlo a FineReader Engine per l'elaborazione
...
// In questo sample di codice utilizziamo lo spazio dei nomi System.IO per operare su un file in memoria
using System.IO;
// e lo spazio dei nomi System.Runtime.InteropServices per lavorare con blocchi di memoria
using System.Runtime.InteropServices;
...
// Si presuppone che l'oggetto Engine sia già stato creato
// Crea il documento
FREngine.IFRDocument document = engine.CreateFRDocument();
// Immagine di origine
string imagePath = "D:\\Demo.tif";
FileInfo file = new FileInfo(imagePath);
// Lunghezza dell'immagine di origine
long len = file.Length;
// Apre l'immagine
BinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));
// Legge il numero specificato di byte dallo stream corrente in un array di byte
byte[] byteArray = br.ReadBytes((int)len);
// Alloca un blocco di memoria
IntPtr handle = Marshal.AllocHGlobal((int)len);
// Copia i dati da un puntatore a memoria non gestita a un array gestito di interi con segno a 32 bit
Marshal.Copy(byteArray, 0, handle, (int)len);
// Aggiunge l'immagine dalla memoria al documento
document.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");
// Libera la memoria precedentemente allocata dalla memoria non gestita del processo
Marshal.FreeHGlobal(handle);
// Riconosce il documento
document.Process(null);

Vedi anche

FRDocument