掲示板一覧 - トピック一覧 EA API HTMLドキュメントの生成をEA外から行う方法 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | トピック |
---|---|
mogass | 投稿日時: 2011-10-17 15:01 |
EA Administrator 投稿: 209 |
HTMLドキュメントの生成をEA外から行う方法サポートに寄せられたご質問と回答の要約です。
○ご質問 プロジェクトブラウザでパッケージを右クリックして出てくる、「HTMLドキュメントの生成」を、 外部アプリケーションからAPI経由で実行する方法はありますか? DocumentGenerator APIを利用して出力を試みましたが、 DocumentPackageの呼出しでCOMExceptionが発生してしまいました。 試したコード(C#)の抜粋は下記となります。 DocumentGenerator generator = repo.CreateDocumentGenerator(); generator.NewDocument(""); // trueが返る generator.DocumentPackage(package.PackageID, 1, ""); // 例外発生 DocumentPackageの呼出しで発生した例外は下記の通りです。 System.Runtime.InteropServices.COMException : サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT)) 場所 EA.IDualDocumentGenerator.DocumentPackage(Int32 ID, Int32 nDepth, String sTemplateName) ヘルプドキュメントのDocumentGeneratorの説明にあるシーケンス図では、 最初に CreateDocument を呼ぶように記載されていますが、APIドキュメント上にも Interop.EA.dllにもそのようなメソッドは存在しませんでしたので、 代わりに NewDocument を呼んでいます。 ○回答 DocumentGeneratorインターフェースのDocumentPackageメソッド に関しまして、ご報告の内容を確認し、原因を調査致しました。 まず、DocumentPackageメソッドの実行時に例外が発生する件に つきましては、DocumentPackageもしくはその前のNewDocument メソッドの引数で、何らかのテンプレートを指定しなければ いけないようです。 引用: > generator.NewDocument(""); // trueが返る この場合、EA上で定義されているテンプレート名を、 NewDocumentもしくはDocumentPackageで指定、 または両方で指定する必要があります。 例) generator.NewDocument([テンプレート名]) generator.DocumentPackage((package.PackageID, 0, [テンプレート名]) ここで指定するテンプレートは、EAのリソースサブウィンドウに表示される RTFテンプレートを指定します。 (DocumentGeneratorではHTMLテンプレートの読み込みはできません。 HTML形式で出力する場合もすべてRTFテンプレートを使用しますので ご注意ください。) 以下、サンプルコードを作成しましたのでご参考にしてください。 ------------------------------------------------------------ bool bResult = generator.NewDocument(""); if (bResult) { // "testTemplate"の部分 <- EAで定義されているテンプレート名 bResult = generator.DocumentPackage(package.PackageID, 0, "testTemplate"); } if (bResult) { bResult = generator.SaveDocument("C:\\xxxxx\\testTemplate.htm", EA.DocumentType.dtHTML); } if (bResult) { // 正常終了 } else { // エラー(generator.GetLastError()でエラーの内容を取得できます) } ------------------------------------------------------------ DocumentGeneratorインターフェースを使用してHTML形式で 出力を行った場合、EAのHTMLドキュメント生成のような結果には なりません。 EAのHTMLドキュメント生成と同様の出力を行いたい場合は、 ProjectオブジェクトのRunHTMLReportメソッドを使用することで、 HTMLドキュメント生成と同様の出力を行うことができますので、 こちらもお試しください。 回答は以上となります。 いろいろとヘルプの情報が少なく申し訳ございません。 今後、情報を追加してまいります。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |