アクティブドキュメントのファイル名を取得する方法(Adobe FrameMaker8 FDK)
FDKを使ってやりたいことは、Book中のすべてのfmファイルを、mifファイルとして保存したい、 しかも拡張子だけ fm から mif に変えてファイル名のベース部分はそのままに。
しかし実際に取り組んでみると、そのためにはまだまだ道程は遠い。 まずは、アクティブドキュメント(fm形式)のファイル名を取得するところまでできたので、 そのメモ。
アクティブドキュメントのファイル名取得
わかってしまえばどうということはないのだが、以下のコードで、 現在アクティブになっているドキュメントのファイル名(パス)を取得することができる。
F_ObjHandleT docId;
StringT docname;
docId = F_ApiGetId(0,FV_SessionId,FP_ActiveDoc);
docname = F_ApiGetString(docId, docId, FP_Name);
全体では、以下のような処理になります。
#include "fapi.h"
#include "futils.h"
#define TestMenu 1
VoidT F_ApiInitialize(IntT initialization) {
F_ObjHandleT menuBarId, menuId;
menuBarId = F_ApiGetNamedObject(FV_SessionId,FO_Menu,"!MakerMainMenu");
menuId = F_ApiDefineAndAddMenu(menuBarId,"APIMenu","API");
F_ApiDefineAndAddCommand(TestMenu, menuId,"TestMenuCmd","TestMenu","");
}
VoidT F_ApiCommand(IntT command) {
F_ObjHandleT pgId, objId, docId;
StringT docname;
docId = F_ApiGetId(0,FV_SessionId,FP_ActiveDoc);
if(!docId){
return ;
}
docname = F_ApiGetString(docId, docId, FP_Name);
F_Printf(NULL,(StringT)"CHK %s",docname );
}
Windows版のFM8では、FrameMakerコンソールに、ファイル名(パス)は 出力されます。