Pular para o conteúdo principal
Este método abre um arquivo de imagem a partir da memória global, na qual ele foi previamente carregado pelo usuário, e adiciona ao documento as páginas correspondentes ao arquivo aberto.

Sintaxe

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

Parâmetros

DataPtr [in] Linux: Especifica o endereço do bloco de memória que contém o arquivo de imagem. DataSize [in] Linux: Especifica o tamanho da imagem carregada na memória. HGlobal [in] macOS e Windows: Especifica o handle HGLOBAL do bloco de memória que contém o arquivo de imagem. O handle é passado como __int64. Esse handle deve ser válido. Callback [in] Esta variável se refere à interface do objeto implementado pelo usuário do tipo ImagePasswordCallback, usada para processar possíveis solicitações de senha para acessar imagens em formato PDF. Este parâmetro é opcional e pode ser 0; nesse caso, arquivos protegidos por senha não podem ser processados. PrepareMode [in] Refere-se ao objeto PrepareImageMode, que especifica como uma imagem será pré-processada durante a abertura. Este parâmetro é opcional e pode ser 0; nesse caso, serão usados os parâmetros padrão ou, se um perfil tiver sido carregado, os parâmetros definidos por esse perfil. PageIndices [in] Este parâmetro se refere ao objeto IntsCollection, que especifica os índices das páginas que devem ser adicionadas ao documento. Observe que índices repetidos não são permitidos. Para adicionar a mesma página várias vezes, chame este método várias vezes.
Este parâmetro é opcional e pode ser 0; nesse caso, todas as páginas do arquivo aberto serão adicionadas ao documento.
FileName [in] Especifica o nome do arquivo de imagem. Essas informações são usadas para determinar o formato do arquivo, caso ele não tenha sido especificado explicitamente, e em mensagens de erro. Este parâmetro é opcional e pode ser 0. Para abrir formatos de arquivos do Office (somente Linux e Windows), informe o nome do documento com sua extensão.

Valores de retorno

Este método não possui valores de retorno específicos. Retorna os valores de retorno padrão das funções do ABBYY FineReader Engine.

Observações

  • Arquivos no formato SVG não podem ser abertos a partir da memória.
  • Ao abrir um arquivo PDF Portfolio usando este método, sua capa é sempre incluída no arquivo de saída.
  • Este método pode reportar eventos aos listeners associados à interface IConnectionPointContainer do objeto FRDocument.
  • Para Linux e Windows:
    • Se sua licença incluir o módulo Abertura de formatos do Office, você também poderá usar este método para abrir documentos digitais em formatos suportados.
    • Este método não funciona se o Engine for carregado como um servidor fora do processo no Linux ou se o objeto for criado usando o objeto OutprocLoader no Windows. Nesse caso, considere usar o método AddImageFileFromStream (Win).
    • Dependendo do valor da propriedade IEngine::MultiProcessingParams, o ABBYY FineReader Engine pode distribuir a abertura de documentos com várias páginas entre os núcleos de CPU.
  • No Windows, este método não oferece suporte à abertura de arquivos compatíveis com WIC.

Exemplos

// Este exemplo mostra como um arquivo de imagem pode ser carregado na memória
// e depois adicionado ao FineReader Engine para processamento
...
// Neste exemplo de código, usamos o namespace System.IO para manipular um arquivo na memória
using System.IO;
// e o namespace System.Runtime.InteropServices para trabalhar com blocos de memória
using System.Runtime.InteropServices;
...
// Presumimos que o objeto Engine já foi criado
// Criar documento
FREngine.IFRDocument document = engine.CreateFRDocument();
// Imagem de origem
string imagePath = "D:\\Demo.tif";
FileInfo file = new FileInfo(imagePath);
// Tamanho da imagem de origem
long len = file.Length;
// Abrir a imagem
BinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));
// Ler o número especificado de bytes do stream atual para um array de bytes
byte[] byteArray = br.ReadBytes((int)len);
// Alocar um bloco de memória
IntPtr handle = Marshal.AllocHGlobal((int)len);
// Copiar dados de um ponteiro de memória não gerenciada para um array gerenciado de inteiros de 32 bits com sinal
Marshal.Copy(byteArray, 0, handle, (int)len);
// Adicionar a imagem da memória ao documento
document.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");
// Liberar a memória previamente alocada da memória não gerenciada do processo
Marshal.FreeHGlobal(handle);
// Reconhecer o documento
document.Process(null);

Veja também

FRDocument