2 Replies Latest reply on Apr 20, 2015 5:18 AM by frameexpert

    Automate the process of saving Framemaker documents (*.fm) as Xml Files



      I am new to framemaker. We have a list of Framemaker document files (*.fm files) coming  into a folder.  We need to pick up these files and convert to xml format (same as the saveAs opertion from the File menu).


      I have written the follwing function to Save fm files to xml


      Code to Save fm files to xml files

      function saveAsXml (doc) {

         // Get required parameters for the save function.

          var params = GetSaveDefaultParams();

          var returnParamsp = new PropVals();


          // Replace the .fm extension with .mif.

          var saveName = doc.Name.replace (/\.[^\.\\]+$/,".xml");



          var i = GetPropIndex(params, Constants.FS_FileType);

          params[i].propVal.ival = Constants.FV_SaveFmtXml;


          // Save the document as XML.

          doc.Save(saveName, params, returnParamsp);





      How to automate this process so that code checks -


      1) New fm files in the folder

      2) Saves the fm file as xml

      3) Moves the saved fm file to a different folder





      [Message moved to Scripting Forum by moderator]

        • 1. Re: Automate the process of saving Framemaker documents (*.fm) as Xml Files
          JoH Level 2

          Have a look at the sample script below. The "while" loop waits for the specified number of milliseconds, then reads the contents of a directory and processes every individual file in the directory. In my example, it just prints the file path to the console. You would replace this part with your Open / Save as / Move sequence.

          For more file system commands, refer to Adobe's Javascript Tools Guide, "File object functions".


          var stop = false;
          while( stop==false ) {
              // Wait for 20.000 ms
              var fld = new Folder("c:/incoming");
              var filesInFld = fld.getFiles("*.fm");
              for(var f=0; f < filesInFld.length; f++) {
                  // process the individual file
              // Exit the  loop after 19:00
              var time = new Date();
              if( time.getHours() > 19 ) stop = true;
          • 2. Re: Automate the process of saving Framemaker documents (*.fm) as Xml Files
            frameexpert Level 4

            JoH's script is good but it may eventually time out or run out of memory. Where are the .fm files coming from? A better approach may be to have a script on their machine that will automatically save and send an XML file to the incoming folder whenever they close the .fm document.