[GastForen Programmierung/Entwicklung AppleScript Mehrseitiges InDesign Dokument in einzelne

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Mehrseitiges InDesign Dokument in einzelne

Roderix
Beiträge gesamt: 53

15. Jul 2008, 08:49
Beitrag # 1 von 5
Bewertung:
(1095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum!

Kann man mittels eines Scriptes ein InDesign-Dokument, dass aus mehreren Doppelseiten besteht so aufsplitten, dass für jede Doppelseite ein einzelnes Dokument erzeugt wird?

Besten Dank und Gruß
X

Mehrseitiges InDesign Dokument in einzelne

Hans Haesler
  
Beiträge gesamt: 5826

1. Aug 2008, 21:13
Beitrag # 2 von 5
Beitrag ID: #422495
Bewertung:
(1094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

ich habe deine Anfrage erst heute entdeckt.

Ja, man kann InDesign-Dokumente aufsplitten. Ich habe kürzlich ein Script geschrieben, mit welchem der Anwender eingeben kann, wieviele Seiten die neuen Dokumente enthalten sollen. Aber das war mit JavaScript unter Windows. Deshalb musste ich von vorne beginnen.

Der Code ist mit Kommentaren versehen, damit einigermassen klar wird, wie es funktioniert.
Code
  1. tell application "Adobe InDesign CS2"
    activate
    if not (exists document 1) then
      display dialog "Bitte ein Dokument öffnen." buttons ¬
      "OK" default button 1 with icon 0
      error number -128
    end if
    tell document 1
      try
      -- der Pfad zum Ordner, wo sich das Dokument befindet
      set docFolder to file path as Unicode text
      -- der volle Pfad des Dokuments
      set docPath to full name
      -- der Name des Dokuments
      set docName to name
      if docName ends with ".indd" then
        set docName to text 1 thru -6 of docName
      end if
      on error
      display dialog "Zuerst das Dokument speichern." buttons ¬
        "OK" default button 1 with icon 0
      error number -128
      end try
      -- bei einer ungespeicherten Änderung das Speichern vornehmen
      if modified then save
      -- die Druckbögen zählen
      set nSpreads to count of spreads
      set nPages to count pages of spread 1
    end tell
    if nSpreads is greater than 1 then
      -- die Anzahl Stellen der Zahl des letzten Druckbogens
      set nDigits to count of (nSpreads as string)
      -- den Zähler zum Anhängen an den Dokumentnamen vorbereiten
      set ctr to "_" & text -nDigits thru -1 of ("000" & 1)
      -- die Druckbögen 2 bis zum letzen entfernen
      delete (spreads 2 thru -1) of document 1
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
      -- die Variable der Startseite initialisieren
      if nPages is 1 then
      set s to 2
      else
      set s to 3
      end if
      -- eine Schleife durch die Druckbögen 2 bis zum zweitletzten
      repeat with i from 2 to (nSpreads - 1)
      -- das Originaldokument erneut öffnen
      open file docPath
      -- die Zählervariable aktualisieren
      set ctr to "_" & text -nDigits thru -1 of ("000" & i)
      tell document 1
        -- die Seitennummer der ersten Seite des aktuellen Druckbogens
        set pageNumber to (name of page 1 of spread i) as integer
        -- einen neuen Abschnitt definieren
        make section with properties {page start:page s ¬
        , continue numbering:false, page number start:pageNumber}
        -- die Druckbögen vor dem aktuellen entfernen
        delete (spreads 1 thru (i - 1))
        -- und auch die Druckbögen nach dem aktuellen bis zum letzten
        delete (spreads 2 thru -1)
      end tell
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
      -- die Startseitenvariable hochzählen
      set s to s + 2
      end repeat
      -- das Originaldokument ein letztes Mal öffnen
      open file docPath
      -- die Zählervariable aktualisieren
      set ctr to "_" & text -nDigits thru -1 of ("000" & nSpreads)
      tell document 1
      -- die Seitennummer der ersten Seite des aktuellen Druckbogens
      set pageNumber to (name of page 1 of spread nSpreads) as integer
      -- einen neuen Abschnitt definieren
      make section with properties {page start:page s ¬
        , continue numbering:false, page number start:pageNumber}
      -- die Druckbögen ausser dem letzten entfernen
      delete (spreads 1 thru (nSpreads - 1))
      end tell
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
    end if
    -- das war's
    display dialog "Fertig." buttons ¬
      "OK" default button 1 with icon 1 giving up after 1
    end tell

Das Originaldokument wird nicht verändert (ausser dem eventuellen Speichern, wenn eine Änderung nicht gespeichert worden ist).

Die neuen Dokumente werden in demselben Ordner gespeichert, in welchem sich das Original befindet. Der Name ist ergänzt mit "_1" (usw.), wenn die Anzahl Druckbögen kleiner als 10 ist. Falls die Anzahl zweistellig ist, wird der Zähler bei "_01" beginnen.

Gruss, Hans


als Antwort auf: [#422494]

Mehrseitiges InDesign Dokument in einzelne

Roderix
Beiträge gesamt: 53

4. Aug 2008, 16:08
Beitrag # 3 von 5
Beitrag ID: #422496
Bewertung:
(1094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!

Das Script läuft gaaanz super!
Ich hätte ehrlich gesagt gar nicht gedacht, dass sowas überhaupt möglich ist.
Es ist genau das, was ich gesucht habe.

Vielen Dank dafür!

Gruß, Roderix


als Antwort auf: [#422494]

Mehrseitiges InDesign Dokument in einzelne

Hans Haesler
  
Beiträge gesamt: 5826

4. Aug 2008, 18:40
Beitrag # 4 von 5
Beitrag ID: #422497
Bewertung:
(1094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roderix,

bitteschön.

Nachträglich  kam mir in den Sinn, dass das Script versagen würde, wenn ein Anwender mal ein Dokument zerlegen muss, welches nicht mit Doppelseiten aufgebaut ist.

Alles, was es braucht: Den entsprechenden Test einbauen ...
---
      -- speichern, ob Doppel- oder Einzelseiten
      set doublePage to facing pages of document preferences
---
... und beim Inkrementieren des Startseitewerts die Variable verwenden:
---
         -- die Startseitenvariable hochzählen
         if doublePage then
            set s to s + 2
         else
            set s to s + 1
         end if
---

Hier das komplette Script. Vielleicht wirst Du keine Verwendung dafür haben. Aber ziemlich sicher ein interessierter Mitleser.
Code
  1. tell application "Adobe InDesign CS2"
    activate
    if not (exists document 1) then
      display dialog "Bitte ein Dokument öffnen." buttons ¬
      "OK" default button 1 with icon 0
      error number -128
    end if
    tell document 1
      try
      -- der Pfad zum Ordner, wo sich das Dokument befindet
      set docFolder to file path as Unicode text
      -- der volle Pfad des Dokuments
      set docPath to full name
      -- der Name des Dokuments
      set docName to name
      if docName ends with ".indd" then
        set docName to text 1 thru -6 of docName
      end if
      on error
      display dialog "Zuerst das Dokument speichern." buttons ¬
        "OK" default button 1 with icon 0
      error number -128
      end try
      -- bei einer ungespeicherten Änderung das Speichern vornehmen
      if modified then save
      -- speichern, ob Doppel- oder Einzelseiten
      set doublePage to facing pages of document preferences
      -- die Druckbögen zählen
      set nSpreads to count of spreads
      set nPages to count pages of spread 1
    end tell
    if nSpreads is greater than 1 then
      -- die Anzahl Stellen, welche die Zahl des letzten Druckbogens benötigt
      set nDigits to count of (nSpreads as string)
      -- den Zähler zum Anhängen an den Dokumentnamen vorbereiten
      set ctr to "_" & text -nDigits thru -1 of ("000" & 1)
      -- die Druckbögen 2 bis zum letzen entfernen
      delete (spreads 2 thru -1) of document 1
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
      -- die Variable der Startseite initialisieren
      if nPages is 1 then
      set s to 2
      else
      set s to 3
      end if
      -- eine Schleife durch die Druckbögen 2 bis zum zweitletzten
      repeat with i from 2 to (nSpreads - 1)
      -- das Originaldokument erneut öffnen
      open file docPath
      -- die Zählervariable aktualisieren
      set ctr to "_" & text -nDigits thru -1 of ("000" & i)
      tell document 1
        -- die Seitennummer der ersten Seite des aktuellen Druckbogens
        set pageNumber to (name of page 1 of spread i) as integer
        -- einen neuen Abschnitt definieren
        make section with properties {page start:page s ¬
        , continue numbering:false, page number start:pageNumber}
        -- die Druckbögen vor dem aktuellen entfernen
        delete (spreads 1 thru (i - 1))
        -- und auch die Druckbögen nach dem aktuellen bis zum letzten
        delete (spreads 2 thru -1)
      end tell
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
      -- die Startseitenvariable hochzählen
      if doublePage then
        set s to s + 2
      else
        set s to s + 1
      end if
      end repeat
      -- das Originaldokument ein letztes Mal öffnen
      open file docPath
      -- die Zählervariable aktualisieren
      set ctr to "_" & text -nDigits thru -1 of ("000" & nSpreads)
      tell document 1
      -- die Seitennummer der ersten Seite des aktuellen Druckbogens
      set pageNumber to (name of page 1 of spread nSpreads) as integer
      -- einen neuen Abschnitt definieren
      make section with properties {page start:page s ¬
        , continue numbering:false, page number start:pageNumber}
      -- die Druckbögen ausser dem letzten entfernen
      delete (spreads 1 thru (nSpreads - 1))
      end tell
      -- den Pfad für das aktuelle Dokument zusammensetzen
      set curPath to docFolder & docName & ctr & ".indd"
      -- speichern und schliessen
      save document 1 to curPath
      close document 1 saving no
    end if
    -- das war's
    display dialog "Fertig." buttons ¬
      "OK" default button 1 with icon 1 giving up after 1
    end tell

Gruss, Hans


als Antwort auf: [#422494]

Mehrseitiges InDesign Dokument in einzelne

TMA
Beiträge gesamt: 403

5. Aug 2008, 07:12
Beitrag # 5 von 5
Beitrag ID: #422498
Bewertung:
(1094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
Zitat von author="Hans Haesler" date="1217868038" Hier das komplette Script. Vielleicht wirst Du keine Verwendung dafür haben. Aber ziemlich sicher ein interessierter Mitleser.

Das stimmt. Das Script kann man mit Sicherheit mal gut gebrauchen.
Werde es bei Gelegenheit mal austesten.

Auch von mir ein Dankeschön und Gruß
TMA


als Antwort auf: [#422494]
X