[GastForen Programme Print/Bildbearbeitung Adobe InDesign Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

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

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Udo Eisenbach
Beiträge gesamt: 4

31. Jan 2006, 08:21
Beitrag # 1 von 57
Bewertung:
(53456 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
kann mir hier jemand helfen. Aus verschiedenen Gruenden habe ich mehrere Dateien. Es handelt sich hier um ein Prospekt, aufgeteilt in 7 Dokumente. in einem Dokument habe ich die Bilder auf einer Ebene und auf zwei weiteren Ebenen befinden sich die Sprachen dt und gb. Die anderen Dokumente (6) beinhalten jeweils eine weitere Sprachebene ohne die entsprechende Bildebene. Dieses Prospekt ist eigentlich ein Katalog und hat nun ueber 100 Seiten. Jetzt moechte ich gerne die anderen sechs Ebenen in mein erstes Dokument importieren, wenn ich dies jetzt von Hand mache muesste ich ueber 600 Seiten umkopieren! Es gibt doch eine Möglichkeit, dies mit einem Script in InDesign zu loesen? Ich kenn mich mit Scripten nicht gut aus. Daher bitte ich um Hilfe, damit ich hier nicht Naechte mit kopieren verbringe.
Fuer zahlreiche Hilfe bedankt sich
Udo Eisenbach :-)
X

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2006, 08:35
Beitrag # 2 von 57
Beitrag ID: #208076
Bewertung:
(53353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Es gibt doch eine Möglichkeit, dies mit einem Script in InDesign zu loesen?

Gibt es Textflüsse, die sich über mehrere Textrahmen und über mehrere Seiten erstrecken?
Oder gibt es nur "alleinstehende" (unverknüpfte) Textrahmen?

Letzterer Fall würde ein Skript deutlich vereinfachen.
Beim ersteren Fall hingegen könnte dem Skriptentwickler schwindelig werden, weil zunächst die Textrahmen und ihre Verkettung im Zieldokument genau so angelegt werden müßten, wie im Quelldokument, um später den Textfluß darin zu plazieren.


> Ich kenn mich mit Scripten nicht gut aus. Daher bitte ich um Hilfe,
> damit ich hier nicht Naechte mit kopieren verbringe.

Du meinst, es ist besser, wenn sich jemand anderer die Nächte mit dem Skripten um die Ohren schlägt, als wenn Du die Nächte mit dem Kopieren verbringst? Das mag für Dich zutreffen. ;-)


als Antwort auf: [#208073]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Udo Eisenbach
Beiträge gesamt: 4

31. Jan 2006, 09:45
Beitrag # 3 von 57
Beitrag ID: #208091
Bewertung:
(53332 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
nein so ist das nicht gemeint ich habe jetzt naemlich schon 300 Seiten einkopiert :-). Ich moechte es mir nur fuer die zukunft einfacher machen. Auch habe ich schon Scripte (einfache) selbst gebastelt.

Zu deiner Frage, ob ueberlaufender Text im Dokument enthalten ist oder ob die Seiten einzeln stehen: Die Seiten stehen einzeln und haben
keine Verkettung. Aber auch diese Moeglichkeit waere nicht abzulehnen.

Fuer deine Muehe bedanke ich mich recht herzlich
Gruss Udo Eisenbach :-)


als Antwort auf: [#208076]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2006, 09:49
Beitrag # 4 von 57
Beitrag ID: #208094
Bewertung:
(53326 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> nein so ist das nicht gemeint ich habe jetzt naemlich schon 300 Seiten einkopiert

Du scheinst schneller zu sein als jedes Skript.
Von 8:20 bis 9:45 Uhr 300 Seiten, dann sitzt Du noch etwa bis 11:15 - also mußt Du Dir garantiert keine Nacht um die Ohren schlagen (und ich auch nicht).

Weiter so. ;-)



> Fuer deine Muehe bedanke ich mich recht herzlich

Gern geschehen.


als Antwort auf: [#208091]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2006, 09:52 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Udo Eisenbach
Beiträge gesamt: 4

31. Jan 2006, 10:13
Beitrag # 5 von 57
Beitrag ID: #208101
Bewertung:
(53310 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sehr geehrter Herr Fischer,

besten Dank fuer die Muehe. Doch sollten sie nicht in der Lage sein meine Frage sachlich zu beantworten moechte ich doch von weiteren Antworten dieser art absehen. Stellen Sie sich vor, Sie haben ein Problem und es kommt nur diese Art von Antwort wie Sie sie mir geben -> Dann brauchen Sie sich nicht wundern wenn Sie auch keine Hilfe bekommen!.

Desweiteren wird dieses Forum ja nicht nur von Ihnen benutzt! Also koennte es doch Sein, dass der eine oder andere auch an diesem Problem haengt, es aber wegen solcher Antworten erst garnicht fragt.

Und alleine deshalb sollte man hier doch nur sachlich die Fragen beantworten oder es ganz lassen!

Da Sie offensichtlich nicht in der Lage sind diese Frage sachlich zu beantworten ist mir meine Zeit jetzt mit Ihnen auch zu schade und daher wuensche ich keine weiter Antwort von Ihnen.

Hochachtungsvoll
Udo Eisenbach


als Antwort auf: [#208094]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

31. Jan 2006, 10:31
Beitrag # 6 von 57
Beitrag ID: #208107
Bewertung:
(53303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

hier folgt ein einfaches Copy & Paste-Skript, das Seite für Seite die Objekte vom vorderen Dokument ins hintere kopiert.

Zunächst werden die Seiten abgeglichen und ggf. fehlende Seiten im Zieldokument ergänzt.
Dann werden die Ebenen abgeglichen und ggf. fehlende Ebenen im Zieldokument ergänzt.
Anschließend wird Seite für Seite kopiert und eingefügt.

Das Skript prüft nicht, ob die Zielebene im Zieldokument ggf. gesperrt ist.
Es berücksichtigt ferner keine verknüpften Textrahmen, sondern behandelt jeden Textrahmen einzeln (in der Zielebene sind ursprünglich verknüpfte Textrahmen nicht mehr verknüpft).

Code
// CopyFromOneDoc2Another.jsx 

QuellDoc = app.documents[0];
ZielDoc = app.documents[1];

// Seitenumfang abgleichen
if (ZielDoc.pages.length < QuellDoc.pages.length)
{
myP2add = QuellDoc.pages.length - ZielDoc.pages.length;
for (onePage = 0; onePage < myP2add; onePage++)
{
ZielDoc.pages.add();
}
}

// Ebenen abgleichen
myLayers = QuellDoc.layers
for (oneLayer = myLayers.length-1; oneLayer >= 0; oneLayer--)
{
try
{
ZielDoc.layers.add({name:myLayers[oneLayer].name})
}
catch(e){}
}

// Seitwärts vorgehen
for (onePage = 0; onePage < QuellDoc.pages.length; onePage++)
{
app.select(NothingEnum.nothing); // ggf. vorhandene Auswahl löschen
for (oneItem = 0; oneItem < QuellDoc.pages[onePage].pageItems.length; oneItem++ )
{
myCollection = QuellDoc.pages[onePage].pageItems[oneItem].select(SelectionOptions.addTo)
}
if (app.selection.length > 0)
{
app.copy();
app.layoutWindows[1].bringToFront();
app.layoutWindows[0].activePage = app.documents[0].pages[onePage];
app.pasteInPlace();
app.layoutWindows[1].bringToFront();
}
}



als Antwort auf: [#208101]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2006, 10:45 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Udo Eisenbach
Beiträge gesamt: 4

31. Jan 2006, 11:29
Beitrag # 7 von 57
Beitrag ID: #208126
Bewertung:
(53276 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sehr geehrter Herr Fischer,

ich konnte nicht wegschauen. Ein ganz großes Lob an Sie. Besten Dank. Genau diese Antwort habe ich gebraucht. Funktioniert super. Sollte ich Sie mit meiner Frage gekraenkt haben, sollten sie dies gleich zum Ausdruck bringen (sachlich). Wir sind alle nur Menschen.

Noch einmal toll, super, danke.

Mit freundlichen Gruessen
Udo Eisenbach


als Antwort auf: [#208107]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

URo
Beiträge gesamt: 353

31. Jan 2006, 14:40
Beitrag # 8 von 57
Beitrag ID: #208169
Bewertung:
(53246 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wir sind alle nur Menschen.


...und Sie offenbar einer, der nicht gemerkt hat, dass Martin Fischer hier keine Antworten braucht, sondern beinahe jedem, der freundlich bittet, ein maßgeschneidertes Script bastelt.

Angesichts Ihres Tonfalls hätte ich geschmunzelt und Ihnen angenehme Nächte gewünscht, wenn von Martin ein süffisantes "dann eben nicht" gekommen wäre...


als Antwort auf: [#208126]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

mio
Beiträge gesamt: 2

9. Jun 2006, 08:43
Beitrag # 9 von 57
Beitrag ID: #233638
Bewertung:
(52994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin

ich kenne mich mit InDesign gut aus, aber mit Scripting überhaupt nicht. Ich könnte Dein Script wahrscheinlich gut gebrauchen... Ich habe ein 1000-seitiges Buch, dass in der deutschen Fassung auf Bildebene/Legenden in Neuauflage geändert wurde. Nun sollte ich dies noch in der englischen Fassung (2. Dokument, resp. Buch) machen. Kann ich dies mit einem Deiner Scripts lösen. Herzlichen Dank für eine Antwort.

Christoph


als Antwort auf: [#208107]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

kurtnau
Beiträge gesamt: 2170

9. Jun 2006, 10:53
Beitrag # 10 von 57
Beitrag ID: #233681
Bewertung:
(52963 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo christoph,

martin hat sich, nett wie er ist, in den urlaub abgemeldet :-). es wird also etwas länger dauern, bis er dir diese frage beantworten kann.
aber schau doch mal bei den scripten und deren beschreibung nach, ob da nichts für dich dabei ist.

gruß kurt


als Antwort auf: [#233638]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

13. Jul 2006, 16:21
Beitrag # 11 von 57
Beitrag ID: #239136
Bewertung:
(52799 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

wir nutzen Dein Script hier mit wachsender Begeisterung :-)
(Danke nochmals)

Uns ist aber noch ein Fehler aufgefallen: das Script ignoriert Musterseiten, d. h. dass Elemente, die sich auf einer Musterseite befinden nicht im Zieldokument landen. Ist das noch anpassbar?

Gruss
Klaus


als Antwort auf: [#208107]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

13. Jul 2006, 16:56
Beitrag # 12 von 57
Beitrag ID: #239144
Bewertung:
(52787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Uns ist aber noch ein Fehler aufgefallen: das Script ignoriert Musterseiten,
> d. h. dass Elemente, die sich auf einer Musterseite befinden nicht
> im Zieldokument landen. Ist das noch anpassbar?

Ja, das ist anpassbar.
Aber nicht in 5 Minuten, weil die Zahl der Doppelseiten auf den beiden Dokumenten und eigentlich auch deren Bezeichnung abgefragt werden sollte und viele Dinge, die ich im Moment noch nicht absehe.

Im Moment geht das Skript Seite für Seite voran.
In der Erweiterung werde ich es Druckbogen für Druckbogen voranmarschieren lassen - wg. verknüpften Textrahmen auf Druckbogen.

Die Erweiterung wird irgendwann die nächsten Tage kommen.


als Antwort auf: [#239136]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Christoph Steffens
  
Beiträge gesamt: 4906

13. Jul 2006, 19:25
Beitrag # 13 von 57
Beitrag ID: #239169
Bewertung:
(52762 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Klaus79 ] wir nutzen Dein Script hier mit wachsender Begeisterung

Wenn wir bedeutet, dass ihr eine Firma seid, die das Script professionell nutzt, dann solltet Ihr mal überlegen, die Aufwände von Martin finanziell zu honorieren.


als Antwort auf: [#239136]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Meister Propper
Beiträge gesamt: 1313

13. Jul 2006, 20:00
Beitrag # 14 von 57
Beitrag ID: #239170
Bewertung:
(52755 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
… mal so eine frage nebenbei. hast du das script gerade geschrieben oder warum kommt man auf diese idee? ist wirklich super geschrieben … aber warum? sind die grafiker, kunden, praktikanten wirklich so "strange" das man solch ein tolles script schreiben muss. warum kann man denn nicht direkt sauber arbeiten oder ist das zu viel verlangt? ich gewinne langsam den eindruck das kunden zu einer kürzeren zeit für noch weniger geld aufgrund laienhafter daten grosse dinge verlangen. liege ich da falsch?


als Antwort auf: [#208107]
(Dieser Beitrag wurde von Meister Propper am 13. Jul 2006, 20:04 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

13. Jul 2006, 20:13
Beitrag # 15 von 57
Beitrag ID: #239171
Bewertung:
(52745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

da ist im Prinzip gar nichts gegen einzuwenden. Ich könnte mir allerdings gut vorstellen, dass die meisten die Martin-Scripte (oder auch Singelmann/Hässler etc.) "professionell" nutzen - und sei es als 1-Mann-Firma. Oder liege ich da falsch?

Gruß
Klaus


als Antwort auf: [#239169]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Christoph Steffens
  
Beiträge gesamt: 4906

13. Jul 2006, 20:37
Beitrag # 16 von 57
Beitrag ID: #239178
Bewertung:
(22910 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, da hast Du Recht.


als Antwort auf: [#239171]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Jul 2006, 12:57
Beitrag # 17 von 57
Beitrag ID: #239286
Bewertung:
(22879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Uns ist aber noch ein Fehler aufgefallen: das Script ignoriert Musterseiten,
> d. h. dass Elemente, die sich auf einer Musterseite befinden nicht
> im Zieldokument landen. Ist das noch anpassbar?

Im folgenden Skript werden die Musterseitenobjekte auch kopiert.
Das Skript prüft nicht, ob sich Reihenfolge und Namen der Musterseiten von Quelldokument und Zieldokument entsprechen. Es sorgt aber bei Bedarf dafür, daß im Zieldokument die Anzahl der Musterseiten auf die Anzahl der Musterseiten im Quelldokument erhöht wird.

In einem Dialog erscheinen nun Infos zu Quell- und Zieldokument (nicht auswählbar - s.u.).
Ferner läßt sich einstellen, ob nur die sichtbaren Ebenen kopiert werden sollen.
Schließlich läßt sich wählen, ob die Objekte aus normalen Dokumentseiten und aus Musterseiten kopiert werden sollen.

Unsichtbare oder gesperrte Ebenen werden bei Bedarf im Zieldokument (nicht im Quelldokument) sichtbar gemacht und entsperrt.

Code
// CopyFromOneDoc2Another_LayerSensitive.jsx  

var QuellDoc = app.documents[0];
var ZielDoc = app.documents[1];
var myCheck = myDisplayDialog()

// Ebenen abgleichen
myLayers = QuellDoc.layers
for (oneLayer = myLayers.length-1; oneLayer >= 0; oneLayer--)
{
try
{
ZielDoc.layers.add({name:myLayers[oneLayer].name})
}
catch(e){}
ZielDoc.layers.item(myLayers[oneLayer].name).visible = true;
ZielDoc.layers.item(myLayers[oneLayer].name).locked = false;
}

// Seitenumfang bei Textseiten abgleichen
if (ZielDoc.pages.length < QuellDoc.pages.length)
{
myP2add = QuellDoc.pages.length - ZielDoc.pages.length;
for (onePage = 0; onePage < myP2add; onePage++) ZielDoc.pages.add();
}

// Seitenumfang bei Musterseiten abgleichen
if (ZielDoc.masterSpreads.length < QuellDoc.masterSpreads.length)
{
myM2add = QuellDoc.masterSpreads.length - ZielDoc.masterSpreads.length;
for (oneSpread = 0; oneSpread < myM2add; oneSpread++) ZielDoc.masterSpreads.add();
}

// Doppelseitwärts vorgehen auf Textseiten
if (myCheck[1] == true)
for (oneSpread = 0; oneSpread < QuellDoc.spreads.length; oneSpread++)
theCopyPaste(QuellDoc.spreads[oneSpread])

// Doppelseitwärts vorgehen auf Musterseiten
if (myCheck[2] == true)
for (oneMSpread = 0; oneMSpread < QuellDoc.masterSpreads.length; oneMSpread++)
theCopyPaste(QuellDoc.masterSpreads[oneMSpread])


// Dialog
function myDisplayDialog()
{
var myFieldWidth = 150;
var myDialog = app.dialogs.add({name:"Ebenen kopieren"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Quelldokument: " + QuellDoc.name, minWidth:myFieldWidth});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zieldokument: " + ZielDoc.name, minWidth:myFieldWidth});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myVisibleLayers = checkboxControls.add({staticLabel:"nur sichtbare Ebenen", checkedState: true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMainPages = checkboxControls.add({staticLabel:"aus Dokumentseiten kopieren", checkedState : true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMasterPages = checkboxControls.add({staticLabel:"aus Musterseiten kopieren", checkedState : false});
}
}
}
var theResult = myDialog.show();
if(theResult == true){
var myVL = myVisibleLayers.checkedState;
var myMainP = myMainPages.checkedState;
var myMasterP = myMasterPages.checkedState;
myDialog.destroy();
}
else{
myDialog.destroy();
exit();
}
return [myVL, myMainP, myMasterP];
}

//Kopieren und Hin- und Her-Springen
function theCopyPaste(theSpread)
{
app.select(NothingEnum.nothing); // ggf. vorhandene Auswahl löschen
for (oneItem = 0; oneItem < theSpread.pageItems.length; oneItem++ )
{
myObject = theSpread.pageItems[oneItem];
if (myCheck[0] == true)
{
if (myObject.itemLayer.visible == true)
myObject.select(SelectionOptions.addTo)
}
else
{
myObject.select(SelectionOptions.addTo)
}
}
if (app.selection.length > 0)
{
app.copy();
app.layoutWindows[1].bringToFront();
app.layoutWindows[0].activeSpread = theSpread;
app.pasteInPlace();
app.layoutWindows[1].bringToFront();
}

}


Leider lassen sich Quell- und Zielfenster im Dialog nicht per PullDown-Menü wählen, weil ich mit der "FensterInVordergrundBringen"-Funktion noch auf Kriegsfuß stehe.
Wenn ich erst das Zieldokument in Vordergrund stelle (was funktioniert) und dann versuche, das Quelldokument über dieselbe Funktion in den Vordergrund zu stellen, dann kann es sein, daß die Funktion beim Quelldokument versagt. Das scheint irgendwie mit der Ausführungsgeschwindigkeit zusammenzuhängen, denn über den Debugger ist es mir schon geglückt.

Gerald, hast Du eine Idee, wie man gezielt ein Fenster mit einem bestimmten Dokumentnamen zuverlässig in den Vordergrund bringt?
Das Copy-and-Paste Verfahren macht das Handling mit der Datei im jeweils obersten Fenster notwendig.
Unterm Strich ist mir selber bei dem Copy-and-Paste Verfahren nicht ganz wohl zumute.
Aber wenn jemand mit dem Skript was anfangen kann - was die Anfrage nahelegt - soll's schon recht sein.

==========
Hier noch der Entwurf für die "FensterInVordergrundBringen"-Funktion, an dem ich mir die Zähne ausgebissen habe:

Code
// Fenster in den Vordergrund stellen 
function theBringToFront(myDocName)
{
for (oneWindow = 0; oneWindow < app.windows.length; oneWindow++)
{
if (app.windows[oneWindow].parent.name == myDocName)
{
app.windows[oneWindow].bringToFront();
return;
}
}
}



als Antwort auf: [#239136]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Jul 2006, 13:49
Beitrag # 18 von 57
Beitrag ID: #239302
Bewertung:
(22867 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Gerald, hast Du eine Idee, wie man gezielt ein Fenster mit einem
> bestimmten Dokumentnamen zuverlässig in den Vordergrund bringt?

Gerade sehe ich, ein Dokument hat eine Eigenschaft windows.
Damit müßte es sich machen lassen.

Bis später mal ...


als Antwort auf: [#239286]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

14. Jul 2006, 16:53
Beitrag # 19 von 57
Beitrag ID: #239337
Bewertung:
(22851 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich bin sprachlos. Komme leider erst am Dienstag dazu das Script zu testen - habe aber keinen Zweifel daran, dass es funktioniert. Ein Super-Dankeschön an Dich.


@Christoph
Das "Wir" bezog sich übrigens auf die vielen Grafiker und Reinzeichner, die ich kenne und an die ich bei Bedarf immer gerne die hier publizierten und hilfreichen Scripte weiterreiche. Ich selber bin auch eine One-Man-Show …

Gruss
Klaus


als Antwort auf: [#239302]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Dude
Beiträge gesamt: 63

14. Jul 2006, 18:20
Beitrag # 20 von 57
Beitrag ID: #239345
Bewertung:
(22841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@Martin:

Bei mir funktioniert das gezielte ansprechen von Dokumenten so:
Code
var docName = "Treffer"; 

for(i=0; i<app.documents.length; i++){
app.activeDocument = app.documents.item(i);
if(app.activeDocument.name.substring(0, app.activeDocument.name.lastIndexOf(".")) == docName){
//...
break;
}
}


vielleicht hilft's ja weiter


als Antwort auf: [#239302]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Jul 2006, 18:39
Beitrag # 21 von 57
Beitrag ID: #239351
Bewertung:
(22851 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@ Dude: Danke für den Hinweis.

Ich hab's jetzt auch gelöst:
Code
app.documents.item("PfundsDoc.indd").windows[0].bringToFront(); 


Beim folgenden Skript sind nun im Dialog auch das Quell- und das Zieldokument wählbar. Bei mir hat es ein paar Tests bestanden. Es ist aber trotzdem möglich, daß das Ergebnis von den Erwartungen abweicht. Deswegen sollte dieses Skript - wie immer - zunächst mit Kopien von den Originaldokumenten getestet werden. Fehler bitte melden! Das kann andere vor Katastrophen bewahren und den Entwickler was lehren.

Das Skript setzt mindestens zwei geöffnete Dokumente voraus, von welchen eins im Dialog als Quell- und ein anderes als Zieldokument ausgewählt werden kann.

Ich könnte mir vorstellen, daß das Skript, so wie es jetzt ist, u.a. für Übersetzungen interessant sein könnte, wo die einzelnen Sprachen auf einer Ebene liegen. Wenn man die übrigen Ebenen ausblendet, kann man eine bestimmte Spracheebene in ein neues Dokument kopieren. Eventuell noch die Bildebene dazu ...
Würde mich auch weiter interessieren, für was dieses Skript eingesetzt wird (wenn's denn nicht unbeachtet verstaubt).

Code
// CopyFromOneDoc2Another_LayerSensitiveWithDocSelection.jsx  
//DESCRIPTION: Kopiert (alle) Objekte von einem Quelldokument in ein Zieldokument. Die Auswahl der zu kopierenden Objekte läßt sich auf die sichtbaren Ebenen beschränken.

if (app.documents.length <2)
{
alert("Fehler!\rEs müssen mindestens zwei Dokumente geöffnet sein.");
exit();
}
var myCheck = myDisplayDialog()

/*
// Kleiner Umweg, um Quell- und Zieldokument über ihre Namen zu referenzieren
//Dieser Umweg ist dank des Hinweises von Tio
//(http://www.hilfdirselbst.ch/foren/Ebenen_aus_einem_vorhandenen_Dokument_in_ein_neues_Dokument_importieren_P240590.html#240590)
//nicht mehr notwendig.
//Dank an Tio und Dave Saunders.

var myQuellDocName = eval("app.documents[" + myCheck[3] + "]").name;
var myZielDocName = eval("app.documents[" + myCheck[4] + "]").name;
var QuellDoc = app.documents.item(myQuellDocName);
var ZielDoc = app.documents.item(myZielDocName);
*/
var QuellDoc = app.documents[ myCheck[3] ].getElements()[0];
var ZielDoc = app.documents[ myCheck[4] ].getElements()[0];

// Herstellung der Reihenfolge der Fenster
ZielDoc.windows[0].bringToFront();
QuellDoc.windows[0].bringToFront();

// Ebenen abgleichen
var myLayers = QuellDoc.layers;
for (oneLayer = myLayers.length-1; oneLayer >= 0; oneLayer--)
{
if (myCheck[0] == true)
{
if (myLayers[oneLayer].visible == true)
makeNewLayer(myLayers[oneLayer].name)
}
else
makeNewLayer(myLayers[oneLayer].name)
}

// Seitenumfang bei Textseiten abgleichen
if (ZielDoc.pages.length < QuellDoc.pages.length)
ZielDoc.documentPreferences.pagesPerDocument = QuellDoc.pages.length;

// Seitenumfang bei Musterseiten abgleichen
if (ZielDoc.masterSpreads.length < QuellDoc.masterSpreads.length)
{
myM2add = QuellDoc.masterSpreads.length - ZielDoc.masterSpreads.length;
for (oneSpread = 0; oneSpread < myM2add; oneSpread++) ZielDoc.masterSpreads.add();
}

// Doppelseitwärts vorgehen auf Textseiten
if (myCheck[1] == true)
for (oneSpread = 0; oneSpread < QuellDoc.spreads.length; oneSpread++)
theCopyPaste(QuellDoc.spreads[oneSpread])

// Doppelseitwärts vorgehen auf Musterseiten
if (myCheck[2] == true)
for (oneMSpread = 0; oneMSpread < QuellDoc.masterSpreads.length; oneMSpread++)
theCopyPaste(QuellDoc.masterSpreads[oneMSpread])

// Zieldokument am Ende wieder in Vordergrund
ZielDoc.windows[0].bringToFront();
alert("Fix und fertig.");

// ----------------------------------------------------------------------
// Dialog
// ----------------------------------------------------------------------
function myDisplayDialog()
{
var myFieldWidth = 150;
var myDialog = app.dialogs.add({name:"Ebenen kopieren"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Quelldokument:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceFileDropdown = dropdowns.add({stringList:app.documents.everyItem().name, selectedIndex:0});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zieldokument:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var myTargetFileDropdown = dropdowns.add({stringList:app.documents.everyItem().name, selectedIndex:1});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myVisibleLayers = checkboxControls.add({staticLabel:"nur sichtbare Ebenen", checkedState: true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMainPages = checkboxControls.add({staticLabel:"aus Dokumentseiten kopieren", checkedState : true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMasterPages = checkboxControls.add({staticLabel:"aus Musterseiten kopieren", checkedState : false});
}
}
}
var theResult = myDialog.show();
if(theResult == true){
var myVL = myVisibleLayers.checkedState;
var myMainP = myMainPages.checkedState;
var myMasterP = myMasterPages.checkedState;
var mySourceDoc = mySourceFileDropdown.selectedIndex;
var myTargetDoc = myTargetFileDropdown.selectedIndex;
myDialog.destroy();
}
else{
myDialog.destroy();
exit();
}
return [myVL, myMainP, myMasterP, mySourceDoc, myTargetDoc];
}

// ----------------------------------------------------------------------
// korrespondierende Ebenen im Zieldokument einblenden und entsperren
// ----------------------------------------------------------------------
function makeLayerEditable(aLayer)
{
aLayer.visible = true;
aLayer.locked = false;
}

// ----------------------------------------------------------------------
// stellt neue Ebene mit dem übergebenen Namen her (falls noch nicht vorhanden
// ----------------------------------------------------------------------
function makeNewLayer (aLayer)
{
try
{
ZielDoc.layers.add({name:aLayer})
}
catch(e){}
makeLayerEditable(ZielDoc.layers.item(aLayer))
}

// ----------------------------------------------------------------------
// Kopieren und Hin- und Herspringen
// ----------------------------------------------------------------------
function theCopyPaste(theSpread)
{
app.select(NothingEnum.nothing); // ggf. vorhandene Auswahl löschen
for (oneItem = 0; oneItem < theSpread.pageItems.length; oneItem++ )
{
myObject = theSpread.pageItems[oneItem];
if (myCheck[0] == true)
{
if (myObject.itemLayer.visible == true)
myObject.select(SelectionOptions.addTo)
}
else
{
myObject.select(SelectionOptions.addTo)
}

}
if (app.selection.length > 0)
{
app.copy();
ZielDoc.windows[0].bringToFront();
if (theSpread.constructor.name == "Spread")
{
app.layoutWindows[0].activeSpread = ZielDoc.spreads[theSpread.index];
}
else
{
app.layoutWindows[0].activeSpread = ZielDoc.masterSpreads[theSpread.index];
}
app.pasteInPlace();
QuellDoc.windows[0].bringToFront();
}
}



als Antwort auf: [#239345]
(Dieser Beitrag wurde von Martin Fischer am 27. Jul 2006, 09:20 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

15. Jul 2006, 20:37
Beitrag # 22 von 57
Beitrag ID: #239432
Bewertung:
(22818 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
[Würde mich auch weiter interessieren, für was dieses Skript eingesetzt wird]

Hallo Martin,

wenn XPress-Dokumente nach InDesign umgewandelt werden leistet mir das Script hervorragende Dienste. Durch das Seite-für-Seite kopieren in ein neues Dokument ist u. a. gewährleistet, dass die jeweils individuellen Einstellungen des Users übernommen werden.
Ich hatte Dein Script zusätzlich noch ergänzt mit anderen Scripten und Code-Snippets von Dir (und anderen Scriptern), so dass am Ende ein "sauber" umgewandeltes Dokument steht - ohne die XPress-Farben "Schwarz" und "Weiss", mit Kontursetzung aller Linien auf Innen (bei Beibehaltung der richtigen Rahmengrößen), Zuweisung des Adobe-Einzeilensetzers für alle Absätze, alles auf Drucken stellen, löschen der XPress-Stilvorlagen "Normal" und und und ...

Gruß
Klaus


als Antwort auf: [#239351]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

tl
Beiträge gesamt: 43

23. Jul 2006, 14:46
Beitrag # 23 von 57
Beitrag ID: #240590
Bewertung:
(22738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich habe einen kleinen OffTopic Nachtrag zu deinem Script. Ich bin über diese Zeilen gestolpert:

Code
// Kleiner Umweg, um Quell- und Zieldokument über ihre Namen zu referenzieren  
var myQuellDocName = eval("app.documents[" + myCheck[3] + "]").name;
var myZielDocName = eval("app.documents[" + myCheck[4] + "]").name;
var QuellDoc = app.documents.item(myQuellDocName);
var ZielDoc = app.documents.item(myZielDocName);


Ich hab nicht verstanden warum man das so umständlich machen muss und hab es anders probiert:

Code
var QuellDoc = app.documents[ myCheck[3] ];   
var ZielDoc = app.documents[ myCheck[4] ];


Wie du sicherlich selbst schon bemerkt hast funktioniert das Script dann nicht mehr! Ich hab ehrlich gesagt nicht verstanden, was den Unterschied zwischen den beiden Methoden ausmacht ...

Im Scripting Forum hab ich dann in einem Beitrag von Dave Saunders die Lösung gefunden:
http://www.adobeforums.com/...webx?14@@.3bc0ffb1/0

Die kürzeste Lösung für das Problem ist folgende:

Code
var QuellDoc = app.documents[ myCheck[3] ].getElements()[0]; 
var ZielDoc = app.documents[ myCheck[4] ].getElements()[0];


Dies bedeutet, dass folgende Zeile:

Code
var doc = app.documents[0]; 


IMMER das oberste Dokument anspricht ! Wenn sich die Reihenfolge der Dokumente während der Ausführung des Scriptes ändert, ändert sich auch der Inhalt der Variable "doc" !

Gruß Tio


als Antwort auf: [#239432]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Jul 2006, 08:56
Beitrag # 24 von 57
Beitrag ID: #240626
Bewertung:
(22716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Tio,

> ich habe einen kleinen OffTopic Nachtrag zu deinem Script. Ich bin über diese Zeilen gestolpert:

Dieses Nachhaken und Dein Gegenvorschlag kommen mir sehr gelegen.


> Ich hab nicht verstanden warum man das so umständlich machen muss

Das war ein Akt der puren Verzweiflung!
Und dieses Eingeständnis sollte in meinem Kommentar mit dem Hinweis auf den "kleinen Umweg" auch zum Ausdruck kommen. ;-)

Ich wollte dieses Feature (Auswahl von Quell- und Zieldokument aus der Reihe der geöffneten Dokumente) in dieser Version unbedingt drin haben. Wie Du bemerkt hast, kann einem die Referenzierung der Dokumente über ihre Lage (app.documents[Lage]) den Schweiß auf die Stirn treiben, weil sich damit die Position der darunterliegenden Dokumente verändert und das Zieldokument damit entweder eine Position tiefer rutschen oder gleichbleiben kann (wenn es vorher schon unter dem Quelldokument gelegen hat).

Deshalb habe ich den Umweg über den Dokumentnamen gewählt.
Bekannt war die Position. Also mußte ich über diese den Namen auslesen und später QuellDoc und ZielDoc über diese Namen referenzieren.

Die von Dir empfohlene Lösung mit dem Ansatz von Dave Saunders funktioniert.
Auch wenn ich noch nicht recht kapiert habe, warum.

> Dies bedeutet, dass folgende Zeile [..] IMMER das oberste Dokument anspricht !

Ich muß mich mit der Funktion/Bedeutung von "getElements()" noch etwas vertrauter machen. Diesen Befehl hatte ich bislang immer als überflüssigen Blinddarm wahrgenommen.

Danke für den Hinweis.
Damit funktioniert es (auch).
Und zwar ohne den verzweifelten Umweg. ;-)

So wie es aussieht (Anfrage in Workflow mit Ebenen) muß das Skript ohnehin an einzelnen Stellen noch einmal überarbeitet werden: die Banane ist eben immer noch ein bißchen grün.


als Antwort auf: [#240590]
(Dieser Beitrag wurde von Martin Fischer am 27. Jul 2006, 09:03 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

27. Jul 2006, 09:26
Beitrag # 25 von 57
Beitrag ID: #241308
Bewertung:
(22649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Skript CopyFromOneDoc2Another_LayerSensitiveWithDocSelection.jsx habe ich nun ein paar Kleinigkeiten korrigiert. Die aktualisierte Version ist oben zu finden.

Änderungen:
1. Vereinfachung der Routine zur Referenzierung der geöffneten Dokumente (Dank an Tio und Dave Saunders);
2. Im Zieldokument werden bei Markierung der entsprechenden Option im Dialog nur die sichtbaren Ebenen des Qelldokuments (bei Bedarf) neu angelegt (und nicht mehr alle Ebenen des Quelldokuments).
3. Schönheitskorrektur in einer Funktion.


als Antwort auf: [#240626]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

27. Jul 2006, 21:12
Beitrag # 26 von 57
Beitrag ID: #241489
Bewertung:
(22631 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin für Deinen unermüdlichen Einsatz. Das Script läuft hervorragend ...

Gruß
Klaus


als Antwort auf: [#241308]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

27. Jul 2006, 22:10
Beitrag # 27 von 57
Beitrag ID: #241492
Bewertung:
(22627 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Klaus,

es gibt noch jemanden im Adobe Print Forum, der hat Probleme mit den Ebenen:

Zitat Habe nochmals 2 neue Dokumente mit jeweils 6 Seiten herangezogen.
Das Zieldokument hatte ursprünglich eine Ebenne "Standard" mit Bildern und Text.

Mein Quelldokument besitzt 4 Ebenen.
Die Ebene Bilder und Englisch sind sichtbar , die übrigen Ebenen unsichtbar und gesperrt.
Die sichtbaren Ebenen Bilder und Englisch werden im Zieldokument auf eine Ebene "Englisch" importiert.


Dieses Problem kann ich nicht nachvollziehen.
Leider liegt mir die problematische Datei (noch) nicht vor.

Klaus, werden bei Dir die Objekte im Zieldokument auch auf die richtigen Ebenen (wie bei mir) verteilt oder kommt es zu Fehlplatzierungen?


als Antwort auf: [#241489]
(Dieser Beitrag wurde von Martin Fischer am 27. Jul 2006, 22:11 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

28. Jul 2006, 10:44
Beitrag # 28 von 57
Beitrag ID: #241529
Bewertung:
(22599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

nein, auch ich hatte bisher keine Fehlplatzierungen. Alles wird richtig verteilt. Ich bin heute "on the Road" und werde das am Montag noch einmal intensiver prüfen ...

Gruß
Klaus


als Antwort auf: [#241492]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus Neubert
Beiträge gesamt:

28. Jul 2006, 11:16
Beitrag # 29 von 57
Beitrag ID: #241532
Bewertung:
(22588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe HDSler,
verzeiht einem Neuling, aber ich komme beim Kopieren dieses Scripts nicht zum Ziel.

Auf der Scripting-Seite ist ja beschrieben, wie man vorgehen soll, um die Scripts für sich verfügbar zu machen. Ich denke, das ich so vorgehe, aber kapiere offensichtlich irgend etwas nicht:

Beim Einkopieren in den Texteditor, ich habe sogar schon Word versucht, sind die Zeilenumbrüche weg.
So läuft das Script dann aber nicht.

Was mach ich falsch??

Gruß Klaus Neubert


als Antwort auf: [#239286]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

28. Jul 2006, 11:43
Beitrag # 30 von 57
Beitrag ID: #241538
Bewertung:
(22585 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Beim Einkopieren in den Texteditor, ich habe sogar schon Word versucht,
> sind die Zeilenumbrüche weg.

Da scheint irgendwas beim Kopieren in die Zwischenablage schief zu gehen.
Leider wissen wir bzgl. Deines Systems (OS, Browser, Texteditor) so gut wie nix. Deswegen sage ich dazu auch nur wenig.

Eventuell kannst Du den Thread aus Deinem Browser als Textdatei abspeichern.
Oder als PDF exportieren (z.B. auf Mac OSX) und aus dieser den Text als Text exportieren.
Jeweils den übrigen Text löschen (oder auskommentieren).


als Antwort auf: [#241532]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus Neubert
Beiträge gesamt:

28. Jul 2006, 12:13
Beitrag # 31 von 57
Beitrag ID: #241549
Bewertung:
(25459 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin,

danke für den Tipp mit der Zwischenablage.
Da waren die LFs drin.
Beim zweiten Versuch in WORD auch.

Die zu Recht angemahnte Basisinfo hab ich mir in die Signatur geschrieben.

Die nächst Frage kommt bestimmt bald.

Danke nochmals

mfg KPN


als Antwort auf: [#241538]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Klaus79
Beiträge gesamt: 341

31. Jul 2006, 11:01
Beitrag # 32 von 57
Beitrag ID: #241851
Bewertung:
(25429 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
hier der versprochene Report hinsichtlich der Ebenen:

1. Das Script erkennt nur die Musterseite A, d.h., wenn B-Musterseiten (oder C,D ...) im Dokument platziert sind oder eine Seite OHNE Musterseitenzuweisung, wird auch dann immer Musterseite A zugewiesen.

2. Wenn auf einer Dokumentseite Musterseitenelemente verändert oder gelöscht sind, werden trotzdem die ursprünglichen Elemente der Musterseite zugewiesen

3. Das hat dann insgesamt auch Auswirkungen für Ebenen, die auf Musterseiten angelegt sind
Das Ein- und Ausblenden nebst Kopieren der Ebenen erfolgt bei mir allerdings nach wie vor korrekt

Upps - das ist hard stuff, oder?

Gruß
Klaus


als Antwort auf: [#241549]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

31. Jul 2006, 11:29
Beitrag # 33 von 57
Beitrag ID: #241865
Bewertung:
(25425 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Klaus,

> 1. Das Script erkennt nur die Musterseite A,

Das Skript interessiert sich nicht für die Zuweisung der Musterseiten auf "Layout"seiten.
Es kopiert Elemente aus einem Quelldokument ins Zieldokument, sowohl von/auf "Layout"seiten also auch von/auf Musterseiten.

Es ignoriert auch die Namensgebung der Musterseiten, sondern kopiert die Elemente von der ersten Musterseite aus dem Quelldokument auf die erste Musterseite des Zieldokuments (usw. mit der zweiten Musterseite ...).

> 2. Wenn auf einer Dokumentseite Musterseitenelemente verändert oder gelöscht sind,
> werden trotzdem die ursprünglichen Elemente der Musterseite zugewiesen

Nein, das Skript selbst weist keine Musterseiten zu.
Allerdings werden beim notwendigen Einfügen von neuen Seiten diesen die "aktuellen" Musterseiten zugewiesen, wobei die "aktuelle" Musterseite die der letzten Layoutseite zugewiesene Musterseite ist.

Zum Abgleich der Musterseiten bedürfte es einer weiteren (komplexen) Routine.
Dies habe ich oben ausgeklammert. Mir ging es darum, daß die Objekte von Muster- und Layoutseiten aus einem Quelldokument ebenenspezifisch in ein Zieldokument kopiert werden.

Und nach Deinem Report scheint das ebenenspezifische Kopieren zu funktionieren.
Das reicht mir. ;-)

Danke für Deine Rückmeldung.


als Antwort auf: [#241851]
(Dieser Beitrag wurde von Martin Fischer am 31. Jul 2006, 11:31 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Apr 2009, 08:58
Beitrag # 34 von 57
Beitrag ID: #394051
Bewertung:
(24915 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Unten eine neue Version des Skripts zum Kopieren von Objekten aus einem Quelldokument in ein Zieldokument.

Die verknüpften Textrahmen im Quelldokument bekommen ein Kurzzeitgedächtnis (Label), das dafür sorgt, dass die Verknüpfung im Zieldokument wieder hergestellt wird.

Es handelt sich um eine Studie und nicht um ein ausgegorenes Skript.
Bitte nur an Kopien von Original-Dokumenten ausprobieren!

Probleme:
- Die Copy & Paste-Methode ist nicht benutzerfreundlich: sie ist zu ruckelig und dauert zu lange;
- bei gruppierten verknüpften Textrahmen rennt das Skript im Moment noch in einen Fehler und bricht ab;
- der Dialog sollte zur Einstellung weiterer Parameter ausgebaut werden.

Code
// CopyFromOneDoc2Another_LayerSensitiveWithDocSelection2.jsx   
//DESCRIPTION: Kopiert (alle) Objekte von einem Quelldokument in ein Zieldokument. Die Auswahl der zu kopierenden Objekte läßt sich auf die sichtbaren Ebenen beschränken.

// Verknüpfte Textrahmen im Quelldokument werden wieder zu verknüpften Textrahmen im Zieldokument

if (app.documents.length <2)
{
alert("Fehler!\rEs müssen mindestens zwei Dokumente geöffnet sein.");
exit();
}
var myCheck = myDisplayDialog()

var myOldPasteRemembersLayers = app.clipboardPreferences.pasteRemembersLayers;
app.clipboardPreferences.pasteRemembersLayers = true;

var QuellDoc = app.documents[ myCheck.source ].getElements()[0];
var ZielDoc = app.documents[ myCheck.target ].getElements()[0];

// Initialisierung Textverkettungen
var myStories = QuellDoc.stories;
var myFramesOfStory = new Array;
for ( var s = 0; s < myStories.length; s++ )
{
myFramesOfStory[s] = new Array;
for ( var f = 0; f < myStories.item(s).textContainers.length; f++ )
{
myStories.item(s).textContainers[f].label = s + ':' + f;
myFramesOfStory[s].push(f);
}
}

// Herstellung der Reihenfolge der Fenster
ZielDoc.windows[0].bringToFront();
QuellDoc.windows[0].bringToFront();

// Ebenen abgleichen
var myLayers = QuellDoc.layers;
for (oneLayer = myLayers.length-1; oneLayer >= 0; oneLayer--)
{
if (myCheck.visibleLayers == true)
{
if (myLayers[oneLayer].visible == true)
makeNewLayer(myLayers[oneLayer].name)
}
else
makeNewLayer(myLayers[oneLayer].name)
}

// Seitenumfang bei Textseiten abgleichen
if (ZielDoc.pages.length < QuellDoc.pages.length)
ZielDoc.documentPreferences.pagesPerDocument = QuellDoc.pages.length;

// Seitenumfang bei Musterseiten abgleichen
if (ZielDoc.masterSpreads.length < QuellDoc.masterSpreads.length)
{
var myM2add = QuellDoc.masterSpreads.length - ZielDoc.masterSpreads.length;
for (oneSpread = 0; oneSpread < myM2add; oneSpread++) ZielDoc.masterSpreads.add();
}

// Doppelseitwärts vorgehen auf Textseiten
if (myCheck.layoutPages == true)
for (oneSpread = 0; oneSpread < QuellDoc.spreads.length; oneSpread++)
theCopyPaste(QuellDoc.spreads[oneSpread])

// Doppelseitwärts vorgehen auf Musterseiten
if (myCheck.masterPages == true)
for (oneMSpread = 0; oneMSpread < QuellDoc.masterSpreads.length; oneMSpread++)
theCopyPaste(QuellDoc.masterSpreads[oneMSpread])
ZielDoc.windows[0].bringToFront();

// Neuverkettung der ursprünglich verketten Textrahmen aus dem Quelldokument
for ( var i = 0; i < myFramesOfStory.length; i++ )
{
for ( var k = 0; k < myFramesOfStory[i].length-1; k++ )
{
var myRefFrame = ZielDoc.textFrames.item(i + ':' + myFramesOfStory[i][k]);
if (myRefFrame.nextTextFrame == null)
{
var myNextFrame = ZielDoc.textFrames.item(i + ':' + myFramesOfStory[i][k+1]);
myRefFrame.nextTextFrame = myNextFrame;
}
myRefFrame.label = '';
}
if ( ZielDoc.textFrames.item(i + ':' + myFramesOfStory[i][myFramesOfStory[i].length-1]) != null )
ZielDoc.textFrames.item(i + ':' + myFramesOfStory[i][myFramesOfStory[i].length-1]).label = '';
}
// Entlabelung der Textrahmen des Quelldokuments.
QuellDoc.textFrames.everyItem().label = '';


// Zieldokument am Ende wieder in Vordergrund
ZielDoc.windows[0].bringToFront();
app.clipboardPreferences.pasteRemembersLayers = myOldPasteRemembersLayers;

alert("Fertig.");

// ----------------------------------------------------------------------
// Dialog
// ----------------------------------------------------------------------
function myDisplayDialog()
{
var myFieldWidth = 150;
var myDialog = app.dialogs.add({name:"Ebenen kopieren"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Quelldokument:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceFileDropdown = dropdowns.add({stringList:app.documents.everyItem().name, selectedIndex:0});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zieldokument:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var myTargetFileDropdown = dropdowns.add({stringList:app.documents.everyItem().name, selectedIndex:1});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myVisibleLayers = checkboxControls.add({staticLabel:"nur sichtbare Ebenen", checkedState: true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMainPages = checkboxControls.add({staticLabel:"aus Dokumentseiten kopieren", checkedState : true});
}
}

with(dialogRows.add()){
with(dialogColumns.add()){
var myMasterPages = checkboxControls.add({staticLabel:"aus Musterseiten kopieren", checkedState : false});
}
}
}
var theResult = myDialog.show();
if(theResult == true){
var myVL = myVisibleLayers.checkedState;
var myMainP = myMainPages.checkedState;
var myMasterP = myMasterPages.checkedState;
var mySourceDoc = mySourceFileDropdown.selectedIndex;
var myTargetDoc = myTargetFileDropdown.selectedIndex;
myDialog.destroy();
}
else{
myDialog.destroy();
exit();
}
//return [myVL, myMainP, myMasterP, mySourceDoc, myTargetDoc];
return{visibleLayers:myVL, layoutPages:myMainP, masterPages:myMasterP, source:mySourceDoc, target:myTargetDoc};
}

// ----------------------------------------------------------------------
// korrespondierende Ebenen im Zieldokument einblenden und entsperren
// ----------------------------------------------------------------------
function makeLayerEditable(aLayer)
{
aLayer.visible = true;
aLayer.locked = false;
}

// ----------------------------------------------------------------------
// stellt neue Ebene mit dem übergebenen Namen her (falls noch nicht vorhanden
// ----------------------------------------------------------------------
function makeNewLayer (aLayer)
{
try
{
ZielDoc.layers.add({name:aLayer})
}
catch(e){}
makeLayerEditable(ZielDoc.layers.item(aLayer))
}

// ----------------------------------------------------------------------
// Kopieren und Hin- und Herspringen
// ----------------------------------------------------------------------
function theCopyPaste(theSpread)
{
app.select(NothingEnum.nothing); // ggf. vorhandene Auswahl löschen
for (oneItem = 0; oneItem < theSpread.pageItems.length; oneItem++ )
{
myObject = theSpread.pageItems[oneItem];
if (myCheck[0] == true)
{
if (myObject.itemLayer.visible == true)
myObject.select(SelectionOptions.addTo)
}
else
{
myObject.select(SelectionOptions.addTo)
}

}
if (app.selection.length > 0)
{
app.copy();
ZielDoc.windows[0].bringToFront();
if (theSpread.constructor.name == "Spread")
{
app.layoutWindows[0].activeSpread = ZielDoc.spreads[theSpread.index];
}
else
{
app.layoutWindows[0].activeSpread = ZielDoc.masterSpreads[theSpread.index];
}
app.pasteInPlace();
QuellDoc.windows[0].bringToFront();
}
}


Gerald verfolgt in moveLayerForward.jsx einen alternativen Ansatz zu copy & paste, nämlich die Move-Methode. Da müssen noch verschiedene Vorkehrungen getroffen werden, damit es zuverlässig funktioniert, denn die 'falsche' Anlage der Seiten (Doppelseitig, neue Seitananordung zulassen) kann alles durcheinander bringen.
Aber im Hinblick auf Ruhe und Geschwindigkeit, dürfte diese Methode zukunftsweisender sein.

Eine weitere Diskussion zu diesem Thema findet sich in InDesign: Ebenen aus 5 Dokumenten in einem Dokument übereinander legen.


als Antwort auf: [#241865]
(Dieser Beitrag wurde von Gerald Singelmann am 11. Jun 2009, 11:09 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

3. Jun 2011, 07:28
Beitrag # 35 von 57
Beitrag ID: #472978
Bewertung:
(24040 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Letzthin bin ich auf der Suche nach einem Skript zum Kopieren von Ebenen aus einem Dokument in ein anderes über diesen Thread gestolpert.

Nebenbei fand ich auch eine tolle Plugin-Lösung für diesen Job, die ich hier nicht vorenthalten möchte: LayerGroups von DTP Tools:

Zitat von DTP Tools You can import layers including content from other documents. This is useful when you need to collaborate on content, send text for translation and re-import it.



als Antwort auf: [#394051]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Drienko
Beiträge gesamt: 4818

26. Jul 2011, 10:34
Beitrag # 36 von 57
Beitrag ID: #476831
Bewertung:
(23894 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Genau diesen Bedarf habe ich jetzt auch.

Ich muss in unseren Katalog verschiedene Produktblätter ändern,
damit dort der Text "Auslauftype" als Wasserzeichen erscheint.

Um es mir in der Zukunft einfacher zu machen,
habe ich in meiner Dokumenten-Vorlage zwei Ebenen (1× Deutsch + 1× Englisch) angelegt,
die je einen Textrahmen mit dem entsprechenden Text beinhalten.

So wie bekomme ich aber nun diese Ebenen schnell in die bestehenden Dokumenten rein?

Als alter QXP-User würde ich hier die Funktion "Anfügen" verwenden,
mit der man Objekte oder Eigenschaften von einem zu anderen Dokument übertragen kann.

Ich habe nun das Script "EbenenKopieren" ausprobiert, leider führt das nicht zu meinem gewünschten Ergebnis,
das sein soll:

- Ebenen mit Objekte 1:1 von Dok A (Quelle) nach Dok B (Ziel) kopieren.
- Einstellungen der Ebenen beibehalten.
- Reihenfolge der Ebenen beibehalten.

Kann das PlugIn "Layertools" dies leisten?

.


als Antwort auf: [#472978]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Drienko
Beiträge gesamt: 4818

26. Jul 2011, 11:02
Beitrag # 37 von 57
Beitrag ID: #476835
Bewertung:
(23877 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nachtrag

Habe mir die Trial der LayerGroups geholt und das PlugIn kann genau das,
was ich im Moment benötige.


.


als Antwort auf: [#476831]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

26. Jul 2011, 11:06
Beitrag # 38 von 57
Beitrag ID: #476836
Bewertung:
(23873 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bernd,

Antwort auf: Kann das PlugIn "Layertools" dies leisten?


Aus der Erinnerung würde ich behaupten: ja, das kann's!
(Es ist schon eine Weile her, dass ich es eingesetzt habe.)

Bei meinen Tests mit diesem Plugin war ich damals spontan so begeistert, dass ich jedes Herumbasteln an einem Skript zur Übertragung von Ebenen zwischen Dokumenten sofort eingestellt habe, weil mir seinerzeit mit der Lösung eines Problems zwei neue hinzukamen.

Um Dir eine geprüfte positive Antwort zu geben, müsste ich die Situation nachstellen und testen. Einfacher (und zielführender) dürfe es für Dich allerdings sein, wenn Du das mit einer Demo-Version von LayerTools selbst testest.

Ich bin überzeugt, dass sich so ein Test lohnt!


als Antwort auf: [#476831]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

26. Jul 2011, 11:09
Beitrag # 39 von 57
Beitrag ID: #476837
Bewertung:
(23873 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, Bernd, Du warst schneller. ;-)

Die Funktionalitäten von LayerTools und LayerGroups scheinen sich im Punkt des Ebenenaustauschs zwischen Dokumenten zu überschneiden.


als Antwort auf: [#476836]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Drienko
Beiträge gesamt: 4818

27. Jul 2011, 17:10
Beitrag # 40 von 57
Beitrag ID: #476975
Bewertung:
(23813 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Kurze Info zu dem PlugIn "LayerGroups".

Verwende ich das PlugIn wenn ich mein Buch geöffnet habe,
schmiert mit ID relativ oft bei dem Import von Ebnen ab.

Also wenn ihr das PlugIn verwendet, nicht in Verbindung mit einem Buch.

.


als Antwort auf: [#476837]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

27. Jul 2011, 17:32
Beitrag # 41 von 57
Beitrag ID: #476978
Bewertung:
(23817 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bernd,

danke für den Hinweis.

Möglicherweise kann der Entwickler Abhilfe schaffen, wenn Du ihm den Fehler und den Kontext, in dem er auftritt, meldest.


als Antwort auf: [#476975]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

j.richter@web.de
Beiträge gesamt: 2

22. Nov 2011, 09:01
Beitrag # 42 von 57
Beitrag ID: #484919
Bewertung:
(23460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

anstatt über spreads und item für item zu kopieren, hat es bei mir mit itemByRange() funktioniert.

Hier ein Code-Snippsel, welches den Ansatz verdeutlicht:

Code
  // Kopiert den Inhalt einer Ebene aus docMaster => docSlave 
// Voraussetzung docMaster und docSlave sind strukturell identisch

var ii = 0; // index of layer to copy

// alle Inhalte dieser Ebene im Slave löschen
var slavePageItems = docSlave.layers[ii].pageItems;
var s = slavePageItems.itemByRange(0, slavePageItems.length -1);
s.remove();

// alle Inhalte dieser Ebene im Master in die Zwischenablage
docMaster.windows[0].bringToFront();
app.select(NothingEnum.nothing); // ggf. vorhandene Auswahl löschen
var masterPageItems = docMaster.layers[ii].pageItems;
var m = masterPageItems.itemByRange(0, masterPageItems.length -1);
m.select(SelectionOptions.addTo);

// alle Inhalte der Zwischenablage in die identische Ebene im Slave
if (app.selection.length > 0) {
app.copy();
docSlave.windows[0].bringToFront();
app.layoutWindows[0].activeLayer = docSlave.layers[ii];
app.pasteInPlace();
} // end if



Ob das wirklich immer funktioniert?


als Antwort auf: [#394051]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

22. Nov 2011, 10:08
Beitrag # 43 von 57
Beitrag ID: #484927
Bewertung:
(23438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo J. Richter,

ich konnte den Code noch nicht testen.

Aber funktioniert bei Dir das Kopieren einer Auswahl von Seitenobjekten auf einer Ebene tatsächlich über Druckbogen hinweg?

Das würde mich sehr wundern. M.W. können nur Objekte auf *einem* Druckbogen *ausgewählt* werden – auch per Skript.

Die *Referenzierung* über itemByRange hingegen dürfte tatsächlich eleganter sein als das Durchlaufen einer Schleife.


als Antwort auf: [#484919]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

j.richter@web.de
Beiträge gesamt: 2

22. Nov 2011, 21:46
Beitrag # 44 von 57
Beitrag ID: #484972
Bewertung:
(23341 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für den Tipp. Das Kopieren über Spreadgrenzen hinweg geht tatsächlich nicht.

Nachdem ich mein Skript umgestellt hatte, musste ich dann letztendlich feststellen, dass Copy&Paste auf dem IndesignServer nicht funktioniert. Das hätte ich mir auch früher denken können (Stichwort window(!)-objekt).


Was auf beiden aber funktioniert ist duplicate().
Und - wunderbar - auch ein ganzes Layer vom doc1 nach doc2 mit einem Schwung.

Code
// Layer "Text static" von doc1 => doc2 kopieren 
var doc1 = app.documents.item("doc1.indd");
var doc2 = app.documents.item("doc2.indd");

var layerDoc1 = doc1.layers.item('Text static');
var layerDoc2 = doc2.layers.item('Text static');

layerDoc2.pageItems.everyItem().remove(); // layer in doc2 leeren
layerDoc1.pageItems.everyItem().duplicate(layerDoc2); // direkt in layer2 duplizieren



Abgrenzung: Verknüpfungen gehen verloren. Wenn verknüpfte Textboxen aber gruppiert sind, bleiben diese Verknüpfungen bestehen, weil die Gruppe als Ganzes ein pageItem ist und komplett kopiert wird.

Abrenzung: Die Anordung (Objektreihenfolge) ändert sich. Wenn vorher ein Bild vor dem Text war und der Text um das Bild geflossen ist, dann liegt das Bild nach dem duplicate() evtl. hinter dem Bild.


Falls jemand noch weitere Einschränkungen sieht: gerne hier posten


als Antwort auf: [#484927]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

kernspalt
Beiträge gesamt: 1

6. Jan 2012, 09:10
Beitrag # 45 von 57
Beitrag ID: #487421
Bewertung:
(23120 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin!

Ich habe Dein Skript ebenfalls ausprobiert und bewundert. Leider gibt es ein Problem: Textfelder werden nach dem Verschmelzen verkürzt dargestellt – die letzte Zeile passt nicht mehr hinein. Das selbe passiert auch mit dem PlugIn von DTP Tools.

Kannst Du Dir vorstellen, woran das liegen könnte?

Vielen Dank und viele Grüße!
Jens Oliver Robbers


als Antwort auf: [#394051]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

6. Jan 2012, 09:34
Beitrag # 46 von 57
Beitrag ID: #487424
Bewertung:
(12526 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jens,

Antwort auf: Kannst Du Dir vorstellen, woran das liegen könnte?


Das könnte mit Einstellungen im Absatzformat zusammenhängen.
Prüfe mal, ob sich die Einstellungen der entsprechenden Absatzformate im Quell- und im Zieldokument entsprechen.

Außerdem könnte es durch die Auflösung von verknüpften Textrahmen verursacht werden. Dabei kommt ggf. bei Absätzen, die von einem Textrahmen in einen weiteren übergelaufen sind, die auf unterschiedlichen Druckbogen stehen, im zweiten (abgetrennten) Teil ein Erstzeileneinzug zum Zuge.

Die Experimente an dem o.g. Skript habe ich nach Kenntnisnahme von dem Plugin Layer Groups, mit dem man Ebenen aus anderen Dokumenten ohne diese Einschränkungen importieren kann, eingestellt.

Zitat von DTP Tools You can import layers including content from other documents. This is useful when you need to collaborate on content, send text for translation and re-import it.



als Antwort auf: [#487421]
(Dieser Beitrag wurde von Martin Fischer am 6. Jan 2012, 09:36 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

6. Jan 2012, 09:40
Beitrag # 47 von 57
Beitrag ID: #487425
Bewertung:
(12516 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jens,

bitte entschuldige.
Ich habe zu oberflächlich und nicht bis zum Ende gelesen und zu früh mit dem Antworten angefangen.

Antwort auf: Das selbe passiert auch mit dem PlugIn von DTP Tools.


Jetzt erst fällt mir dieser entscheidende Satz auf.
Könntest Du mir zwei Testdokumente, bei welchen dieses Problem auftritt, zur Verfügung stellen?

Weitere Ursachen für das Phänomen könnten in unterschiedlichen Einstellungen bei Objektformaten oder bei allgemeinen Problemen beim Austausch von Objekten zwischen den Dokumenten liegen.


als Antwort auf: [#487421]
(Dieser Beitrag wurde von Martin Fischer am 6. Jan 2012, 09:41 geändert)

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

6. Jan 2012, 13:43
Beitrag # 48 von 57
Beitrag ID: #487441
Bewertung:
(12463 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Jens hat mir die angefragten Testdokumente zukommen lassen.

Die Ursache für den unerwarteten Textüberlauf im zusammengeführten Dokument ließ sich auf unterschiedliche Versionen der Frutiger-Schriftfamilie zurückführen.

Die Type 1-Version beansprucht in der Höhe offensichtlich mehr Raum als die OpenType-Version.

Nach globaler Zuweisung der OT-Version war der Übersatz überall verschwunden.


als Antwort auf: [#487425]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Franz aus Tirol
Beiträge gesamt: 1

3. Dez 2012, 21:55
Beitrag # 49 von 57
Beitrag ID: #505035
Bewertung:
(12031 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer!

Ihr Script hat mir soeben viel Freude bereitet und einiges an Zeit gespart.

Danke und schöne Grüße aus Tirol


als Antwort auf: [#208107]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

peterhenrich
Beiträge gesamt: 139

11. Apr 2013, 10:06
Beitrag # 50 von 57
Beitrag ID: #511077
Bewertung:
(11779 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Unten eine neue Version des Skripts zum Kopieren von Objekten aus einem Quelldokument in ein Zieldokument.

Die verknüpften Textrahmen im Quelldokument bekommen ein Kurzzeitgedächtnis (Label), das dafür sorgt, dass die Verknüpfung im Zieldokument wieder hergestellt wird.

Es handelt sich um eine Studie und nicht um ein ausgegorenes Skript.
Bitte nur an Kopien von Original-Dokumenten ausprobieren!

Probleme:
- Die Copy & Paste-Methode ist nicht benutzerfreundlich: sie ist zu ruckelig und dauert zu lange;
- bei gruppierten verknüpften Textrahmen rennt das Skript im Moment noch in einen Fehler und bricht ab;
- der Dialog sollte zur Einstellung weiterer Parameter ausgebaut werden.

...

Gerald verfolgt in moveLayerForward.jsx einen alternativen Ansatz zu copy & paste, nämlich die Move-Methode. Da müssen noch verschiedene Vorkehrungen getroffen werden, damit es zuverlässig funktioniert, denn die 'falsche' Anlage der Seiten (Doppelseitig, neue Seitananordung zulassen) kann alles durcheinander bringen.
Aber im Hinblick auf Ruhe und Geschwindigkeit, dürfte diese Methode zukunftsweisender sein.

Eine weitere Diskussion zu diesem Thema findet sich in InDesign: Ebenen aus 5 Dokumenten in einem Dokument übereinander legen.


Ich arbeite mich auch gerade in das Thema Kopieren ein. Grundlage hierfür ist das Buch von Gregor Fellenz. Dort heißt es an einer Stelle, dass das Kopieren durch die Zwischenablage nicht ungefährlich ist, da auch andere Programme diese modifizieren können. Ist z. B. bei einen Passwortverwaltungsprogramm bei mir der Fall.

Vorstehendes Script arbeitet mit der Zwischenablage bzw. das alternativ vorgeschlagene mit dem Move-Befehl.

Ich hingegen möchte in einem Dokument ein Rectangle einfach nur duplizieren und in vielleicht veränderten Ausmaßen auf einer anderen Seite mit vielleicht veränderten Abmessungen neu positionieren. Farbe, Randstil, Umflusseigenschaften, Effekte etc. sollen alle erhalten bleiben.

Nun meine Frage: Geht das auch ohne Zwischenablage? Wie lautet denn der Befehl dazu - es muss doch so etwas wie duplicate etc. geben. Oder ist die Lösung supertrivial und ich sehe diese nur nicht?


als Antwort auf: [#394051]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Apr 2013, 11:57
Beitrag # 51 von 57
Beitrag ID: #511087
Bewertung:
(11741 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

Antwort auf: Ich arbeite mich auch gerade in das Thema Kopieren ein. Grundlage hierfür ist das Buch von Gregor Fellenz. Dort heißt es an einer Stelle, dass das Kopieren durch die Zwischenablage nicht ungefährlich ist, da auch andere Programme diese modifizieren können.


Ich stimme mit Dir (und mit Gregor) überein: das Vorgehen über die Zwischenablage sollte nicht die Regel sein, sondern erst dann ins Auge gefasst werden, wenn sich bestimmte Aufgaben anderweitig nicht oder nur mit Risiken/Umständlichkeiten erledigen lassen, welche die Risiken/Umständlichkeiten des Vorgehens über die Zwischenablage übersteigen.

Mir ist nicht mehr vor Augen, wie es in diesem Thread zu der Copy/Paste-Methode kam. Möglicherweise war das nur eine Studie. Dunkel erinnere ich mich daran, dass es beim Duplizieren von Seiten eines Dokuments in ein anderes Probleme im Zusammenhang mit dem Stand der Objekte bei doppelseitigen Dokumenten gab. Unter bestimmten Bedingungen gab es horizontale Verschiebungen der Objekte im Zieldokument.

Klar ist der duplicate()-Befehl die erste Wahl.
Zum Verschieben gibt's den move()-Befehl.


als Antwort auf: [#511077]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Uwe Laubender
Beiträge gesamt: 5316

11. Apr 2013, 16:08
Beitrag # 52 von 57
Beitrag ID: #511112
Bewertung:
(11703 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!

Und manchmal hilft nur die duplicate()-Methode zusammen mit der move()-Methode.

Beispiel:

Versuch mal einen verankerten Rahmen zu kopieren und auf der gleichen Stelle wieder einzufügen. Das geht mit Bordmitteln überhaupt nicht.


als Antwort auf: [#511087]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Be.eM
Beiträge gesamt: 3352

11. Apr 2013, 18:25
Beitrag # 53 von 57
Beitrag ID: #511119
Bewertung:
(11670 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Uwe Laubender ] Versuch mal einen verankerten Rahmen zu kopieren und auf der gleichen Stelle wieder einzufügen. Das geht mit Bordmitteln überhaupt nicht.


Hallo Uwe,

an der absolut gleichen stelle oder der relativ gleichen Stelle? Letzteres geht, wenn man für die Verankerungsposition (Verankertes Objekt --> Optionen) einen Objektstil definiert und anwendet. Mache ich hier mit meinen Manuals (Warndreieck daneben, Bildchen drüber rechtsbündig, Bildchen drüber linksbündig etc.) ständig. Es geht übrigens auch, wenn man nicht den Rahmen, sondern den Anker (schließt den Rahmen automatisch ein) kopiert.

Grüße,
Bernd


als Antwort auf: [#511112]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Uwe Laubender
Beiträge gesamt: 5316

11. Apr 2013, 21:07
Beitrag # 54 von 57
Beitrag ID: #511125
Bewertung:
(11621 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Bernd!

Nein. Ich meinte einfach:

Verankertes Objekt anwählen (also z.B. ein Rechteck, das in einen Textrahmen kopiert wurde), dieses dann kopieren und dann "An Originalposition einfügen".
Das gelingt nicht. Das Duplikat landet immer am inneren Seitenrand.

Per Script geht's auch nicht nur mit einer Anweisung:

Code
app.selection[0].duplicate(); 


Du musst, um das korrekt hinzubekommen, immer auch eine move()-Anweisung geben.
Z.B. so:

Code
var sel = app.selection[0]; 

var x = sel.geometricBounds[1];
var y = sel.geometricBounds[0];

var dup = sel.duplicate();

var xd = dup.geometricBounds[1];
var yd = dup.geometricBounds[0];

dup.move(undefined,[x-xd,y-yd]);



als Antwort auf: [#511119]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Be.eM
Beiträge gesamt: 3352

11. Apr 2013, 22:06
Beitrag # 55 von 57
Beitrag ID: #511130
Bewertung:
(11593 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Uwe Laubender ] Hallo, Bernd!

Nein. Ich meinte einfach:

Verankertes Objekt anwählen (also z.B. ein Rechteck, das in einen Textrahmen kopiert wurde), dieses dann kopieren und dann "An Originalposition einfügen".
Das gelingt nicht. Das Duplikat landet immer am inneren Seitenrand.


Ach so. Aber ehrlich gesagt verstehe ich den Sinn dieser Anforderung nicht. Ein verankertes Objekt hat seine Position ja eigentlich bezogen auf den Anker, nicht auf die Seite (selbst wenn das dann mit komischen Positionsparametern realisierbar ist). Sonst würde man das Ding ja nicht verankern, sondern statisch auf die Seite nageln. Und jetzt kopierst du ein explizit verankertes Objekt (was dabei seinen Anker verliert, also erstmal den Status ändert) und setzt es "frei" (also ohne Einfügemarke im Text) wieder auf eine Seite.

Langer Rede kurzer Sinn… warum? In welchem Kontext ist das sinnvoll?

Grüße,
Bernd


als Antwort auf: [#511125]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Uwe Laubender
Beiträge gesamt: 5316

12. Apr 2013, 07:11
Beitrag # 56 von 57
Beitrag ID: #511135
Bewertung:
(11542 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen, Bernd!

Berechtigte Frage.

1. Hat mich schon immer geärgert, dass es Adobe nicht hinbekommt mit Bordmitteln ein simples UI-Feature wie "An Originalposition einfügen" für alle Gelegenheiten korrekt zu implementieren.

Was denken die sich dabei eigentlich?
Das Problem besteht seitdem es verankerte Objekte gibt.

2. Praktische Anwendung im Falle von verankerten Bildern, die ganz oder teilweise eine Lackfarbe erhalten sollen. Zusammen mit anderen Objekten auf den Seiten. Die Lackfarbenobjekte sollen in einer eigenen Ebene stehen.

Es gibt bestimmt noch mehr Anwendungen bei denen es wichtig wäre, dass das "An Originalposition einfügen" mit kopierten verankerten Objekten funktioniert…


als Antwort auf: [#511130]

Ebenen aus einem vorhandenen Dokument in ein neues Dokument importieren

Be.eM
Beiträge gesamt: 3352

12. Apr 2013, 11:34
Beitrag # 57 von 57
Beitrag ID: #511161
Bewertung:
(11489 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Uwe Laubender ] Was denken die sich dabei eigentlich?
Das Problem besteht seitdem es verankerte Objekte gibt.

[…]

Es gibt bestimmt noch mehr Anwendungen bei denen es wichtig wäre, dass das "An Originalposition einfügen" mit kopierten verankerten Objekten funktioniert…


Hallo Uwe,

das mit der Ebene (für Druckausgabe) kann ich nachvollziehen. Den Rest allerdings immer noch nicht, denn es widerspricht dem Konzept des verankerten Objekts. Ein solches Objekt hat bei seiner "Geburt" einen ganz klaren Lebenszweck. "Halte dich an deinen Meister namens Anker, und egal wo dieser ist, nimm die korrekte relative Position hierzu ein".

Und du tust jetzt etwas grausames, du nimmst diesem Objekt seinen Meister namens Anker, entreißt es seiner zweckbestimmenden Umgebung, platzierst es in einer leeren Wüste namens "neues Dokument" und erwartest, dass es seinem Auftrag unbeirrt nachkommt? Ohne ihm das Einzige zu geben, was es wirklich braucht, nämlich den Anker? Dafür gibt's doch die Möglichkeit, Objekte grundsätzlich frei auf der Seite zu platzieren?

Grüße,
Bernd


als Antwort auf: [#511135]
X