メインコンテンツへスキップ
このメソッドは、ユーザーが事前に読み込んでおいたグローバルメモリ内の画像ファイルを開き、そのファイルに対応するページをドキュメントに追加します。

構文

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] この変数は、ユーザー実装の ImagePasswordCallback 型オブジェクトのインターフェイスを参照します。これは、PDF 形式の画像へのアクセス時に発生する可能性があるパスワード要求を処理するために使用されます。このパラメーターは省略可能で、0 を指定できます。この場合、パスワードで保護されたファイルは処理できません。 PrepareMode [in] 画像を開くときの前処理方法を指定する PrepareImageMode オブジェクトを参照します。このパラメーターは省略可能で、0 を指定できます。この場合、既定のパラメーターが使用されるか、プロファイル が読み込まれている場合は、そのプロファイルで設定されたパラメーターが使用されます。 PageIndices [in] このパラメーターは、ドキュメントに追加するページのインデックスを指定する IntsCollection オブジェクトを参照します。インデックスの重複は許可されないことに注意してください。同じページを複数回追加するには、このメソッドを複数回呼び出してください。
このパラメーターは省略可能で、0 を指定できます。この場合、開いたファイルのすべてのページがドキュメントに追加されます。
FileName [in] 画像ファイル名を指定します。この情報は、ファイル形式が明示的に指定されていない場合にその判別のため、およびエラーメッセージで使用されます。このパラメーターは省略可能で、0 を指定できます。 office 形式を開くには (Linux と Windows のみ) 、拡張子を含むドキュメント名を渡します。

戻り値

このメソッド固有の戻り値はありません。ABBYY FineReader Engine 関数の標準戻り値が返されます。

備考

  • SVG 形式のファイルはメモリから開けません。
  • このメソッドを使用して PDF Portfolio ファイルを開くと、その表紙は常に出力ファイルに含まれます。
  • このメソッドは、FRDocument オブジェクトの IConnectionPointContainer インターフェイスに接続されているリスナーに対してイベントを通知することがあります。
  • Linux および Windows の場合:
    • ライセンスに Office Formats Opening モジュールが含まれている場合、このメソッドを使用してサポートされている形式のデジタル文書を開くこともできます。
    • Linux で Engine がプロセス外サーバーとして読み込まれている場合、または 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 object はすでに作成済みであるものとします
// ドキュメントを作成します
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));
// 現在のストリームから指定したバイト数をバイト配列に読み込みます
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