Export All Stories Script
В составе стандартной поставки скриптов к InDesign CS3 есть скрипт ExportAllStories, который сохраняет тексты всех Story в текстовые файлы. При этом количество получившихся текстовых файлов будет равно количеству Story в документе.
Olav Kvern разработал скрипт, который сохраняет весь текст из вашего документа в один единственный текстовый файл. При этом можно выбрать формат (txt, rtf, tagged text) и отметить, нужен ли разделитель между текстами разных Story.
Скрипт буден полезен, когда надо быстро весь текст из файла Индизайна перебросить в другие программы.
//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];
}
Скопируйте отсюда текст скрипта в текстовый редактор (например, блокнот) и сохраните его с именем ExportAllText.jsx в папку пользовательских скриптов Индизайна.
Скрипт сохраняет свою работоспособность и в версии InDesign CS2, и может применяться как на платформе Windows, так и на Mac.

![]()
Примечание: Задачу сохранения текста в текстовый файл можно решить при помощи бесплатного скриптового плагина фирмы Rorohiko – см. http://www.rorohiko.com/textexporter.html










Экспорт работает отлично и весьма быстро. Это возможно потому, что сначала все материалы собираются в один материал, а он уже экспортируется в один файл требуемого формата.
В листинге на сайте допущены ошибки: местами непарные кавычки заменились парными кавычками-лапками. В этих местах интерпретатор ругается на синтаксис. Исправление формы кавычек в тексте скрипта решает проблему полностью.
Пока выясняются причины такого неожиданного поведения кавычек добавил ссылку на скачивание
Leave your response!
You must be logged in to post a comment.
Вы хотите избавиться от рутинных операций и посвятить время творческому процессу? Вам нужен новый скрипт или плагин к InDesign? Обращайтесь к нам. Мы это сделаем сами или поручим грамотным, квалифицированным специалистам.
E-mail: boriskasmoscow[at]gmail.com
Skype: boriskasmoscow
Последние темы
Свежие комментарии
О комментариях
Облако меток
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
Скрипты
Переносы для гурманов
Архивы
UserOnline
Скриптопедия
Рубрики
Календарь
Набор скриптов для верстки математических формул
DTP Scripting
Управление
Adobe Illustrator
Adobe InDesign
InDesign-Scripting