[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:
(1057 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: 5822

1. Aug 2008, 21:13
Beitrag # 2 von 5
Beitrag ID: #422495
Bewertung:
(1056 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
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:
(1056 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: 5822

4. Aug 2008, 18:40
Beitrag # 4 von 5
Beitrag ID: #422497
Bewertung:
(1056 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
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: 393

5. Aug 2008, 07:12
Beitrag # 5 von 5
Beitrag ID: #422498
Bewertung:
(1056 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