[GastForen Programme Print/Bildbearbeitung Adobe InDesign Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

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

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

silo
Beiträge gesamt: 29

17. Jul 2008, 17:48
Beitrag # 1 von 8
Bewertung:
(2115 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin mal wieder in einer Situation in der ich nicht mehr weiter weiss, und hoffe mir kann jemand einen goldenen Tip geben.
Ich möchte gerne einen Text aus einer XML Datei importieren in dem auch auf Bilder verlinkt wird. Das funktioniert soweit wunderbar.
Im nächsten schritt möchte ich per Skript diese Bilder manipulieren (zunächst nur einmal die geometricBounds auslesen).

Dazu frage ich an das XML-Eltern-Element an wieviele Kinder es hat. Da wird mir auch die korrekte anzahl angezeigt.
Als nächstes lese ich das Image-Objekt aus, und schaue ob es sich tatsächlich um ein Image Objekt handelt. Das tut es auch, die Anzahl ist gleich 1 und ich bekomme auch ein (anscheinend leeres) Objekt zurück.

Versuche ich jedoch auf eine Eigenschaft zuzugreifen, so erscheint ein Fehler das das Objekt ungültig sei.


Ich habe folgende Testumgebung.
XML-Datei:
Code
<?xml version="1.0" encoding="iso-8859-1" ?><p>Hier steht normaler Text 
<image><img href="file://img/01.jpg" />
<img_description>Große Biene</img_description></image></p>


Nach dem Import sieht das ganze wie im Bild gezeigt wird aus.
http://img3.imagebanana.com/...lderimport.error.png

Wenn ich folgendes Skript laufen lassen, bekomme ich die Ausgabe die in den Kommentaren dahinter steht:
Code
var imageElement = app.documents[0].xmlElements[0].xmlElements.item("image"); 

alert(imageElement.images.count()); // 1 !!
alert(imageElement.images.firstItem()); // [object Image]
// auch mit images[0], images[-1], images.anyItem() ausprobiert
alert(imageElement.images.firstItem().geometricBounds); // Fehler: Objekt ist ungültig

// zum testen mal ausprobiert...
alert(imageElement.images[773]); // [object Image]
alert(imageElement.images[773].geometricBounds); // Fehler: Objekt ist ungültig



Kann mir bitte jemand einen Tip geben?
Vielen Dank im voraus
Silo
X

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

Martin Fischer
  
Beiträge gesamt: 12714

17. Jul 2008, 18:08
Beitrag # 2 von 8
Beitrag ID: #359263
Bewertung:
(2102 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Silo,

ist die Datei zum Zeitpunkt des Skriptaufrufs platziert und das entsprechende Bild sichtbar?

Wenn nicht sichtbar, dann kann es auch keine geometricBounds haben.
Wenn sichtbar, dann seltsam.

Versuch mit alert(imageElement.images[0].parent.geometicBounds);?


als Antwort auf: [#359258]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

silo
Beiträge gesamt: 29

17. Jul 2008, 18:54
Beitrag # 3 von 8
Beitrag ID: #359270
Bewertung:
(2087 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
danke für die schnelle Antwort :)

Also das Bild ist platziert und sichtbar, wie es in dem Screenshot zu sehen ist.

Das mit images[0].parent.geometricBounds resultiert in dem selben Fehler, da auf images[0].parent genauso wie auf images[0].geometricBounds nicht zugegriffen werden kann, da images[0] irgendwie ein leeres Objekt zu seinen scheint; und das obwohl es als [object Image] angezeigt wird. Aber das hat ja auch nicht unbedingt etwas zu sagen, da ein images[133] auch als [object Image] angezeigt wird obwohl es gar nicht existiert...



Viele Grüße
Silo


als Antwort auf: [#359263]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

Martin Fischer
  
Beiträge gesamt: 12714

17. Jul 2008, 19:12
Beitrag # 4 von 8
Beitrag ID: #359279
Bewertung:
(2080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Silo,

was sagt images[0].length?
(ja, Du liest richtig).

Alternativ images[0].properties.toSource();
Oder einfach mal images[0].select() versuchen.


als Antwort auf: [#359270]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

silo
Beiträge gesamt: 29

18. Jul 2008, 10:18
Beitrag # 5 von 8
Beitrag ID: #359335
Bewertung:
(2033 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
hier sind die Ergebnisse von den von dir vorgeschlagenen Befehlen. Die Ergebnisse entsprechen dem was ich aufgrund des bisherigen Verhaltens erwartet habe. Nur verstehe ich es nicht (ich suche schon die ganze Zeit ob ich andauernd einen blöden Tipfehler mache der die ganzen Fehler provoziert...).

Code
imageElement.images[0].select(); // Fehler: select ist keine Funktion // hier liegt bereits ein "Compiler"-Fehler vor, d.h. vorhergehende Anweisungen werden gar nichtausegeführt 

alert(imageElement.images[0].properties); //Fehler: Objekt ist ungültig

alert(imageElement.images[0].properties.toSource()); // Fehler: Objekt ist ungültig

alert(imageElement.images[0].length); // Fehler: Objekt unterstützt die Eigenschaft oder Methode "length" nicht

alert(imageElement.images[0].toSource()); // resolve("/document[0]/XML-element[0]...") // da bekomme ich jedoch auch etwas wenn ich images[793].toSource() auslese


Viele Grüße
Silo


als Antwort auf: [#359279]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

Martin Fischer
  
Beiträge gesamt: 12714

18. Jul 2008, 10:32
Beitrag # 6 von 8
Beitrag ID: #359337
Bewertung:
(2026 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Silo,

nun, in diesem Fall würde ich sagen, es stimmt etwas mit dem Objekt 'imageElement' nicht.
Das kann ich jetzt hier nicht auf die Schnelle nachprüfen.

Gibt es das Objekt var imageElement = app.documents[0].xmlElements[0].xmlElements.item("image"); ?

Was für einen constructorName hat imageElement?
Ist es eventuell schon das image selbst?
Oder beinhaltet es andere Dinge als das erwartete image?

Aber so wie ich Dich einschätze, hast Du das alles bereits geprüft.

Also: ohne das selbst nachstellen zu können, weiß ich nichts mehr dazu zu sagen.


als Antwort auf: [#359335]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

zaphodbeeblebroxx
Beiträge gesamt: 408

20. Jul 2008, 22:25
Beitrag # 7 von 8
Beitrag ID: #359589
Bewertung:
(1966 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Silo,

das Element, dass Du referenzieren möchtest ist ein in Textfluss verankertes Bild. (Dein XML-Element "image" enthält sowohl den Bildverknüpfungs-Link als auch das XML-Element "img_description": <image><img href="file://img/01.jpg" />
<img_description>Große Biene</img_description></image>).

Du kannst die geometricBounds des Bildes wie folgt referenzieren:

Code
var myDoc =app.documents[0]; 
var myRoot = myDoc.xmlElements[0];
var myImageBounds = myRoot.xmlElements.item("image").characters[0].pageItems[0].images[0].geometricBounds;


Die geometricBounds des Containers erhälst Du mit:
Code
var myImageFrameBounds = myRoot.xmlElements.item("image").characters[0].pageItems[0].images[0].parent.geometricBounds; 



als Antwort auf: [#359337]

Zugriff auf Bilder innerhalb von XML-Elementen ist immer ungültig

silo
Beiträge gesamt: 29

21. Jul 2008, 10:41
Beitrag # 8 von 8
Beitrag ID: #359619
Bewertung:
(1936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin, hallo Matthias,

meine weiteren Versuche (u.a. auch mit constructor.name) über die "XML-Element.images"-Collection auf das Bild zuzugreifen schlugen alle fehl.

Der Zugriff über die PageItems-Collection ist eine hervorragende Idee und klappt prima.

Allerdings gehe ich vorsichtshalber nicht über das character[0]-Objekt, sondern direkt über die PageItems des XML-Element. Falls sich mal ein Whitespace oder ähnliches in das XML einschleicht.

Code
var imageElement = app.documents[0].xmlElements[0].xmlElements.item("image"); 
alert(imageElement.pageItems[0].images[0].geometricBounds);

Auf jeden Fall vielen dank für eure Tips. Sie haben mir sehr geholfen.


Viele Grüße
Silo


als Antwort auf: [#359589]
X