Tim Cole
Forum Replies Created
-
Yeah, being able to select a layer (or to constrain the script to visible layers) would be great. Ole thinks it’s a good idea. It’s a bit of work to implement, so it won’t happen soon given the other things on his plate at the moment.
As it is, though, it’s a pretty handy script.
TC
-
Yes. Copy and paste the script text into a text editor and save it as a .jsx file. Save it into ID’s Scripts folder, which is inside the Presets folder.
If you have any problems with the script it’s probably because something got scrogged in the copy and paste process. If that happens, try again, and if you still have the problem, let me know and we’ll find a way for me to just email the script to you directly.
TC
-
OK, here’s a version that throws up a dialog box asking you where you’d like to save your text file rather than forcing you to enter a path.
If you have any problems running this in CS2, let me know.
TC
//ExportAllText.jsx
//An InDesign CS3 JavaScript
//
//Exports all of the text in the active document as a single
//text file. To do this, the script will create a new document,
//combine the stories in the new document using export/import,
//and then export the text from the new document.
if(app.documents.length != 0){
if(app.documents.item(0).stories.length != 0){
myGetFileName(app.documents.item(0).name);
}
}
function myGetFileName(myDocumentName){
var myFilePath = File.saveDialog(“Save Exported File As:”);
if(myFilePath != null){
myDisplayDialog(myDocumentName, myFilePath);
}
}
function myDisplayDialog(myDocumentName, myFilePath){
//Need to get export format, story separator.
var myExportFormats = [“Text Only”, “Tagged Text”, “RTF”];
var myDialog = app.dialogs.add({name:”ExportAllStories”});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
var myExportFormatDropdown = dropdowns.add({stringList:myExportFormats, selectedIndex:0});
}
}
with(dialogRows.add()){
var myAddSeparatorCheckbox = checkboxControls.add({staticLabel:”Add separator line”, checkedState:true});
}
}
var myResult = myDialog.show();
if(myResult == true){
var myExportFormat = myExportFormats[myExportFormatDropdown.selectedIndex];
var myAddSeparator = myAddSeparatorCheckbox.checkedState;
myDialog.destroy();
myExportAllText(myDocumentName, myFilePath, myExportFormat, myAddSeparator);
}
else{
myDialog.destroy();
}
}
function myExportAllText(myDocumentName, myFilePath, myExportFormat, myAddSeparator){
var myStory;
var myTempFolder = Folder.temp;
var myTempFile = File(myTempFolder + “/tempTextFile.txt”);
var myNewDocument = app.documents.add();
var myDocument = app.documents.item(myDocumentName);
var myTextFrame = myNewDocument.pages.item(0).textFrames.add({geometricBounds:myGetBounds(myNewDocument, myNewDocument.pages.item(0))});
var myNewStory = myTextFrame.parentStory;
for(myCounter = 0; myCounter < myDocument.stories.length; myCounter++){ myStory = myDocument.stories.item(myCounter); //Export the story as tagged text. myStory.exportFile(ExportFormat.taggedText, myTempFile); //Import (place) the file at the end of the temporary story. myNewStory.insertionPoints.item(-1).place(myTempFile); //If the imported text did not end with a return, enter a return //to keep the stories from running together. if(myCounter != myDocument.stories.length -1){ if(myNewStory.characters.item(-1).contents != "\r"){ myNewStory.insertionPoints.item(-1).contents = "\r"; } if(myAddSeparator == true){ myNewStory.insertionPoints.item(-1).contents = "----------------------------------------\r"; } } } switch(myExportFormat){ case "Text Only": myFormat = ExportFormat.textType; myExtension = ".txt" break; case "RTF": myFormat = ExportFormat.RTF; myExtension = ".rtf" break; case "Tagged Text": myFormat = ExportFormat.taggedText; myExtension = ".txt" break; } myNewStory.exportFile(myFormat, File(myFilePath)); myNewDocument.close(SaveOptions.no); myTempFile.remove(); } function myGetBounds(myDocument, myPage){ var myPageWidth = myDocument.documentPreferences.pageWidth; var myPageHeight = myDocument.documentPreferences.pageHeight if(myPage.side == PageSideOptions.leftHand){ var myX2 = myPage.marginPreferences.left; var myX1 = myPage.marginPreferences.right; } else{ var myX1 = myPage.marginPreferences.left; var myX2 = myPage.marginPreferences.right; } var myY1 = myPage.marginPreferences.top; var myX2 = myPageWidth - myX2; var myY2 = myPageHeight - myPage.marginPreferences.bottom; return [myY1, myX1, myY2, myX2]; } -
Jacki, note that this line of the script:
var myFileName = “/c/test.txt”;
requires you to enter a valid path for the file export…i.e., where you want the txt file to be saved.
Ole is going to add some UI to the script to eliminate that need asap. I’ll post it as soon as he sends it to me. In the meantime, this one should do what you need.
TC
-
Jacki,
This script exports ALL of the text in an ID dodument into one text file. It’s the CS3 version, but Ole Kvern, the author says it should run in CS2.
Copy and paste this into a text editor, save it as text only (i.e., not RTF) and name it EportAllText.jsx.
Toss it into your scripts folder and give it a try.
TC
//ExportAllText.jsx
//An InDesign CS3 JavaScript
//
//Exports all of the text in the active document as a single
//text file. To do this, the script will create a new document,
//combine the stories in the new document using export/import,
//and then export the text from the new document.
if(app.documents.length != 0){
if(app.documents.item(0).stories.length != 0){
myExportAllText(app.documents.item(0).name);
}
}
function myExportAllText(myDocumentName){
var myStory;
//File name for the exported text. Fill in a valid file path on your system.
var myFileName = “/c/test.txt”;
//If you want to add a separator line between stories, set myAddSeparator to true.
var myAddSeparator = true;
var myNewDocument = app.documents.add();
var myDocument = app.documents.item(myDocumentName);
var myTextFrame = myNewDocument.pages.item(0).textFrames.add({geometricBounds:myGetBounds(myNewDocument, myNewDocument.pages.item(0))});
var myNewStory = myTextFrame.parentStory;
for(myCounter = 0; myCounter < myDocument.stories.length; myCounter++){ myStory = myDocument.stories.item(myCounter); //Export the story as tagged text. myStory.exportFile(ExportFormat.taggedText, File(myFileName)); //Import (place) the file at the end of the temporary story. myNewStory.insertionPoints.item(-1).place(File(myFileName)); //If the imported text did not end with a return, enter a return //to keep the stories from running together. if(myCounter != myDocument.stories.length -1){ if(myNewStory.characters.item(-1).contents != "\r"){ myNewStory.insertionPoints.item(-1).contents = "\r"; } if(myAddSeparator == true){ myNewStory.insertionPoints.item(-1).contents = "----------------------------------------\r"; } } } myNewStory.exportFile(ExportFormat.taggedText, File("/c/test.txt")); myNewDocument.close(SaveOptions.no); } function myGetBounds(myDocument, myPage){ var myPageWidth = myDocument.documentPreferences.pageWidth; var myPageHeight = myDocument.documentPreferences.pageHeight if(myPage.side == PageSideOptions.leftHand){ var myX2 = myPage.marginPreferences.left; var myX1 = myPage.marginPreferences.right; } else{ var myX1 = myPage.marginPreferences.left; var myX2 = myPage.marginPreferences.right; } var myY1 = myPage.marginPreferences.top; var myX2 = myPageWidth - myX2; var myY2 = myPageHeight - myPage.marginPreferences.bottom; return [myY1, myX1, myY2, myX2]; } -
There are Mac and Win versions of an ID script that exports all stories in a document as separate files. What’s your platform?
– TC