Index > ブック中のすべての fm ファイルを開く(Adobe FrameMaker8 FDK Client)
Thu, July 2, 2009

ブック中のすべての fm ファイルを開く(Adobe FrameMaker8 FDK Client)

先ほどの tomif.cを流用して作成。 単に、ブック中のfmファイルを全部開くだけのクライアント。

ブックを印刷するとき、全部開いたまま行うと高速に処理できる・・・と (記憶では) ヘルプに書いてあったので...
たとえば、そんなときに役立つクライアント。 これで、ちまちまファイルを開く手間を省けます。

openall.c

#include "fapi.h"
#include "futils.h"
#include "fstrings.h"
#include "fstrlist.h"

#define OpenAllFm 3


VoidT F_ApiInitialize(IntT initialization) {

    F_ObjHandleT menuBarId, menuId;

    menuBarId = F_ApiGetNamedObject(FV_SessionId,FO_Menu,"!BookMainMenu");
    menuId = F_ApiDefineAndAddMenu(menuBarId,"APIMenu1","API");

    F_ApiDefineAndAddCommand(OpenAllFm, menuId,"OpenAllFmCmd","Open all fm files in book", "");
}


VoidT DoOpenAllFm(){

    F_ObjHandleT docId,fmDocId;
    StringT docname;
    IntT i;

    StringListT list = F_StrListNew((UIntT)1,(UIntT)1);
    docId = F_ApiGetId(0,FV_SessionId,FP_ActiveBook);

    if(!docId){
        return ;
    }


    docname = F_ApiGetString(docId, docId, FP_Name);
    F_Printf(NULL,(StringT)"CHK BOOK= %s",docname );


    fmDocId= F_ApiGetId(FV_SessionId, docId,FP_FirstComponentInBook);
    while(fmDocId){
        docname = F_ApiGetString(docId, fmDocId, FP_Name);
        F_StrListAppend(list,docname);
        fmDocId= F_ApiGetId(FV_SessionId, fmDocId,FP_NextComponentInBook);
    }

    for(i=0; i < F_StrListLen(list); i++){
        docname = F_StrListGet(list, i);
        fmDocId = F_ApiSimpleOpen(docname,False);
    }

    F_StrListFree(list);
}



VoidT F_ApiCommand(IntT command) {

    switch (command) {
        case OpenAllFm:
            DoOpenAllFm();
            break;
    }
}
 Twitter
follow me on Twitter
 Categories