[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

27. Jan 2021, 13:27
Beitrag # 1 von 8
Bewertung:
(10161 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich möchte eine Aufgabe, die mehrfach im Monat gemacht werden muss, automatisieren.

Ich kann grundlegend JavaScript und verstehe Code wenn ihn sehe. Ich tue mich nur schwer mit den Möglichkeiten und den Objekten in InDesign. Ich habe mir schon viele JavaScripte-Scripte mit Hilfe dieses Forums hier gebaut, aber nun stehe ich auf dem Schlauch.

Programm: InDesign CC 2021 16.01 x64 + EasyCatalog
OS: Windows 10
Sprache: JavaScript

Was soll gemacht werden:
Ich habe eine InDesign Datei in der viele einzelne Kurzgeschichten in EINEM Textenrahmen für ein Buch fertig umbrochen gesetzt sind.
Nun sollen diese Kurzgeschichten nachträglich in einzelne InDesign Dateien ausgegliedert werden.

Es gibt ein eindeutiges Absatzformat mit dem Namen "ueberschrift" (siehe Bild).
https://www.blue-panther-books.de/img/bild.jpg
Diese Kurzgeschichten beginnen immer auf der ungeraden Seite (in "ueberschrift" definiert).

Beispiel:
E:\buch\2590_gesamtdatei.indd

Es gibt einen Ordner mit InDesign Dateien für die späteren Einzelgeschichten der abhängig von dem Dateipfad wo die aktuelle Datei liegt zu referenzieren ist.
Diese Dateien soll selbst NICHT genutzt werden, es sind nur Dummys (aus meiner Datenbank erzeugt) damit aus dem JavaScript heraus der ein echter Name anhand der Endung "*_xx.indd" pro laufender Geschichte genutzt werden kann und die Nummer vorn im Datei Namen mit meiner Datenbank matched.

Beispiel:
E:\buch\2590_gesamtdatei.indd
E:\buch\einzel\3809_geschichte_01.indd
E:\buch\einzel\3810_geschichte_02.indd
E:\buch\einzel\3910_geschichte_03.indd

Meine Idee ist:
Das Script sucht nach der Anzahl der Überschriften mit dem Absatzformat "ueberschrift" und identifiziert so die einzelnen Geschichten.
Dann geht es in eine Schleife die folgendes macht:
Es geht in den Textrahmen und löscht den Text der nicht braucht wird, danach löscht es alle leeren Seiten dann sucht es sich den Namen der entsprechenden Einzelgeschichten Datei abhängig von der Endung "*_01.indd" heraus und "speichert die Datei unter".
Dann zwei Undos und es wird mit der zweiten Geschichte weiter gemacht.
Und so weiter ...
Dieses Vorgehen hätte den Vorteil, dass innerhalb des Textrahmens alle manuell für den Seitensatz geänderten Inhalte bleiben.

Wer kann mir da helfen?
Lg Matthias
X

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

Uwe Laubender
Beiträge gesamt: 5311

28. Jan 2021, 12:32
Beitrag # 2 von 8
Beitrag ID: #578498
Bewertung:
(10039 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

hast Du das Aufteilen einer InDesign-Datei in mehrere Dateien mal mit einem Skript von Hans Häsler probiert?

DokumentAufsplitten_516d.js

Da gibt's u.a. folgende Option:

Das Trennkriterium wählen:
(x) Absatzformat (Kapitelanfang)

Das Skript findest Du hier bei HDS gehostet in dieser Liste:

https://www.hilfdirselbst.org/...mp;limit=&page=0


als Antwort auf: [#578473]

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

28. Jan 2021, 12:40
Beitrag # 3 von 8
Beitrag ID: #578499
Bewertung:
(10028 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für den Hinweis! Ich probiere das gleich mal aus!


als Antwort auf: [#578498]

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

28. Jan 2021, 13:31
Beitrag # 4 von 8
Beitrag ID: #578502
Bewertung:
(9998 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Leider funktioniert das nicht. Es scheint für ein Rahmenintensives Layout gebaut zu sein. Und nicht für EIN Rahmen mit 20 verschiedenen Aufsplittungen.
Ich bekomme einfach nur zwei Dokumente und die helfen mir nicht weiter.
Aber trotzdem danke für den Hinweis.


als Antwort auf: [#578498]

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

28. Jan 2021, 14:45
Beitrag # 5 von 8
Beitrag ID: #578507
Bewertung:
(9968 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Ideen.
Ich habe hier im Forum noch etwas rum gesucht und nun eine erste Version gebaut, mit der ich eine Geschichte selektieren und löschen kann.
Auf diesem Grundgerüst werde ich also meine Hauptdatei x-mal kopieren und dann eine Datei nach der anderen öffnen und die anderen Geschichten rauslöschen.

Hier der Startcode mit dem ich den Rest weiterbauen werde:

Code
// Ideen von: 
// https://www.hilfdirselbst.ch/foren/Absatz_mit_bestimmtem_Absatzformat_suchen__markieren_und_ausschneiden_P462762.html

// Grep zurücksetzen
app.findGrepPreferences = null;

// Setzen der Sucheinstellungen = Suche nach Überschriften
app.findGrepPreferences.appliedParagraphStyle = app.documents.firstItem().paragraphStyles.itemByName( 'ueberschrift' );

// Suchen und Ergebnisse in Variable speichern
var result = app.documents.firstItem().findGrep();

// anzahl der Überschriften = Kurzgeschichten herausfinden und anzeigen
var anzahl = result.length;
alert (anzahl);

// Mit dem Ergebnis was machen
//for (var i = result.length-1; i >= 0; i--)
// result[i].move( LocationOptions.AFTER, result[i].parentStory.insertionPoints.lastItem() );

if (result.length > 0)
{
// Erste Geschichte raussuchen
var a_text = result[0].parentStory.characters.itemByRange(result[0].characters.firstItem().index, result[1].characters.firstItem().index -1);

// text löschen
a_text.remove();
}

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = null;



als Antwort auf: [#578473]

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

WernerPerplies
Beiträge gesamt: 2751

28. Jan 2021, 18:23
Beitrag # 6 von 8
Beitrag ID: #578519
Bewertung:
(9887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Matthias,

mein Vorschlag zum Aufteilen des Textes in einem Rahmen.
Hier werden alle Geschichten nacheinander selektiert und können kopiert werden.


Code
// Voraussetzung: Rahmen selektiert 
main();

/*Void*/function main(){
try
{
var /*TextFrame*/ tF = app.selection[0],
/*Story*/story = tF.parentStory,
/*Array*/paragraphs = tF.parentStory.paragraphs.everyItem().getElements(),
/*ParagraphStyle*/titleStyle = app.activeDocument.paragraphStyles.itemByName("Überschrift"),
/*Int*/numberOfParagraphs = paragraphs.length,
/*Int*/counter = -1,
/*Paragraph*/p = null;

if (typeof(tF) === "undefined")
return; // no frame selected!

nextStory:
for (var i = 0; i < numberOfParagraphs; i++){
p = paragraphs[i];
if (p. appliedParagraphStyle.id === titleStyle.id){
paragraphs[(++counter)] = {title: p, text: []}; // reuse Array with new content
for (++i; i < numberOfParagraphs; i++){
p = paragraphs[i];
if (p. appliedParagraphStyle.id === titleStyle.id){
--i; // decrement pointer
continue nextStory; // loop from next title
}
paragraphs[counter].text.push(paragraphs[i]);
}
}
}
// resize Array
paragraphs.length = ++counter;
// handle every shortStory
for (var i = 0; i < counter; i++){
paragraphs[i].title.select();
for (var ii = 0; ii < paragraphs[i].text.length; ii++){
paragraphs[i].text[ii].select(SelectionOptions.ADD_TO);
}
// here is one short story selected.
$.bp(true);
// move selection to new file
}
}
catch (error) // Verarbeitung einer Sammlung von InDesign-Dateien
{
// wpsHandleError(error, $.stack, "findGrepWithAppliedStyle");
alert(error.message + "\n" + error.line.toString());
}
return null
}



als Antwort auf: [#578507]
(Dieser Beitrag wurde von WernerPerplies am 28. Jan 2021, 18:30 geändert)

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

3. Feb 2021, 08:06
Beitrag # 7 von 8
Beitrag ID: #578575
Bewertung:
(9154 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
vielen Dank ich werde das in den nächsten Tagen prüfen und berichten!


als Antwort auf: [#578519]

InDesign Datei mit Kurzgeschichten in einem Rahmen auf mehrere Dateien aufteilen

WernerPerplies
Beiträge gesamt: 2751

3. Feb 2021, 08:23
Beitrag # 8 von 8
Beitrag ID: #578576
Bewertung:
(9143 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok,
ich dachte schon, die Sache hätte sich erledigt.

Hier noch eine etwas einfachere Version - Verzicht auf die innere Schleife im zweiten Teil:
Code
// Voraussetzung: Rahmen selektiert 
main();

/*Void*/function main(){
try
{
var /*TextFrame*/ tF = app.selection[0],
/*Story*/story = tF.parentStory,
/*Array*/paragraphs = tF.parentStory.paragraphs.everyItem().getElements(),
/*ParagraphStyle*/titleStyle = app.activeDocument.paragraphStyles.itemByName("Überschrift"),
/*Int*/numberOfParagraphs = paragraphs.length,
/*Int*/counter = -1,
/*Paragraph*/p = null;

if (typeof(tF) === "undefined")
return; // no frame selected!

nextStory:
for (var i = 0; i < numberOfParagraphs; i++){
p = paragraphs[i];
if (p. appliedParagraphStyle.id === titleStyle.id){
paragraphs[(++counter)] = {title: p, text: []}; // reuse Array with new content
for (++i; i < numberOfParagraphs; i++){
p = paragraphs[i];
if (p. appliedParagraphStyle.id === titleStyle.id){
--i; // decrement pointer
continue nextStory; // loop from next title
}
paragraphs[counter].text.push(paragraphs[i]);
}
}
}
// resize Array
paragraphs.length = ++counter;
// handle every shortStory
for (var i = 0; i < counter; i++){
paragraphs[i].title.select();
paragraphs[i].text[paragraphs[i].text.length-1].select(SelectionOptions.ADD_TO);
// here is one short story selected.
$.bp(true); // Breakpoint, hold after selecting each shortStory
// move selection to new file
}
}
catch (error) // Verarbeitung einer Sammlung von InDesign-Dateien
{
alert(error.message + "\n" + error.line.toString());
}
return null
}


Grundsätzlich könnte man naürlich auch noch den ersten und zweiten Teil des Skriptes zusammenfassen, darauf habe ich bewusst verzichtet, weil mir die Sache so übersichtlicher erscheint.


als Antwort auf: [#578575]
X