Различные способы подсчета символов в Indesign с использованием JavaScript - PullRequest
0 голосов
/ 19 декабря 2018

Я пишу программу javascript для обработки каждого символа в документе Indesign.

Для начала я написал два разных способа подсчета символов, которые по некоторым причинам дают разные результаты для больших документов.Почему?

            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" );  

1 Ответ

0 голосов
/ 31 декабря 2018

Во втором методе вы подсчитываете все символы внутри текстовых фреймов в истории.Но истории могут быть перекрыты (текст переполняется).Первый метод будет считать зачеркнутый текст (потому что вы подсчитываете символы в истории , но второй метод игнорирует их, потому что он считает только символы в истории кадров .

...