[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:
(2682 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: 12265

24. Sep 2019, 12:34
Beitrag # 2 von 9
Beitrag ID: #571952
Bewertung:
(2675 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:
(2650 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: 12265

24. Sep 2019, 15:20
Beitrag # 4 von 9
Beitrag ID: #571958
Bewertung:
(2637 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: 444

17. Feb 2020, 13:54
Beitrag # 5 von 9
Beitrag ID: #574148
Bewertung:
(1182 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 2019


als Antwort auf: [#571958]

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

Martin Fischer
  
Beiträge gesamt: 12265

17. Feb 2020, 14:46
Beitrag # 6 von 9
Beitrag ID: #574150
Bewertung:
(1171 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: 4643

17. Feb 2020, 14:50
Beitrag # 7 von 9
Beitrag ID: #574151
Bewertung:
(1168 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: 12265

17. Feb 2020, 15:05
Beitrag # 8 von 9
Beitrag ID: #574153
Bewertung:
(1161 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: 444

17. Feb 2020, 15:28
Beitrag # 9 von 9
Beitrag ID: #574154
Bewertung:
(1156 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 2019


als Antwort auf: [#574150]
X

Aktuell

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
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic

Neuste Foreneinträge


Konturstärke von Vektorgrafiken automatisch "korrigieren"

Alternativen zu Acrobat

Folder-Objekt mit Pfad als Argument

Preflight-Bedienfeld zeigt keine Einträge

QR-Codes nachträglich formatieren

DONE | Adobe XD - Gestrichelte Linie fortführend anzeigen lassen

Adobe XD - Gestrichelte Linie fortführend anzeigen lassen

Caldera RIP EasyMedia

InCopy

Bold-Schriftschnitt wird unter Word 365 (Mac) nicht korrekt dargestellt
medienjobs