私は、Microsoft Office Document Imaging オブジェクト モデルを使用して .mdi ファイルを PDF に変換する実用的なソリューションがあると考えていました。解決策は Windows サービスにありますが、現在、情報を追跡するのに苦労しているいくつかのエラーが発生しています。
私が得る例外は次のとおりです。
サーバーが例外をスローしました。(HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT)) System.Runtime.InteropServices.COMException (0x80010105): サーバーが例外をスローしました。(HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT))
DocumentStore.Mdi2PDF (文字列パス、文字列 newPath) で MODI.DocumentClass.Create (文字列 FileOpen) で
次に、イベント ビューアに次のアプリケーション エラーが表示されます。
エラーが発生しているアプリケーション MyWindowsServiceName.exe、バージョン 1.0.0.0、タイム スタンプ 0x4b97f185、エラーが発生しているモジュール mso.dll、バージョン 12.0.6425.1000、タイム スタンプ 0x49d65443、例外コード 0xc0000005、エラー オフセット 0x0000bd8e、プロセス ID 0xa5c、アプリケーション開始時刻 0x01cac08cf03
変換を行っているメソッドは次のとおりです。
private int? Mdi2PDF(String path, String newPath)
{
int? pageCount = null;
string tmpTif = Path.GetTempFileName();
MODI.Document mdiDoc = new MODI.Document();
mdiDoc.Create(path);
mdiDoc.SaveAs(tmpTif,
MODI.MiFILE_FORMAT.miFILE_FORMAT_TIFF_LOSSLESS,
MODI.MiCOMP_LEVEL.miCOMP_LEVEL_HIGH);
mdiDoc.Close(false);
pageCount = Tiff2PDF(tmpTif, newPath);
if (File.Exists(tmpTif))
File.Delete(tmpTif);
return pageCount;
}
これを呼び出すサービスからすべてのスレッドを削除したため、プライマリ スレッドのみが MODI オブジェクトを初期化していましたが、それでもエラーが発生したため、スレッドに関連しているようには見えません。
何百ものドキュメントを変換するコンソール アプリも作成しましたが、例外は発生しませんでした。
では、サービス内でのみインスタンス化された MODI オブジェクトのインスタンスを作成しすぎたことが原因のようですか? 意味がわかりません。
これらのエラーに関する手がかりと、さらにデバッグする方法を知っている人はいますか?