Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Ein Bild mehrfach verankern und skalieren

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

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

28. Apr 2020, 08:03
Beitrag # 1 von 14
Bewertung:
(8302 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Forumsmitglieder!

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.

Danke euch allen.
LG
faxinger666
X

Ein Bild mehrfach verankern und skalieren

TMA
Beiträge gesamt: 399

29. Apr 2020, 07:46
Beitrag # 2 von 14
Beitrag ID: #575063
Bewertung:
(8231 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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

Gruß
TMA


als Antwort auf: [#575038]

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

29. Apr 2020, 07:52
Beitrag # 3 von 14
Beitrag ID: #575064
Bewertung:
(8226 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TMA,

danke für deine Antwort.

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


als Antwort auf: [#575063]
(Dieser Beitrag wurde von faxinger666 am 29. Apr 2020, 07:53 geändert)

Ein Bild mehrfach verankern und skalieren

TMA
Beiträge gesamt: 399

29. Apr 2020, 08:13
Beitrag # 4 von 14
Beitrag ID: #575065
Bewertung:
(8218 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.

Gruß
TMA


als Antwort auf: [#575064]

Ein Bild mehrfach verankern und skalieren

Martin Fischer
  
Beiträge gesamt: 12779

29. Apr 2020, 08:45
Beitrag # 5 von 14
Beitrag ID: #575066
Bewertung:
(8211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielleicht einen Prototypen des mehrfach zu verankerten Rahmens erstellen und in die Zwischenablage kopieren.

Dann GREP-Suche nach den Stellen, wo er eingefügt werden soll (z.B. 1. Zeichen "^." + Absatzformat).

GREP-Ersetzen: ^c$0
(Inhalt der Zwischenablage, formatiert + Fundstelle)


als Antwort auf: [#575065]
(Dieser Beitrag wurde von Martin Fischer am 29. Apr 2020, 08:46 geändert)

Ein Bild mehrfach verankern und skalieren

WernerPerplies
Beiträge gesamt: 2760

29. Apr 2020, 19:54
Beitrag # 6 von 14
Beitrag ID: #575083
Bewertung:
(8157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Faxinger,

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.

Eines von vielen Moglichkeiten meines Skriptes
WpsCreateAnchoredFrames


als Antwort auf: [#575038]

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

29. Apr 2020, 21:12
Beitrag # 7 von 14
Beitrag ID: #575085
Bewertung:
(8148 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für deine Antwort.

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.

LG
faxinger666


als Antwort auf: [#575066]

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

29. Apr 2020, 21:16
Beitrag # 8 von 14
Beitrag ID: #575086
Bewertung:
(8147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

danke für deine Antwort. Deine Herangehensweise finde ich gut.

Was ich dabei nicht verstehe: Was meinst du mit temporären Rahmen?

Ich habe mein Bild-Objekt auf eine eigens erzeugte Hilfsebene platziert, die nach Durchführung des Skriptes gelöscht wird.

Zum Rahmen duplizieren: Die Frage ist wie oft muss ich duplizieren? Das will ich keinesfalls manuell machen müssen.

LG
faxinger666


als Antwort auf: [#575083]

Ein Bild mehrfach verankern und skalieren

WernerPerplies
Beiträge gesamt: 2760

29. Apr 2020, 21:57
Beitrag # 9 von 14
Beitrag ID: #575087
Bewertung:
(8138 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

Zitat Was ich dabei nicht verstehe: Was meinst du mit temporären Rahmen?

Das ist der Rahmen, den Du als Quelle für das Duplikat verwendest.
Zitat Ich habe mein Bild-Objekt auf eine eigens erzeugte Hilfsebene platziert, die nach Durchführung des Skriptes gelöscht wird.

genau, das wäre mein temporärer Rahmen.

Zitat Die Frage ist wie oft muss ich duplizieren?

Na ja, so viel wie brauchst.

Zitat Das will ich keinesfalls manuell machen müssen.


Wir sind doch hier im Skriptforum, oder?

Also, Du machst das in etwa so:

Code
var number =  ???; 
var rahmenDuplikat = null;

for (var i = 0; i < number; i++){
rahmenDuplikat = DeinBildObjekt.duplicate(IrgendEinSeitenObjekt);
// Das Ziel must Du in der Schleife anpassen.
rahmenDuplikat.anchoredObjectSettings.insertAnchoredObject(Ziel, z. B. AnchorPosition.INLINE_POSITION);

}



als Antwort auf: [#575086]

Ein Bild mehrfach verankern und skalieren

Uwe Laubender
Beiträge gesamt: 5316

30. Apr 2020, 23:44
Beitrag # 10 von 14
Beitrag ID: #575118
Bewertung:
(8034 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.

Code
// First select the text frame with the object style. 
// Then add a graphic frame with the image to the selection.

var doc = app.documents[0];

var masterTextFrame = app.selection[0];
var objectStyle = masterTextFrame.appliedObjectStyle;

var masterGraphicFrame = app.selection[1];

var allStories = doc.stories.everyItem().getElements();

for( var n=0; n<allStories.length; n++ )
{
var textContainersArray = allStories[n].textContainers ;

for( var t=0; t<textContainersArray.length; t++ )
{
if( textContainersArray[t].constructor.name == "TextPath" ){ continue };

if( textContainersArray[t].appliedObjectStyle == objectStyle )
{
var dup = masterGraphicFrame.duplicate();

// My assumption:
// The graphic frame should be anchored in the first insertion point of the found text frame
// With INLINE_POSITION

dup.anchoredObjectSettings.insertAnchoredObject
(
textContainersArray[t].insertionPoints[0] ,
AnchorPosition.INLINE_POSITION
);

// ALSO:
// Change size or anchor position as well
};
}
};



als Antwort auf: [#575086]
(Dieser Beitrag wurde von Uwe Laubender am 30. Apr 2020, 23:45 geändert)

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

3. Mai 2020, 20:36
Beitrag # 11 von 14
Beitrag ID: #575144
Bewertung:
(7862 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner, hallo Uwe,

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:

Code
var _dok = app.activeDocument; 
var kreuz = _dok.pages.item(0).place(File("~/Desktop/kreuz.ai"), [0, 0])[0];

for (var a = 0; a < _dok.textFrames.length; a++) {
var txt = _dok.textFrames[a];
var _breite = txt.geometricBounds[3] - txt.geometricBounds[1];
var _hoehe = txt.characters[0].pointSize;
if ((txt.appliedObjectStyle.name == 'Streichung') ||
(txt.appliedObjectStyle.name == 'Streichung_gross')){
var dupliziertesBild = kreuz.parent.duplicate();
dupliziertesBild.anchoredObjectSettings.insertAnchoredObject
(txt.insertionPoints[0],

AnchorPosition.ANCHORED,
AnchorPoint.TOP_LEFT_ANCHOR,
AnchoredRelativeTo.TEXT_FRAME,
HorizontalAlignment.LEFT_ALIGN,
VerticallyRelativeTo.LINE_ASCENT
)
dupliziertesBild.anchoredObjectSettings.anchorXoffset = 0;
dupliziertesBild.anchoredObjectSettings.anchorYoffset = 0;
dupliziertesBild.absoluteHorizontalScale = _breite*2,5;
dupliziertesBild.absoluteVerticalScale = _hoehe*2,5;

}
};


Danke
LG faxinger666


als Antwort auf: [#575118]
(Dieser Beitrag wurde von faxinger666 am 3. Mai 2020, 20:54 geändert)

Ein Bild mehrfach verankern und skalieren

WernerPerplies
Beiträge gesamt: 2760

4. Mai 2020, 05:27
Beitrag # 12 von 14
Beitrag ID: #575146
Bewertung:
(7790 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Faxinger,

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


als Antwort auf: [#575144]

Ein Bild mehrfach verankern und skalieren

faxinger666
Beiträge gesamt: 167

4. Mai 2020, 07:57
Beitrag # 13 von 14
Beitrag ID: #575147
Bewertung:
(7753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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. :-)

Danke nochmals für alles. LG
faxinger666


als Antwort auf: [#575146]

Ein Bild mehrfach verankern und skalieren

WernerPerplies
Beiträge gesamt: 2760

4. Mai 2020, 08:35
Beitrag # 14 von 14
Beitrag ID: #575148
Bewertung:
(7723 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Faxinger,

Zitat Danke Werner für deine Antwort. Na du bist ja ein richtiger Frühaufsteher :-)

Na ja, Du weißt doch, ein Selbstständiger arbeitet (fast) ständig! :-)
Zitat 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?

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:
Code
alter Wert: 
app.selection[0].anchoredObjectSettings.anchorPoint -> BOTTOM_RIGHT_ANCHOR
neuer Wert:
app.selection[0].anchoredObjectSettings.anchorPoint = AnchorPoint.TOP_LEFT_ANCHOR;

Der Rahmen wird sichtbar verschoben.


als Antwort auf: [#575147]
X