메인 콘텐츠로 건너뛰기
이 메서드는 사용자가 미리 로드해 둔 전역 메모리에서 이미지 파일을 열고, 열린 파일에 해당하는 페이지를 문서에 추가합니다.

구문

C++

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

매개변수

DataPtr [in] Linux: 이미지 파일이 들어 있는 메모리 블록의 주소를 지정합니다. DataSize [in] Linux: 메모리에 로드된 이미지의 크기를 지정합니다. HGlobal [in] macOS 및 Windows: 이미지 파일이 들어 있는 메모리 블록의 HGLOBAL 핸들을 지정합니다. 이 핸들은 __int64로 전달됩니다. 이 핸들은 유효해야 합니다. Callback [in] 이 변수는 PDF 형식 이미지에 액세스할 때 발생할 수 있는 암호 요청을 처리하는 데 사용되는 ImagePasswordCallback 유형의 사용자 구현 객체 인터페이스를 참조합니다. 이 매개변수는 선택 사항이므로 0일 수 있으며, 이 경우 암호로 보호된 파일은 처리할 수 없습니다. PrepareMode [in] 이미지가 열리는 동안 전처리되는 방식을 지정하는 PrepareImageMode 객체를 참조합니다. 이 매개변수는 선택 사항이므로 0일 수 있으며, 이 경우 기본 매개변수가 사용되거나 profile이 로드된 경우 해당 프로필에 설정된 매개변수가 사용됩니다. PageIndices [in] 이 매개변수는 문서에 추가할 페이지의 인덱스를 지정하는 IntsCollection 객체를 참조합니다. 중복된 인덱스는 허용되지 않습니다. 동일한 페이지를 여러 번 추가하려면 이 메서드를 여러 번 호출하십시오.
이 매개변수는 선택 사항이므로 0일 수 있으며, 이 경우 열린 파일의 모든 페이지가 문서에 추가됩니다.
FileName [in] 이미지 파일의 이름을 지정합니다. 이 정보는 파일 형식이 명시적으로 지정되지 않은 경우 이를 판별하는 데 사용되며, 오류 메시지에도 사용됩니다. 이 매개변수는 선택 사항이므로 0일 수 있습니다. 오피스 형식을 열려면(Linux 및 Windows만 해당) 확장자를 포함한 문서 이름을 전달하십시오.

반환값

이 메서드에는 특정 반환값이 없습니다. 대신 ABBYY FineReader Engine 함수의 표준 반환값을 반환합니다.

참고 사항

  • SVG 형식 파일은 메모리에서 직접 열 수 없습니다.
  • 이 메서드로 PDF 포트폴리오 파일을 열면 표지가 항상 출력 파일에 포함됩니다.
  • 이 메서드는 FRDocument 객체의 IConnectionPointContainer 인터페이스에 연결된 리스너에 이벤트를 전달할 수 있습니다.
  • Linux 및 Windows의 경우:
    • 라이선스에 Office Formats Opening 모듈이 포함되어 있으면, 이 메서드로 지원되는 형식의 디지털 문서도 열 수 있습니다.
    • Linux에서 엔진이 별도 프로세스 서버로 로드되었거나 Windows에서 OutprocLoader 객체를 사용해 객체를 생성한 경우에는 이 메서드가 작동하지 않습니다. 이 경우 AddImageFileFromStream (Win) 메서드 사용을 고려하세요.
    • IEngine::MultiProcessingParams 속성 값에 따라 ABBYY FineReader Engine은 여러 페이지로 된 문서의 열기 작업을 CPU 코어에 분산할 수 있습니다.
  • Windows에서는 이 메서드로 WIC 호환 파일을 열 수 없습니다.

샘플

// 이 샘플에서는 이미지 파일을 메모리에 로드한 다음
// 처리를 위해 FineReader Engine에 추가하는 방법을 보여줍니다
...
// 이 코드 샘플에서는 메모리에 있는 파일을 처리하기 위해 System.IO 네임스페이스를 사용합니다
using System.IO;
// 그리고 메모리 블록을 다루기 위해 System.Runtime.InteropServices 네임스페이스를 사용합니다
using System.Runtime.InteropServices;
...
// Engine 객체가 이미 생성되어 있다고 가정합니다
// 문서 생성
FREngine.IFRDocument document = engine.CreateFRDocument();
// 원본 이미지
string imagePath = "D:\\Demo.tif";
FileInfo file = new FileInfo(imagePath);
// 원본 이미지 길이
long len = file.Length;
// 이미지 열기
BinaryReader br = new BinaryReader(File.Open(imagePath, FileMode.Open));
// 현재 stream에서 지정된 바이트 수를 바이트 배열로 읽어옵니다
byte[] byteArray = br.ReadBytes((int)len);
// 메모리 블록 할당
IntPtr handle = Marshal.AllocHGlobal((int)len);
// 비관리 메모리 포인터의 데이터를 관리되는 32비트 부호 있는 정수 배열에 복사합니다
Marshal.Copy(byteArray, 0, handle, (int)len);
// 메모리에서 문서에 이미지 추가
document.AddImageFileFromMemory((Int64)handle, null, null, null, "Demo.tif");
// 프로세스의 비관리 메모리에서 이전에 할당한 메모리 해제
Marshal.FreeHGlobal(handle);
// 문서 인식
document.Process(null);

참고 항목

FRDocument