[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Methode duplicate() mit verschachtelten Elementen

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

Methode duplicate() mit verschachtelten Elementen

Uwe Laubender
Beiträge gesamt: 5319

1. Aug 2022, 18:00
Beitrag # 1 von 3
Bewertung:
(3214 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

dies hier nur als erweiterte Notiz ein Problem mit der Methode duplicate() betreffend.
Viele von uns Skriptern gingen davon aus, dass pageItem.duplicate() ohne Argumente immer ein Duplikat des Elements in der gleichen Position erstellt, wenn das Elterelement des Duplikats keiner besonderen Transformation unterzogen ist. Und wenn der parent des Elterelements der Druckbogen ist ( spread ).

Das ändert sich schlagartig, wenn das Elterelement in einer verschachtelten Struktur existiert und der Druckbogen nicht der erste im Dokument ist.

Kleines Beispiel:
Dokument mit zunächst einer Seite, kein Doppelseiten-Dokument ( facing-pages off ). Auf der Seite ein einfacher Textrahmen mit einer Tabelle, deren erste Zelle eine Grafikzelle mit einem Bild beherbergt.

Nun duplizieren wir diese Seite zwei, dreimal.

Anschließend lassen wir folgendes Skript laufen, das den Inhalt der Grafikzelle aller dieser Tabellen dupliziert:

Code
var doc = app.documents[0]; 
var textFramesArray = doc.pages.everyItem().textFrames.everyItem().getElements();

for( var n=0; n<textFramesArray.length; n++ )
{
textFramesArray[n].tables[0].cells[0].pageItems[0].duplicate();
};


Das Ergebnis zeigt, dass duplicate() mit Ausnahme des ersten Druckbogens das duplizierte Element nicht an die gleiche Position dupliziert. Hier gezeigt in drei Screenshots für mein dreiseitiges Testdokument:

https://www.dropbox.com/s/i149kwr8reyfqra/DuplicatedImageSelected-Spread-1.PNG?dl=0

https://www.dropbox.com/s/mroje82g8z4zidu/DuplicatedImageSelected-Spread-2.PNG?dl=0

https://www.dropbox.com/s/mroje82g8z4zidu/DuplicatedImageSelected-Spread-2.PNG?dl=0

Ihr könnt das Testdokument im Zustand vor der Skriptausführung von meiner Dropbox laden:
https://www.dropbox.com/s/zifmxnqfwpx098h/SampleTableWithGraphicCell-2022.indd?dl=1

Anhand der einzelnen Screenshots kann man gut sehen, dass das Duplikat immer weiter vom Original wegwandert.
Und zwar je weiter der Druckbogen vom ersten Druckbogen entfernt ist.

Um das Problem nun geradezubiegen fällt mir nur die Methode move() ein nachdem das Duplikat erstellt wurde, denn aucn folgender Code schafft keine Abhilfe, obwohl ich explizit das zweite Argument "by" benutze mit einem Array für x und y mit den jeweiligen Werten 0 . Da dürfte sich also gar nichts bewegen in Bezug auf's Original. Bei unserem Beispiel ist das gerade nicht der Fall, wenn das zu duplizierende Element nicht auf dem ersten Druckbogen des Dokuments liegt!

Code
var doc = app.documents[0]; 
var textFramesArray = doc.pages.everyItem().textFrames.everyItem().getElements();

for( var n=0; n<textFramesArray.length; n++ )
{
textFramesArray[n].tables[0].cells[0].pageItems[0].duplicate( undefined , [0,0] );
};


Wie setze ich move() ein?

Ich schnappe mir den Wert der Eigenschaft anchor eines bestimmten Pfadpunktes des zu duplizierenden Elements, der ja den [x,y]-Wert des Punktes widergibt. Mache das auch beim duplizierten Element und bewege mit dem zweiten Argument von move(), dem "by"-Argument das duplizierte Element um die Differenz der beiden x,y-Wertpaare zurück.

Wie gezeigt in diesem Beitrag, der der Anlass zu diesem hier war:

https://www.hilfdirselbst.ch/...i?post=584045#584045

Ergänzungen zum Thema sind gerne willkommen.
Danke!
X

Methode duplicate() mit verschachtelten Elementen

Uwe Laubender
Beiträge gesamt: 5319

1. Aug 2022, 18:33
Beitrag # 2 von 3
Beitrag ID: #584051
Bewertung:
(3199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier noch mal die korrigierten Links zu den Screenshots:

https://www.dropbox.com/...ed-Spread-1.PNG?dl=0

https://www.dropbox.com/...ed-Spread-2.PNG?dl=0

https://www.dropbox.com/...ed-Spread-3.PNG?dl=0

Da war ich beim Posten zu schnell.

Auch als Link nun die Testdatei:

https://www.dropbox.com/...cCell-2022.indd?dl=1


als Antwort auf: [#584050]

Methode duplicate() mit verschachtelten Elementen

Uwe Laubender
Beiträge gesamt: 5319

2. Aug 2022, 10:15
Beitrag # 3 von 3
Beitrag ID: #584055
Bewertung:
(3106 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Was übrigens funktioniert mit meiner Testdatei ohne dass das Duplikat verschoben wird, ist das Arbeiten mit einer echten Auswahl über select(), das Kopieren über app.copy() und das Einfügen über app.pasteInPlace().

Code
var doc = app.documents[0]; 

var textFramesArray = doc.pages.everyItem().textFrames.everyItem().getElements();

for( var n=0; n<textFramesArray.length; n++ )
{
app.select( textFramesArray[n].tables[0].cells[0].pageItems[0] );
app.copy();
app.pasteInPlace();
app.select( null );
};



als Antwort auf: [#584050]

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!