使用javascript在Indesign中计算字符的不同方法
我正在编写一个javascript程序来处理设计文档中的每个字符 首先,我编写了两种不同的字符计数方法,出于某种原因,这两种方法对大型文档给出了不同的结果。为什么?使用javascript在Indesign中计算字符的不同方法,javascript,adobe-indesign,Javascript,Adobe Indesign,我正在编写一个javascript程序来处理设计文档中的每个字符 首先,我编写了两种不同的字符计数方法,出于某种原因,这两种方法对大型文档给出了不同的结果。为什么? var myDocument, docStories, docCharacters, docFootnotesCharacters, docTablesCharacters; myDocument = app.activeD
var
myDocument, docStories, docCharacters,
docFootnotesCharacters, docTablesCharacters;
myDocument = app.activeDocument;
var TotalChars = 0;
// Fisrt way
docStories = myDocument.stories.everyItem();
docCharacters = docStories.characters.length;
docFootnotesCharacters = docStories.footnotes.everyItem().characters.length;
docTablesCharacters = docStories.tables.everyItem().cells.everyItem().characters.length;
statReport = [];
// Second way
for ( j = 0; j < myDocument.stories.length; j++ ) {
myStory = myDocument.stories.item(j);
var Frames = myStory.textContainers;
for ( i = 0; i < Frames.length; i++ ) {
var Frame = Frames[i];
for (var TextCnt = 0; TextCnt < Frame.texts.length; TextCnt++) {
CurrentText = Frame.texts.item(TextCnt);
TotalChars += CurrentText.characters.length;
}
for (var TableCnt = 0; TableCnt < Frame.tables.length; TableCnt++) {
var CurrentTable = Frame.tables.item(0);
for ( var CellCnt = 0; CellCnt < CurrentTable.cells.length; CellCnt++ ) {
var CurrentCell = CurrentTable.cells.item(CellCnt);
TotalChars += CurrentCell.characters.length;
}
}
for (var FootNoteCnt = 0; FootNoteCnt < Frame.footnotes.length; FootNoteCnt++) {
var CurrentFootNote = Frame.footnotes.item(0);
TotalChars += CurrentFootNote.characters.length;
}
}
}
statReport.push ( "Characters: " + ( docCharacters + docFootnotesCharacters + docTablesCharacters ) );
statReport.push ( "TotalChars: " + TotalChars );
alert ( statReport.join ( "\r" ), "Document Text Statistic" );
var
myDocument、docStories、docCharacters、,
文档注释者、博士注释者;
myDocument=app.activeDocument;
var TotalChars=0;
//第一条路
docStories=myDocument.stories.everyItem();
docCharacters=docStories.characters.length;
docFootnotesCharacters=docStories.footnotes.everyItem().characters.length;
doctableschracters=docStories.tables.everyItem().cells.everyItem().characters.length;
statReport=[];
//第二条路
对于(j=0;j
在第二种方法中,计算故事文本框中的所有角色。但是故事可以被改写(文本溢出)。第一种方法将计算重叠文本(因为您正在计算故事中的角色,但第二种方法将忽略这些,因为它只计算故事框架中的角色,而第二种方法是计算故事中文本框架中的所有角色。但是故事可以重叠(文本溢出)。第一个方法将计算溢出的文本(因为你在计算一个故事中的角色,但是第二种方法会忽略这些,因为它只计算故事框架中的角色,这有什么不同呢?它始终是大还是小?在第二种方法中,我注意到:var CurrentFootNote=Frame.footnotes.item(0)
,是否应该是var CurrentFootNote=Frame.footnotes.item(FootNoteCnt)
?感谢您的帮助。我当时没有注意到。表Frame.tables.item(0)也有同样的错误;如何不同?它始终是大还是小?在第二种方法中,我注意到:var CurrentFootNote=Frame.footnotes.item(0)
,是否应该是var CurrentFootNote=Frame.footnotes.item(FootNoteCnt)
?感谢您的帮助。我当时没有注意到。与tables Frame.tables.item(0)相同的错误;这不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-当然,这回答了问题。问题是,为什么这两种方法给出不同的答案。答案完全如所述。这不提供问题的答案。若要评论或要求澄清如果你收到一位作者的回复,请在他们的帖子下方留下评论。-当然,这回答了这个问题。问题是为什么这两种方法给出不同的答案。答案完全如前所述。