• Dirickteur
  • Registratie: Januari 2003
  • Laatst online: 12:18
Goedemorgen iedereen,

Voor een soort van geintje ben ik bezig om een documentje te maken in inDesign. Hiervoor wil ik dat de paginanummering 'terugloopt', dus dat er begonnen wordt bij pagina 100 en de laatste pagina nummer 1 is. Aangezien ik erg lui ben, heb ik geen zin om dit allemaal handmatig te doen ;-)

Ik heb gezocht en gekeken naar diverse plugins, maar verder dan wat onleesbare Arabische progsels of een plugin voor de Mac (ikzelf draai windows) kwam ik niet.

Heeft iemand enig idee hoe ik dit kan bewerkstelligen?

  • benoni
  • Registratie: November 2003
  • Niet online
Even een scriptje bij elkaar gefrot, maar niet getest, geen zin om InDesign te openen O-)
Edit: Nu wel getest en aangepast :P



JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// InDesign-writePageNumbers.jsx 

// Settings 
// 
var pageNrLabel = "@@@" 

// Check if a document is open. 
// 
if (app.documents.length != 0) { 
    writePageNumbers(app.documents[0], pageNrLabel); 
} 
else { 
    alert("Please open a document and try again."); 
} 

// writePageNumbers(doc, pageNrLabel) 
// 
function writePageNumbers(doc, pageNrLabel) { 
    var docPageNr, newPageNr, objPage, objNr, obj; 

    // Count pages of document 
    var pageCount = doc.pages.length; 

    // Iterate through the pages 
    for (docPageNr = 0; docPageNr < pageCount; docPageNr++) { 
        objPage = doc.pages[docPageNr]; 

        // Iterate through the master page items of a page 
        for (objNr = 0; objNr < objPage.masterPageItems.length; objNr++) { 
            obj = objPage.masterPageItems[objNr]; 

            // Check if current item has content 
            if (obj && obj.words && obj.words && obj.words.item(0)) { 

                // Check if the first word or the script label matches
                if (obj.words.item(0).contents == pageNrLabel || obj.label == pageNrLabel) { 

                    // Detach item from master page 
                    obj.override(objPage); 
                } 
            } 
        } 

        // Iterate through the text frames of a page 
        for (objNr = 0; objNr < objPage.textFrames.length; objNr++) { 
            obj = objPage.textFrames[objNr]; 

            // Check if current item has content 
            if (obj && obj.words && obj.words && obj.words.item(0)) { 

                // Check if the first word or the script label matches
                if (obj.words.item(0).contents == pageNrLabel || obj.label == pageNrLabel) { 

                    // Unlock item if needed 
                    if (obj.locked) obj.locked = false; 

                    // Calculate new page number 
                    newPageNr = pageCount - docPageNr; 

                    // Replace inner text 
                    obj.words.item(0).contents = ("" + newPageNr); 

                    // Attach a script label if needed 
                    if (obj.label == "") obj.label = pageNrLabel; 
                } 
            } 
        } 
    } 
}


Je moet een kader met de tekst '@@@' (in plaats van het automatische paginanummer symbool) op je master page hebben staan (of op elke pagina apart). Daarna het script opstarten en kijken of het werkt :>

Links (voor als je er wat aan moet vertimmeren):

[ Voor 38% gewijzigd door benoni op 26-11-2008 16:19 ]