[GastForen Programme Print/Bildbearbeitung Adobe InDesign JS: XML komplett platzieren + Teilen

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

JS: XML komplett platzieren + Teilen

MarS
Beiträge gesamt: 18

11. Okt 2006, 16:20
Beitrag # 1 von 7
Bewertung:
(2711 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

wie lautet der Befehl, um ein XML-Element (hier soll das Rootelement genommen, also das komplette XML-Dokument platziert werden) auf einer Seite zu platzieren und wie lautet der Befehl, um diesen "kleines Kreuzsymbol rechts unten am Frame anklicken, um überstehenden Text (der zu lang für die Seite ist) zu nehmen, um ihn auf der nächsten Seite platzieren zu können" Vorgang per Script durchzuführen?

Gruß
X

JS: XML komplett platzieren + Teilen

Martin Fischer
  
Beiträge gesamt: 12891

11. Okt 2006, 16:56
Beitrag # 2 von 7
Beitrag ID: #255893
Bewertung:
(2674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mars,

> wie lautet der Befehl, um ein XML-Element (hier soll das Rootelement genommen,
>also das komplette XML-Dokument platziert werden) auf einer Seite zu platzieren

schau mal hier: http://www.hilfdirselbst.ch/..._P255829.html#255829

> wie lautet der Befehl, um diesen "kleines Kreuzsymbol rechts unten am Frame anklicken,
> um überstehenden Text (der zu lang für die Seite ist) zu nehmen, um ihn auf der nächsten
> Seite platzieren zu können" Vorgang per Script durchzuführen?

Für den Klick gibt es keinen einfachen Befehl.
Das Zauberwort lautet "nextTextFrame", eine Eigenschaft der Textrahmen.
Du mußt also auf der nöchsten Seite einen Textrahmen newFrame anlegen und dem Textrahmen myFrame mit dem Überlauf auf der vorherigen Seite sagen: myFrame.nextTextFrame = newFrame usw.

Wenn Du die XML-Datei per Skript platzierst, kannst Du bei place() den Schalter autoflowing auf true setzen.


als Antwort auf: [#255879]

JS: XML komplett platzieren + Teilen

MarS
Beiträge gesamt: 18

11. Okt 2006, 17:01
Beitrag # 3 von 7
Beitrag ID: #255895
Bewertung:
(2665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin. Hatte nicht gedacht, dass "XML import" und "XML platzieren" über place in einem Schritt geht (bzw. dass place überhaupt auch für den XML-Import gedacht ist; davon abgesehen, dass ich in dem anderen Thread das "File" missinterpretiert hatte und dachte es erzeugt eine neue Datei).


als Antwort auf: [#255893]

JS: XML komplett platzieren + Teilen

MarS
Beiträge gesamt: 18

11. Okt 2006, 17:11
Beitrag # 4 von 7
Beitrag ID: #255899
Bewertung:
(2660 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zu früh gefreut... die XML-Datei wird nun zwar platziert, aber nicht als XML-Datei behandelt, sondern als Textdatei.
Sprich danach hab ich nicht den Effekt von "XML importieren", sondern der Dateiinhalt wird 1zu1 ins Dokument eingefügt.


als Antwort auf: [#255879]

JS: XML komplett platzieren + Teilen

Martin Fischer
  
Beiträge gesamt: 12891

11. Okt 2006, 17:30
Beitrag # 5 von 7
Beitrag ID: #255904
Bewertung:
(2651 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mars,

dann suche in der Scripting Reference nach importXML oder XMLimport.

Vielleicht geht es in diese Richtung:
Code
app.documents[0].importXML(myFile); 


Hab das noch nicht gemacht.
XML ist ein mir ein Weißer Fleck.


als Antwort auf: [#255899]

JS: XML komplett platzieren + Teilen

Martin Fischer
  
Beiträge gesamt: 12891

12. Okt 2006, 05:15
Beitrag # 6 von 7
Beitrag ID: #255968
Bewertung:
(2603 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danach könnte es in dieser Richtung weitergehen:
Code
// weist das erste XML-Element einer Variable zu 
var myElement = myDoc.xmlItems[0].xmlElements[0];

// erzeugt einen neuen Textrahmen
var myFrame = myDoc.pages[0].textFrames.add({geometricBounds:[10,10,100,138.5]});

// platziert das erste XML-Element im neu erzeugten Textrahmen
myElement.placeXML(myFrame);

// erzeugt einen weiteren neuen Textrahmen
var myNewFrame = myDoc.pages[0].textFrames.add({geometricBounds:[110,10,200,138.5]});

// verknüpft den ersten Textrahmen mit dem zweiten
myFrame.nextTextFrame = myNewFrame;


Das Erzeugen eines neuen Textrahmens und das Verknüpfen des vorherigen TR mit dem neuen TR könntest Du in eine Schleife mit der Bedingung "while (myLastTextFrame.overflows == true)" packen, damit solange neue Textrahmen erzeugt und mit dem vorherigen verknüpft werden, bis kein Übersatz mehr besteht.


als Antwort auf: [#255904]

JS: XML komplett platzieren + Teilen

MarS
Beiträge gesamt: 18

12. Okt 2006, 11:17
Beitrag # 7 von 7
Beitrag ID: #256046
Bewertung:
(2585 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke dir.

Code
// Solange neue Seiten erstellen und Textrahmen erstellen sowie verknüpfen bis keine weitere Verknüpfung mehr nötig ist 
var myLastFrame = myFrame;
var mySpreadPageNum = 1;
var mySpread = myDoc.spreads[0];
var myPagesNum = 1;
while(myLastFrame.overflows == true) {
var myAddLeft = 0;
if(mySpreadPageNum == 1) {
mySpread = myDoc.spreads.add();
mySpreadPageNum = 0;
}
else {
mySpreadPageNum = 1;
myAddLeft = mySpread.pages[0].bounds[3];
}
// Trotz dass das Element auf Seite 2 des Bogens liegt, muss der Abstand von links absolut zum Bogen angegeben werden
var myNewPage = mySpread.pages[mySpreadPageNum];
var myBounds = [myNewPage.marginPreferences.top, myNewPage.marginPreferences.left+myAddLeft, myNewPage.bounds[2]-myNewPage.marginPreferences.bottom, myNewPage.bounds[3]-myNewPage.marginPreferences.right];
var myNewFrame = myNewPage.textFrames.add({geometricBounds:myBounds});
myLastFrame.nextTextFrame = myNewFrame;
myLastFrame = myNewFrame;
myPagesNum++;
}



als Antwort auf: [#255879]
X