Here's the ExtendScript I linked to earlier. The DeleteUnused...Fmt functions would seem to make it pretty simple. You could maybe create a giant scratch book containing all your .fm files and run the script once.
http://help.adobe.com/en_US/framemaker/scripting/WSfbe285cf4bf3fffd-491bdbc212f9bbd97f1-7f1c.html /*************************************************************************/ /* */ /* ADOBE SYSTEMS INCORPORATED */ /* Copyright 1986 - 2011 Adobe Systems Incorporated */ /* All Rights Reserved */ /* */ /* NOTICE: Adobe permits you to use, modify, and distribute this */ /* file in accordance with the terms of the Adobe license agreement */ /* accompanying it. If you have received this file from a source */ /* other than Adobe, then your use, modification, or distribution */ /* of it requires the prior written permission of Adobe. */ /* */ /**************************************************************************/ /* * Program Name: * << delete unused formats >> * * Author: * Vikash Kumar (vikash at adobe.com) * * General Description: * This script deletes all the unused table, paragraph and character formats in a book * **************************************************************************/ book = app.ActiveBook bookTraverse(book) function bookTraverse(book) { if (!book.ObjectValid() ) { Alert ("No Active book" ,Constants.FF_ALERT_CONTINUE_WARN) return } var ret = Alert ("All the files in the book will be modified and saved: Press <OK> to continue or <cancel> to abort",Constants.FF_ALERT_OK_DEFAULT) if (ret == -1) { return } var compBook = book.FirstComponentInBook while(compBook.ObjectValid() ) { var compName = compBook.Name var compType = compBook.BookComponentFileType var doc = open(compName) if (compType == Constants.FV_BK_BOOK) { bookTraverse (doc) } if (doc.ObjectValid() ) { deletefromdoc (doc) saveDoc (doc, doc.Name) doc.Close (1) } compBook = compBook.NextBookComponentInDFSOrder } Alert ("Operation finished" ,Constants.FF_ALERT_CONTINUE_WARN) } function deletefromdoc(doc) { doc.DeleteUnusedTblFmt() doc.DeleteUnusedPgfFmt() doc.DeleteUnusedCharFmt() } function open(filename) { var openProp = GetOpenDefaultParams() var i=GetPropIndex(openProp,Constants.FS_FileIsOldVersion) openProp[i].propVal.ival=Constants.FV_DoOK i=GetPropIndex(openProp,Constants.FS_FontNotFoundInCatalog) openProp[i].propVal.ival=Constants.FV_DoOK i=GetPropIndex(openProp,Constants.FS_FontNotFoundInDoc) openProp[i].propVal.ival=Constants.FV_DoOK i=GetPropIndex(openProp,Constants.FS_FileIsInUse) openProp[i].propVal.ival=Constants.FV_DoCancel i=GetPropIndex(openProp,Constants.FS_AlertUserAboutFailure) openProp[i].propVal.ival=Constants.FV_DoCancel i=GetPropIndex(openProp,Constants.FS_LockCantBeReset) openProp[i].propVal.ival=Constants.FV_DoOK i=GetPropIndex(openProp,Constants.FS_MakeVisible) openProp[i].propVal.ival=false var retParm = new PropVals() var fileObj=Open(filename,openProp,retParm); return fileObj } function saveDoc(file,mifName) { var params = GetSaveDefaultParams() var returnParamsp =new PropVals() var i = GetPropIndex(params, Constants.FS_FileType) params[i].propVal.ival =Constants.FV_SaveFmtBinary //doc2save = SimpleOpen("D:\\extendscript\\myScripts\\tfiles\\SimpleOpen.fm",0); file.Save(mifName, params, returnParamsp) return }