[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

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

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Shari172
Beiträge gesamt: 12

24. Sep 2019, 12:06
Beitrag # 1 von 9
Bewertung:
(7393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

wir haben eine CS6 Bibliothek mit 92 verschiedenen Elementen, die wir gerne als eine Art Übersicht in einem InDesign-Dokument platzieren möchte.
Die Elemente sind immer gleich aufgebaut: Platzhalterrahmen + Textrahmen mit Maßen darauf.
Gibt es hierfür eine Möglichkeit/Script, wie die Elemente auf fortlaufenden Seiten untereinander platziert werden können?

Viele Grüße,
Shari
----------
www.satzkiste.de
X

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Martin Fischer
  
Beiträge gesamt: 12587

24. Sep 2019, 12:34
Beitrag # 2 von 9
Beitrag ID: #571952
Bewertung:
(7386 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Shari,

das folgende Skript platziert alle Objekte einer Bibliothek im aktiven Dokument - je auf einem neuen Druckbogen.

Code
/*  
library_place_assets.jsx

//DESCRIPTION:Platziert Objekte einer Bibliothek im aktiven Dokument.
VERSION: 0.1
AUTHOR: Martin Fischer
EMAIL: InDesign[at]MartinFischer.de
DATE: 22.6.15
© Martin Fischer 2015
*/
// Bibliotheksobjekte_platzieren.jsx

app.doScript (main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "library_place_assets.jsx");

function main()
{
if (app.documents.length == 0)
app.documents.add();
var doc = app.documents.firstItem(),
i, lib = null, assets = [], n_layer = null, n = 'Bibliotheksobjektname',
ps = (doc.paragraphStyles.itemByName(n).isValid)
? doc.paragraphStyles.itemByName(n)
: doc.paragraphStyles.add({
name: n,
pointSize: '12 pt',
justification:Justification.LEFT_ALIGN,
leftIndent: 0,
rightIndent: 0,
firstLineIndent: 0,
lastLineIndent: 0
});

if (app.libraries.length == 0)
error_exit('Keine Bibliothek geöffnet!')
else if (app.libraries.length == 1)
lib = app.libraries.firstItem();
else
lib = get_library(app.libraries.everyItem().name);

assets = lib.assets.everyItem().getElements();
assets.sort(assort);

n_layer = (doc.layers.itemByName(n).isValid) ? doc.layers.itemByName(n) : doc.layers.add({name: n});

for (i = 0; i < assets.length; i++)
{
var spread = (doc.spreads.length == 1 && doc.spreads.firstItem().pageItems.length == 0) ? doc.spreads.firstItem() : doc.spreads.add();
app.layoutWindows.firstItem().activeSpread = spread;
var tf = spread.textFrames.add({rotationAngle: 90, /*geometricBounds: [0, '-10 mm', doc.documentPreferences.pageHeight, 0],*/ itemLayer: n_layer, contents: assets[i].name, name: n, nonprinting : true});
tf.geometricBounds = [0, '-10 mm', doc.documentPreferences.pageHeight, -0.1];
tf.insertionPoints.firstItem().appliedParagraphStyle = ps;
assets[i].placeAsset(doc);
}


//=================================================================
// Funktionen
//=================================================================

//-----------------------------------------------------------------
// Bibliotheksobjekte sortieren
//-----------------------------------------------------------------
function assort(a,b)
{
return a.name > b.name;
}

//-----------------------------------------------------------------
// Bibliothek ermitteln
//-----------------------------------------------------------------
function get_library(lib_names)
{
var win = new Window ("dialog", "Auswahl der Bibliothek");
var gr = win.add ("group");
gr.drop_down = gr.add ( 'dropdownlist', undefined, lib_names);
gr.drop_down.selection = 0;
var btn_gr = win.add ("group");
btn_gr.alignment = "right";
btn_gr.add ("button", undefined, "OK");
btn_gr.add ("button", undefined, "Cancel");
if (win.show () == 1)
return( app.libraries.itemByName( lib_names[gr.drop_down.selection.index]) );
else
exit ();
}

//-----------------------------------------------------------------
// Ausstieg mit Fehlermeldung
//-----------------------------------------------------------------
function error_exit(message)
{
if (arguments.length > 0)
alert(message);
exit();
}
}



Und das folgende Skript macht das Gegenteil:
es sichert die Objekte je Druckbogen in einer Bibliothek:

Code
/* 
library_store2.jsx

//DESCRIPTION:Sichert Objekte der Druckbogen des aktiven Dokuments in einer Bibliothek
VERSION: 0.1
AUTHOR: Martin Fischer
EMAIL: InDesign[at]MartinFischer.de
DATE: 22.6.15
© Martin Fischer 2015
*/

app.doScript (main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "library_store2.jsx");
//~ main();

function main()
{
if (app.documents.length == 0)
error_exit('Bitte ein Dokument öffnen.');

var doc = app.documents.firstItem(),
i, lib_obj_name = 'Bibliotheksobjektname',
lib = null, ass = new Array,
n_layer = (doc.layers.itemByName(lib_obj_name).isValid) ? doc.layers.itemByName(lib_obj_name) : doc.layers.add({name: lib_obj_name});

if (app.libraries.length == 0)
error_exit('Keine Bibliothek geöffnet!')
else if (app.libraries.length == 1)
lib = app.libraries.firstItem();
else
lib = get_library(app.libraries.everyItem().name);

for (i = 0; i < doc.spreads.length; i++)
{
var obj = [];
var spread = doc.spreads.item(i);
var tf = spread.textFrames.itemByName(lib_obj_name);
if (tf.isValid)
{
var n = tf.parentStory.contents;
if (lib.assets.itemByName(n).isValid)
lib.assets.itemByName(n).remove();

for (var x = 0; x < spread.pageItems.length; x++)
if (spread.pageItems.item(x).name != lib_obj_name)
obj.push(spread.pageItems.item(x));
ass[n] = lib.store(obj,{name: n});
}
}


//=================================================================
// Funktionen
//=================================================================

//-----------------------------------------------------------------
// xxx
//-----------------------------------------------------------------
function error_exit(message)
{
if (arguments.length > 0)
alert(message);
exit();
}
//-----------------------------------------------------------------
// Bibliothek ermitteln
//-----------------------------------------------------------------
function get_library(lib_names)
{
var win = new Window ("dialog", "Auswahl der Bibliothek");
var gr = win.add ("group");
gr.drop_down = gr.add ( 'dropdownlist', undefined, lib_names);
gr.drop_down.selection = 0;
var btn_gr = win.add ("group");
btn_gr.alignment = "right";
btn_gr.add ("button", undefined, "OK");
btn_gr.add ("button", undefined, "Cancel");
if (win.show () == 1)
return( app.libraries.itemByName( lib_names[gr.drop_down.selection.index]) );
else
exit ();
}
}


Im Zusammenspiel beider Skripte kann man z.B. auch die Formatierung "glätten".

Viele Grüße
Martin




als Antwort auf: [#571950]
(Dieser Beitrag wurde von Martin Fischer am 17. Feb 2020, 14:43 geändert)

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Shari172
Beiträge gesamt: 12

24. Sep 2019, 13:59
Beitrag # 3 von 9
Beitrag ID: #571957
Bewertung:
(7361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey Martin,
vielen Dank!
Also ich hab es auch gleich mal getestet und das funktioniert ja schonmal prima.
Merkt sich das Script etwa wo jedes Element in der Bibliothek dazugehört? Gerade hab ich nämlich einen Rahmen platziert, verändert und verschoben und ihn dann in der Bibliothek aktualisiert.
Wenn du mir da noch eine Minierklärung geben könntest, dann kann ich das Wissen hier auch etwas teilen :)

Viele GRüße,
Shari
----------
www.satzkiste.de


als Antwort auf: [#571952]

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Martin Fischer
  
Beiträge gesamt: 12587

24. Sep 2019, 15:20
Beitrag # 4 von 9
Beitrag ID: #571958
Bewertung:
(7348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Shari,

das Skript "library_place_assets.jsx" platziert der Reihe nach alle Bibliotheksobjekte je auf einen Druckbogen.
Ferner erzeugt es links vom Druckbogen auf der Montagefläche einen Textrahmen mit dem Namen "Bibliotheksobjektname" in den es den Namen des jeweiligen Bibliothekobjekts schreibt.

Das Skript "library_store2.jsx" geht alle Druckbogen durch und prüft, ob es einen Textrahmen mit dem Namen "Bibliotheksobjektname" findet. Ist dies der Fall, dann ermittelt es aus dessen Inhalt den Namen des Bibliothekobjekts.
Findet es in der Bibliothek ein Bibliotheksobjekt mit diesem Namen, dann wird es gelöscht.
Danach werden die Objekte des Druckbogens gesammelt und mit dem ermittelten Namen des Bibliothekobjekts in der Bibliothek gespeichert (wobei der Textrahmen mit dem Namen "Bibliotheksobjektname" übergangen wird).

Kurz:
Bibliotheksobjekte in der Biblithek mit dem aus dem Druckbogen ermittelten Namen werden erst gelöscht und dann mit diesem Namen neu eingefügt.
Andere Objekte (ohne Namensgleichheit) werden einfach ergänzt.

Der Mechanismus ist zugegebenermaßen etwas speziell und birgt durchaus Risiken (ist nicht ganz "wasserdicht"). Es hat mir seinerzeit für eine schnelle Überarbeitung meiner Bibliotheken gedient und dazu konnte ich ein paar unterschlagene Bedingungen (Koordinatenursprung, Namen für Ebenen und Textrahmen) als unproblematisch voraussetzen.
Mir war es wichtig, während der Überarbeitung der Bibliotheksobjekte in der InDesign-Datei auf den Namen des Bibliotheksobjekts Einfluss nehmen zu können. Dieser Trick könnte in der "Allgemeinheit" stören/scheitern. Aber im Moment fehlt mir die Zeit, das Skript "wasserdicht" zu machen.


Mir ist gerade aufgefallen, dass die Zeile
Code
					justification:Justification.LEFT_ALIGN, 

Probleme bereiten kann, wobei mir die Ursache spontan unerklärlich ist.
Wenn bei der Ausführung etwas hakt, dann diese Zeile mit vorangestellten // oder durch Löschen unschädlich machen.

Viele Grüße
Martin




als Antwort auf: [#571957]

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Ingo Herber
Beiträge gesamt: 453

17. Feb 2020, 13:54
Beitrag # 5 von 9
Beitrag ID: #574148
Bewertung:
(5893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
sehe ich das richtig, dass das mit CC Libraries nicht mehr funktioniert?

library_store2 meldet "Keine Bibliothek geöffnet"
library_place_assets stoppt mit Fehlernummer 24, "error_exit is not a funktion"

(getestet mit ID 15.0.1)


Herzliche Grüße,
Ingo
_______________________
Windows 10 prof. | Adobe CC 2022


als Antwort auf: [#571958]

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Martin Fischer
  
Beiträge gesamt: 12587

17. Feb 2020, 14:46
Beitrag # 6 von 9
Beitrag ID: #574150
Bewertung:
(5882 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ingo,

grundsätzich sollten beide Skripte auch in CC funktionieren.

Antwort auf: library_store2 meldet "Keine Bibliothek geöffnet"


Hast Du denn eine Bibliothek geöffnet?


Antwort auf: library_place_assets stoppt mit Fehlernummer 24, "error_exit is not a funktion"


In diesem Skript hatte ich versäumt, die Funktion error_exit() zu integrieren. Das ist jetzt oben korrigiert.

Viele Grüße
Martin




als Antwort auf: [#574148]

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Uwe Laubender
Beiträge gesamt: 5122

17. Feb 2020, 14:50
Beitrag # 7 von 9
Beitrag ID: #574151
Bewertung:
(5879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
in den CC-Versionen von InDesign wohl, aber natürlich nicht mit den CC Libraries. Im Unterschied zu den Bibliothekelementen der indl-Dateien.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#574150]

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Martin Fischer
  
Beiträge gesamt: 12587

17. Feb 2020, 15:05
Beitrag # 8 von 9
Beitrag ID: #574153
Bewertung:
(5872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Richtig!

Funktioniert nicht mit Bibliotheksobjekten aus der Cloud.

Viele Grüße
Martin




als Antwort auf: [#574151]
(Dieser Beitrag wurde von Martin Fischer am 17. Feb 2020, 15:07 geändert)

CS6 // alle Bibliothek-Elemente in ID-Dokument platzieren

Ingo Herber
Beiträge gesamt: 453

17. Feb 2020, 15:28
Beitrag # 9 von 9
Beitrag ID: #574154
Bewertung:
(5867 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Hast Du denn eine Bibliothek geöffnet?


Sorry, ich dachte, die CC Libraries hätten die indl-Bibliothek ganz abgelöst.
Jedes Objekt aus der geöffneten Bibiliothek wird nun auf einer eigenen Seite platziert.

Antwort auf: In diesem Skript hatte ich versäumt, die Funktion error_exit() zu integrieren.


Es kommt jetzt keine Fehlermeldung mehr. Aber es wird scheinbar auch nichts in die geöffnete Bibliothek geschrieben.
... sorry, ich möchte Dich hiermit nicht aufhalten. Für meine Idee, eine Art Übersicht einer CC-Librarie zu erzeugen, scheint das hier nicht das richtige zu sein.

Mir gings in erster Linie um die CC-Libraries. Da prüfe ich derzeit, inwiefern ich unseren Workflow optimieren kann. (mit mäßiger Begeisterung)
Ich kann zwar wohl eine Bibliothek zu einer CC-Librarie migrieren, aber nicht umgekehrt.

Herzliche Grüße,
Ingo
_______________________
Windows 10 prof. | Adobe CC 2022


als Antwort auf: [#574150]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
21.06.2022

Online
Dienstag, 21. Juni 2022, 10.00 - 10.30 Uhr

Webinar

Viele Druckereien – kleine und große – suchen heute nach Wegen, ihre Effizienz und Produktivität zu steigern. Dabei erkennen sie oft, dass sie sich dringend um die Optimierung, Standardisierung und Automatisierung ihrer Workflows und Prozesse kümmern sollten. In unserer kostenlosen, jeweils ca. 30 minütigen Webinar-Reihe erfahren Sie, wie Sie die Effizienz- und Produktivitätspotenziale Ihrer Druckerei erschließen können – und wie einfach und kostengünstig das sein kann.

kostenlose 3-teilige Webinar-Reihe, 21., 23. und 26. Juni 2022, jeweils 10:00 - 10:30

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://impressed-workflow-server.de/impressed-webinar-reihe-the-big-picture/

Impressed Webinar-Reihe THE BIG PICTURE
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/