Quantcast
Channel: Adobe Community : Popular Discussions - Adobe FrameMaker
Viewing all articles
Browse latest Browse all 23442

Is there some example for creation a TOC for a FM Document?

$
0
0

I have some ElmScript and want to turn that into an Extendscript, but i have some problems with it.

 

This is the ElmScript Function.

 

Sub IHV_Ebene1;   If fslVersionMajor < 3      MsgBox 'Ben'+vsoe+'tigt Framescript Version 3 oder neuer';      LeaveSub;   EndIf     Set PlatformEncodingMode = True;   If ActiveDoc = 0      MsgBox 'Kein aktives Dokument';      LeaveSub;   EndIf     Set gvSrcDoc = ActiveDoc;   GlobalVar gvDocName;   If gvSrcDoc.Name.Count > 0      Set gvDocName = gvSrcDoc.Name;   Else      Set gvDocName = gvSrcDoc.Label;   EndIf     New Book File ('tempXXXX.book') NewVar(gvBookVar);     New BookComponent BookObject (gvBookVar) NewVar(gvBookComp);     Set gvBookComp.BookComponentType = BkNotGeneratable;   Set gvBookComp.Name = gvDocName;     New BookComponent BookObject(gvBookVar) NewVar(gvTocBookComp);     Set gvTocBookComp.BookComponentType = BkToc;   Set gvTocBookComp.Name = gvDocName+'.TOC';     New StringList NewVar(gvExtractList) Value('Ueberschrift 1 Seite BildSeite') Value('Ueberschrift 1') Value('Ueberschrift 1 mehrzeilig BildSeite');     Set gvTocBookComp.ExtractTags = gvExtractList;   Set gvTocBookComp.GenerateInclude = True;   Set gvTocBookComp.InsertLinks = True;     Generate Bookfiles BookObject(gvBookVar) Visible;     Open Document File (gvDocName+'.TOC') NewVar(docobj) ReturnStatus(gvErrorList) Visible;       Open Document File ('O:\Fachanwendungen\Vorlagen\FM9_TOC\ti_toc_ohne2_9.fm') NewVar(QuellDok);    Import Formats DocObject(docobj) FromDocObject (QuellDok) RefPage;   Set ActiveDoc = QuellDok;   Close Document;     Generate Bookfiles BookObject(gvBookVar) Visible;     Close Book  BookObject(gvBookVar) IgnoreMods;     Set ActiveDoc = docobj;   Get Object DocObject(docobj) Type(PgfFmt) Name('Inh-Text') NewVar(NeuFormat1);   Set vPgf = docobj.FirstPgfInDoc;   Loop While(vPgf)      If vPgf.Text <> '<$paranum>\t<$paratext>';         If vPgf.Name = 'Ueberschrift 1IVZ'            Set vPgf.Properties = NeuFormat1.Properties;         EndIf         If vPgf.Name = 'Ueberschrift 1 Seite BildSeiteIVZ'            Set vPgf.Properties = NeuFormat1.Properties;         EndIf         If vPgf.Name = 'Ueberschrift 1 mehrzeilig BildSeiteIVZ'            Set vPgf.Properties = NeuFormat1.Properties;         EndIf      EndIf      Set vPgf = vPgf.NextPgfInDoc;   EndLoop     Set vPgf = ActiveDoc;   Set vPgf.TextSelection = vPgf.FirstPgfInMainFlow.TextRange.Begin;   Set vPgf.CurrentPage = vPgf.FirstBodyPageInDoc;     If vPgf.CurrentPgf = 0     MsgBox 'Keine Einfügemarke';   EndIf     Execute FC CsrTop;   Execute FC HighFlowEnd;     Copy Text;     Close Document IgnoreMods;     Set ActiveDoc = gvSrcDoc ;   Set vPgf = ActiveDoc;   Set vPgf.TextSelection = vPgf.FirstPgfInMainFlow.TextRange.Begin;   Set vPgf.CurrentPage = vPgf.FirstBodyPageInDoc;     If vPgf.CurrentPgf = 0     MsgBox 'Keine Einfügemarke';   EndIf     set vPgf = ActiveDoc.FirstPgfInDoc;   Loop While(vPgf.Name<>'Inh-Ueberschrift')      //Display vPgf.Name;      Set vPgf = vPgf.NextPgfInDoc;   EndLoop     //Display 'Text: '+vPgf.Text;   Execute Fc CsrTop;   Execute Fc CsrNextBop;   Execute Fc CsrNextBop;     Paste Text;     //MsgBox 'Inhaltverzeichnis generiert'  

EndSub

 

 

And This is what i came up with so far:

 

function IHV_Ebene1()
{         var srcDoc = app.ActiveDoc;    var docName;    if(srcDoc.Name != "")    {            docName = srcDoc.Name;    }    else    {            docName = srcDoc.Label;    }    var gvBookVar = app.NewNamedBook("tempXXXX.book");    var gvBookComp = gvBookVar.NewSeriesBookComponent(0);       gvBookComp.BookComponentType = Constants.FV_BK_NOT_GENERATABLE;    gvBookComp.Name = docName;       var gvTocBookComp = gvBookVar.NewSeriesBookComponent(0);      gvTocBookComp.BookComponentType = Constants.FV_BK_TOC;    gvTocBookComp.Name = docName+".TOC";      var gvExtractList = ["Ueberschrift 1 Seite BildSeite", "Ueberschrift 1", "Ueberschrift 1 mehrzeilig BildSeite"];       gvTocBookComp.ExtractTags = gvExtractList;    gvTocBookComp.GenerateInclude = true;    gvTocBookComp.InsertLinks = true;       gvBookVar.SimpleGenerate (false, true);      var docObj = OpenFile(docName + ".TOC", true, true, false, true);    var QuellDok = OpenFile("O:\\Fachanwendungen\\Vorlagen\\FM9_TOC\\ti_toc_ohne2_9.fm", true, true, false, true);    docObj.SimpleImportFormats(QuellDok, Constants.FF_UFF_REFPAGE);    app.ActiveDoc = QuellDok;              app.ActiveDoc.Close(Constants.FF_CLOSE_MODIFIED);       gvBookVar.SimpleGenerate (false, true);    gvBookVar.Close(Constants.FF_CLOSE_MODIFIED);      app.ActiveDoc = docObj;    var NeuFormat1 = docObj.GetNamedPgfFmt ("Inh-Text");    var newProps = NeuFormat1.GetProps();    var mainflow = docObj.MainFlowInDoc;    var tframe = mainflow.FirstTextFrameInFlow;    var vPgf = tframe.FirstPgf;    while(vPgf.ObjectValid())       {         if (vPgf.GetText(Constants.FTI_String) != "<$paranum>\t<$paratext>")         {             if (vPgf.Name == "Ueberschrift 1IVZ")             {                 vPgf.SetProps (newProps) ;             }             if (vPgf.Name == "Ueberschrift 1 Seite BildSeiteIVZ")             {                 vPgf.SetProps (newProps) ;             }             if (vPgf.Name == "Ueberschrift 1 mehrzeilig BildSeiteIVZ")             {                 vPgf.SetProps (newProps) ;             }         }        vPgf = vPgf.NextPgfInDoc;    }           var oPgf = docObj.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;        var oTLoc1 = new TextLoc ( oPgf, 0 );        var oTLoc2 = new TextLoc ( oPgf, Constants.FV_OBJ_END_OFFSET );        var oTRange = new TextRange ( oTLoc1, oTLoc2 );        app.ActiveDoc.TextSelection =oTRange;        app.ActiveDoc.CurrentPage = app.ActiveDoc.FirstBodyPageInDoc;    // If vPgf.CurrentPgf = 0
 //    MsgBox 'Keine Einfügemarke';
 //  EndIf        Fcodes([FCodes.CSR_TOP, FCodes.HIGH_FLOW_END]);        app.ActiveDoc.Copy(Constants.FF_COPY_TO_CLIP);        docObj.Close(Constants.FF_CLOSE_MODIFIED);          app.ActiveDoc = srcDoc ;                     var tRange1= new TextRange();               tRange1.beg.obj = app.ActiveDoc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;        tRange1.beg.offset = 0;        tRange1.end.obj = app.ActiveDoc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;        tRange1.end.offset = Constants.FV_OBJ_END_OFFSET;        app.ActiveDoc.TextSelection =tRange1;        app.ActiveDoc.CurrentPage = app.ActiveDoc.FirstBodyPageInDoc;  // If vPgf.CurrentPgf = 0  //   MsgBox 'Keine Einfügemarke';  // EndIf             mainflow = app.ActiveDoc.MainFlowInDoc;        tframe = mainflow.FirstTextFrameInFlow;        vPgf = tframe.FirstPgf;        while(vPgf.Name != "Inh-Ueberschrift")        {            vPgf = vPgf.NextPgfInDoc;        }        Fcodes([FCodes.CSR_TOP, FCodes.CSR_NEXT_BOP, FCodes.CSR_NEXT_BOP]);          app.ActiveDoc.Paste(Constants.FF_PASTE_CLIP_TEXT);       if(DEBUG) alert("IHV_Ebene1");    }

 

Right now it runs without any error messages. But i don´t get the TOC as wanted. It´s inserting some empty space.

I can see it opening an book and the new TOC File with importing refpage. Then i see him selecting the first row of the TOC File(which is empty btw..?!? ) and trying to paste it.


Viewing all articles
Browse latest Browse all 23442

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>