按页获取所有文本
Get all text by page
正在为 Indesign 编写一些脚本。我想抓取每一页的所有文本(按顺序)。
我已经编写了一个函数来通过故事来做到这一点。但是,我想对故事进行排序,以便逐页显示。
在这种情况下使用 for (var i = 0; i < app.activeDocument.pages.length; i++)
没有用。我不确定故事 ID 与页面放置的关系。
这就是我得到的
function get_all_stories()
{
var str = "";
var CR = "\r\n"; // carriage return
for(var i = 0; i < app.activeDocument.stories.length; i++)
{
var myStory = app.activeDocument.stories.item(i);
// add contents to string
str += myStory.contents + CR + CR;
}
return str;
}
有什么想法吗?
你可以遍历所有的字符,查看该字符属于parentTextFrame
的页面。如果下一个字符与前一个字符属于同一页,则将其连接成一个字符串。一旦页面更改,您就会创建下一个字符串。等等。这样你就可以获得一个给定故事的字符串页面数组:
var texts = [];
var text_on_page = "";
var story = app.activeDocument.stories[0];
var chars = story.texts[0].characters.everyItem().getElements();
var current_page = chars[0].parentTextFrames[0].parentPage.name;
var prev_page = current_page;
for (var i=0; i<chars.length; i++) {
var ch = chars[i];
current_page = ch.parentTextFrames[0].parentPage.name;
if (current_page == prev_page) {
text_on_page += ch.contents;
}
else {
prev_page = current_page;
texts.push(text_on_page);
text_on_page = ch.contents;
}
}
texts.push(text_on_page); // text from last page
// print report
var report = ""
for (var i=0; i<texts.length; i++) {
report += "\nPage " + (i+1) + " contains: '" + texts[i] + "'\n";
}
alert(report);
但是如果你有多个故事,那就更复杂了。也许您需要从每个故事中获取页面拆分文本,然后弄清楚如果它们共享同一页面,如何连接来自不同故事的文本。
正在为 Indesign 编写一些脚本。我想抓取每一页的所有文本(按顺序)。
我已经编写了一个函数来通过故事来做到这一点。但是,我想对故事进行排序,以便逐页显示。
在这种情况下使用 for (var i = 0; i < app.activeDocument.pages.length; i++)
没有用。我不确定故事 ID 与页面放置的关系。
这就是我得到的
function get_all_stories()
{
var str = "";
var CR = "\r\n"; // carriage return
for(var i = 0; i < app.activeDocument.stories.length; i++)
{
var myStory = app.activeDocument.stories.item(i);
// add contents to string
str += myStory.contents + CR + CR;
}
return str;
}
有什么想法吗?
你可以遍历所有的字符,查看该字符属于parentTextFrame
的页面。如果下一个字符与前一个字符属于同一页,则将其连接成一个字符串。一旦页面更改,您就会创建下一个字符串。等等。这样你就可以获得一个给定故事的字符串页面数组:
var texts = [];
var text_on_page = "";
var story = app.activeDocument.stories[0];
var chars = story.texts[0].characters.everyItem().getElements();
var current_page = chars[0].parentTextFrames[0].parentPage.name;
var prev_page = current_page;
for (var i=0; i<chars.length; i++) {
var ch = chars[i];
current_page = ch.parentTextFrames[0].parentPage.name;
if (current_page == prev_page) {
text_on_page += ch.contents;
}
else {
prev_page = current_page;
texts.push(text_on_page);
text_on_page = ch.contents;
}
}
texts.push(text_on_page); // text from last page
// print report
var report = ""
for (var i=0; i<texts.length; i++) {
report += "\nPage " + (i+1) + " contains: '" + texts[i] + "'\n";
}
alert(report);
但是如果你有多个故事,那就更复杂了。也许您需要从每个故事中获取页面拆分文本,然后弄清楚如果它们共享同一页面,如何连接来自不同故事的文本。