Ich bitte um Hilfe bei der Umsetzung eines Skriptes, mit dem ein Bild in mehreren Textrahmen verankert werden soll und dann auch noch skaliert werden soll, abhängig von der verwendeten Schriftgröße des jeweiligen Absatzes (ist immer nur einer pro Textrahmen).
Was ich bis jetzt schaffe: Das Bild wird auf einer neu erstellten Ebene per platzieren geladen und in der variablen bild gespeichert.
Woran ich bisher scheiterte ist:
Ich fragte alle Textrahmen nach deren Objektformat ab und wollte testhalber einen Text hinzufügen.
Das Problem dabei: Wenn die Textrahmen mit anderen Elementen gruppiert sind funktioniert die Abfrage scheinbar nicht.
Was ich eigentlich wissen will:
Wie kann ich ein Objekt mehrmals in Textrahmen (insertionPoints[0]) verankern. Mit copyTo würde es ja nur an die betreffende Stelle kopiert aber nicht verankert.
Und wie skaliere ich das jeweilige Bild. Ich kann ja erst skalieren nachdem ich einen Bezug zum Absatz des jeweiligen Textrahmens hergestellt habe, oder?
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt und hoffe auf zahlreiche Tipps.
Moin faxinger666, ich habe das zwar noch nicht gemacht aber folgendes bzgl. Anker gefunden: Es gibt 'insertAnchoredObject()'. Vielleicht hilft dir dieses hier weiter: https://www.indesignjs.de/...d1e383930__d1e384388
Insert anchored Object kenne ich. Mir geht es aber darum ein Bild mehrfach zu verankern. D.H. Das Bild X wird im ersten gefundenen Textrahmen verankert, das Bild X wird im zweiten gefundenen Textrahmen verankert usw. Die Frage ist wie man das umsetzt. Kann man mit CopyTo gleichzeitig verankern?
Oder gäbe es da einen anderen Workaround?
LG faxinger666
(Dieser Beitrag wurde von faxinger666 am 29. Apr 2020, 07:53 geändert)
Da ich das noch nie gemacht habe, kann ich dir da leider nicht weiterhelfen. Ich gehe aber mal davon aus, dass man ein Object so oft man möchte irgendwo verankern kann. Also wenn man eine Schleife durch die textFrames macht, sollte die function 'insertAnchoredObject()' doch jedesmal ausführbar sein.
also ich mache das so: 1. temporären Rahmen mit Bild erzeugen, 2. Rahmen duplizieren, 3. Duplizierten Rahmen verankern. Zum Schluss: temporären Rahmen löschen.
Ich habs voerst mal mit "meiner" Methode versucht -> Alle Textrahmen mit dem gewünschten Objektformat durchlaufen und Bild verankern.
Ergebnis: das Bild wurde nur einmal verankert. :-( Problem dabei auch: Textrahmen in Gruppen werden nicht durchsucht.
Der nächste Versuch wird dein Vorschlag sein. Was mit dabei noch nicht so gefällt ist, dass ich vorher das Bild händisch in die Zwischenablage kopieren muss.
Vielleicht gibt es da noch einen eleganteren Workaround? Das Bild-Objekt ist ja schon in einer Variablen gespeichert.
Hallo faxinger666, was die Auffindbarkeit von Textrahmen angeht, die mit einem bestimmten Objektformat ausgestattet sind:
Ermittele alle Stories des Dokuments. Jede Story hat einen textContainers-Array, in dem Textrahmen oder TextPfade gespeichert sind.
Du prüfst, ob ein textContainer ein Textrahmen ist und mit dem gewünschten Objektformat ausgestattet ist. Dort verankerst Du ein Duplikat des Grafikrahmens mit der Abbildung.
***** Mit herzlichem Gruß, Uwe Laubender
(Dieser Beitrag wurde von Uwe Laubender am 30. Apr 2020, 23:45 geändert)
recht herzlichen Dank für eure aufschlussreichen Antworten.
Ich bin mit dem Skript soweti auch durch und es macht was es soll bis auf eine Ausnahme: Ich schaffe es nicht den Bezugspunkt für das verankerte Objekt (AnchorPoint) zu ändern. Egal was ich eingebe er ändert sich nicht.
Habt ihr dazu eine Idee?
Hier mal das Skript:
Danke LG faxinger666
(Dieser Beitrag wurde von faxinger666 am 3. Mai 2020, 20:54 geändert)
ohne jetzt Deinen Programmcode analysiert zu haben, empfehle ich Dir es Dir manuell einen Musterrahmen zu erstellen, der alle von Dir gewünschten Eigenschaften hat.
Diesen verwendest Du dann als Orginal für das Duplikat.
Aus dem Orginal liest Du dann alle Ankereigenschaften aus und weist sie anschließend nach der Verankerung dem verankerten Rahmen zu.
Übrigens, dass was Du da programmierst und noch viel mehr macht mein Skript WpsCreateAnchoredFrames
Danke Werner für deine Antwort. Na du bist ja ein richtiger Frühaufsteher :-)
Deinen Tipp mit dem Mustertextrahmen verstehe ich schon, aber es muss doch auch möglich sein nachträglich per Skript den Ankerpunkt zu ändern oder etwa nicht?
Danke auch für deinen Hinweis auf dein Skript. Mir ging es ja darum, das selber zu programmieren und auch genau auf meine Bedürfnisse anzupassen. Mehr muss es ja auch gar nicht können. Niemals würde ich mich mit dir da messen wollen :-) Meine Kenntnisse sind im Vorschul-Bereich, deine Kenntnisse Hochschule. :-)
Na ja, Du weißt doch, ein Selbstständiger arbeitet (fast) ständig! :-)
Bestimmt, aber ich gehe einen anderen Weg, weil ich wirklich alle Anpassungen ermöglichen wollte und mein Anwender die Position überprüfen kann, bevor 10.000 Anker produziert wurden. :-)
Aber soweit ich mich erinnere, war es wichtig, dass die Position nach der Verankerung bestimmt werden muss.
Ich denke mal, dass beim Verankern immer die voreingestellten Werte gelten.
Aber es ist ziemlich lange her, dass ich diesen Teil des Skriptes programmiert habe.
Auf jeden Fall habe ich gerade mal in der JavaScript-Konsole Dein Anliegen ausprobiert und Folgendes funktioniert bei mir: