Created
May 31, 2017 15:41
-
-
Save tristar500/ac5ce6948bfdeca7f5b3c98fd4cb72ac to your computer and use it in GitHub Desktop.
FrameMaker Convert to Text
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//~ https://forums.adobe.com/message/9544659 | |
//~ https://forums.adobe.com/message/9544924 | |
$.writeln("START **************************************************************"); | |
// This switch just keeps the developer from having to work the select dialog for each test | |
var production = true; | |
if(production == true){ | |
var selectedFolder = Folder.selectDialog ("Select Folder with Source Files"); | |
}else{ | |
var selectedFolder = "c:\\Path\\To\\Documents"; | |
} | |
if(selectedFolder !== null){ | |
myFolder = new Folder(selectedFolder); | |
var myFiles = myFolder.getFiles("*.fm"); | |
if(myFiles.length > 0){ | |
$.writeln("Found " + myFiles.length + " source files to process."); | |
listFiles(myFiles); | |
}else{ | |
alert("No FrameMaker files found in this folder"); | |
} | |
}else{ | |
$.writeln("!! JOB CANCELLED !!"); | |
} | |
$.writeln("END **************************************************************"); | |
function listFiles(selectedFiles){ | |
for(var i = 0; i< selectedFiles.length; i++){ | |
$.writeln("Working file number " + (i+1) + ": " + (selectedFiles[i].fsName) ); | |
var doc = getDocument(selectedFiles[i].fsName); | |
saveToText(doc); | |
} | |
return true; | |
} | |
function getDocument (filename) { | |
// See if the document is already open. | |
var doc = docIsOpen (filename); | |
if (doc) { | |
return doc; | |
} else { | |
// The document is not already open, so open it. | |
return openDocOrBook (filename, undefined, false); | |
} | |
} | |
function docIsOpen (filename) { | |
// Make a File object from the file name. | |
var file = File (filename); | |
// Uppercase the filename for easy comparison. | |
var name = file.fullName.toUpperCase (); | |
// Loop through the open documents in the session. | |
var doc = app.FirstOpenDoc; | |
while (doc.ObjectValid () === 1) { | |
// Compare the document’s name with the one we are looking for. | |
if (File (doc.Name).fullName.toUpperCase () === name) { | |
// The document we are looking for is open. | |
doc.openedByScript = false; | |
return doc; | |
} | |
doc = doc.NextOpenDocInSession; | |
} | |
} | |
function openDocOrBook (filename, structuredApplication, visible) { | |
var i = 0, docOrBook = 0; | |
// Get default property list for opening documents. | |
var openProps = GetOpenDefaultParams (); | |
// Get a property list to return any error messages. | |
var retParm = new PropVals (); | |
// Set specific open property values to open the document. | |
i=GetPropIndex (openProps,Constants.FS_AlertUserAboutFailure); | |
openProps[i].propVal.ival=false; | |
i=GetPropIndex (openProps,Constants.FS_MakeVisible); | |
openProps[i].propVal.ival=visible; | |
i=GetPropIndex (openProps,Constants.FS_FileIsOldVersion); | |
openProps[i].propVal.ival=Constants.FV_DoOK; | |
i=GetPropIndex (openProps,Constants.FS_FileIsInUse); | |
openProps[i].propVal.ival=Constants.FV_ResetLockAndContinue; | |
i=GetPropIndex (openProps,Constants.FS_FontChangedMetric); | |
openProps[i].propVal.ival=Constants.FV_DoOK; | |
i=GetPropIndex (openProps,Constants.FS_FontNotFoundInCatalog); | |
openProps[i].propVal.ival=Constants.FV_DoOK; | |
i=GetPropIndex (openProps,Constants.FS_FontNotFoundInDoc); | |
openProps[i].propVal.ival=Constants.FV_DoOK; | |
i=GetPropIndex (openProps,Constants.FS_RefFileNotFound); | |
openProps[i].propVal.ival=Constants.FV_AllowAllRefFilesUnFindable; | |
if (structuredApplication !== undefined) { | |
i=GetPropIndex (openProps,Constants.FS_StructuredOpenApplication); | |
openProps[i].propVal.sval=structuredApplication; | |
} | |
// Attempt to open the document. | |
docOrBook = Open (filename,openProps,retParm); | |
if (docOrBook.ObjectValid () === 1) { | |
// Add a property to the document or book, indicating that the script opened it. | |
docOrBook.openedByScript = true; | |
return docOrBook; // Return the document or book object. | |
} | |
else { | |
// If the document can't be open, print the errors to the Console. | |
PrintOpenStatus (retParm); | |
return null; | |
} | |
} | |
function saveToText (doc) { | |
var params, returnParams, saveName, i; | |
saveName = doc.Name.replace(/\.fm$/i, ".txt"); | |
returnParams = new PropVals(); | |
params = GetSaveDefaultParams(); | |
i = GetPropIndex (params, Constants.FS_FileType); | |
params[i].propVal.ival = Constants.FV_SaveFmtText; | |
i = GetPropIndex (params, Constants.FS_SaveTextTblSetting); | |
params[i].propVal.ival = Constants.FV_SaveTblUserPref; | |
doc.Save (saveName, params, returnParams); | |
PrintSaveStatus (returnParams); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment