[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textvariable ausgeben (CS4, WIN)

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

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

19. Jun 2011, 11:42
Beitrag # 1 von 25
Bewertung:
(6248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich möchte gerne den Inhalt einer bestehenden Textvariablen ausgeben.

Soweit bin ich schon:
Code
var myVar = app.activeDocument.textVariables.item("meineVariable"); 


Wie erhalte ich nun den Klartext, den die Variable beinhaltet?

Gruß
Christoph
X

Textvariable ausgeben (CS4, WIN)

Gerald Singelmann
  
Beiträge gesamt: 6244

19. Jun 2011, 11:58
Beitrag # 2 von 25
Beitrag ID: #473978
Bewertung: |
(6231 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Was sagt denn das OMV, welche Eigenschaften eine Variable hat?


als Antwort auf: [#473977]
Anhang:
Bildschirmfoto 2011-06-19 um 11.56.46.png (34.5 KB)   Bildschirmfoto 2011-06-19 um 11.58.29.png (23.8 KB)

Textvariable ausgeben (CS4, WIN)

WernerPerplies
Beiträge gesamt: 2536

19. Jun 2011, 13:51
Beitrag # 3 von 25
Beitrag ID: #473983
Bewertung:
(6196 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#473977]

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

20. Jun 2011, 07:37
Beitrag # 4 von 25
Beitrag ID: #474000
Bewertung:
(6133 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank für die Hilfe an
Gerald und Werner.

Schöne Grüße
Christoph


als Antwort auf: [#473983]

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

20. Jun 2011, 19:18
Beitrag # 5 von 25
Beitrag ID: #474085
Bewertung:
(6091 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
nun benötige doch noch mal Hilfe:

Irgendwie will mir das nicht gelingen. Ich muss den Inhalt einer Textvariablen weiterverarbeiten.
Hierzu soll der Inhalt an eine eine Variable übergeben werden:

Code
var myVarValue = textVariableInstances.item("meineVariable").resultText; 


Dies klappt leider nicht.

Wie komme ich denn da dran?
Auf der von Werner empfohlenen Website bin ich leider nicht weitergekommen.

Grüße Christoph


als Antwort auf: [#474000]

Textvariable ausgeben (CS4, WIN)

WernerPerplies
Beiträge gesamt: 2536

20. Jun 2011, 20:10
Beitrag # 6 von 25
Beitrag ID: #474088
Bewertung:
(6077 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ich muss gestehen, dass ich die Tipps im Link nicht selbst ausprobiert habe, aber wenn ich alles richtig verstanden habe, hat Adobe so etwas wie Variable.Content als Property nicht vorgesehen.

An alle, die es besser wissen:Ich lasse mich da aber gerne korrigieren.

Wenn ich alles richtig verstanden habe, muss Du den Inhalt einer Varablen erst in einen Textrahmen einfügen, bevor Du an den Inhalt kommt.

Und darauf bezieht sich der Link:
Code
app.selection[0].texts[0].textVariableInstances.add({associatedTextVariable:"WpsVariable"}); 


Diese Zeile z. B. fügt den Inhalt Deiner Variablen an der Cursorposition inberhalb eines Textrahmens ein, und von da musst Du ihn dir abholen.

Beschreibe doch mal die Aufgabe, die Du lösen willst, vielleicht gibt es ja eine andere, einfachere Lösung, für Dein Problem.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#474085]

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

20. Jun 2011, 20:25
Beitrag # 7 von 25
Beitrag ID: #474089
Bewertung:
(6070 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

ich möchte mir einen eigenen lebenden Kolumnentitel bauen.
Das würde soweit auch schon funktionieren. Ich benötige lediglich für die switch-Abfrage den aktuellen Wert der Textvariable.
Hier müßte ich also "MeineVariable" mit dem Wert der Textvariable "abc" befüllen

Code
var _dok = app.activeDocument; 
_dok.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN; //Lineal umstellen
for (var i = 0 ; i < _dok.pages.length; i++) {
var _page = _dok.pages[i];
var _tf = _page.textFrames.add();

var Zahl = parseInt(_page.name);


if ( Zahl%2 == 0) {
//für linke Seiten
switch (MeineVariable) {

case "A": _tf.geometricBounds = [10,10,20,20];
break;

case "B": _tf.geometricBounds = [20,10,30,20];
break;

case "C": _tf.geometricBounds = [30,10,40,20];
break;

// Case bis Buchstabe Z
default: _tf.geometricBounds = [10,10,20,20];
}


//für rechte Seiten
}else{

switch (MeineVariable) {

case "A": _tf.geometricBounds = [10,140,20,150];
break;

case "B": _tf.geometricBounds = [20,140,30,150];
break;

case "C": _tf.geometricBounds = [30,140,40,150];
break;
// Case bis Buchstabe Z
default: _tf.geometricBounds = [10,10,20,20];
}
}

//Befüllung
var myVar = app.activeDocument.textVariables.item("abc");
_tf.texts[0].textVariableInstances.add({associatedTextVariable:myVar});
}


Unten wird der Wert bereits korrekt im Textrahmen ausgegeben.

Gruß
Christoph


als Antwort auf: [#474088]
(Dieser Beitrag wurde von cwenet am 20. Jun 2011, 20:26 geändert)

Textvariable ausgeben (CS4, WIN)

Martin Fischer
  
Beiträge gesamt: 12360

20. Jun 2011, 20:52
Beitrag # 8 von 25
Beitrag ID: #474091
Bewertung:
(6055 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ cwenet ] Hierzu soll der Inhalt an eine eine Variable übergeben werden:

Code
var myVarValue = textVariableInstances.item("meineVariable").resultText; 


Dies klappt leider nicht.

Wie komme ich denn da dran?


Die zitierte Zeile möchte vermutlich den Inhalt einer Instanz (Umsetzung im Text) der Textvariable 'meineVariable' ermitteln.

Die Zeile müßte dann richtigerweise so lauten:
Code
var myVarValue = app.activeDocument.textVariables.itemByName("meineVariable").associatedInstances[0].resultText; 


associatedInstances[0] reflektiert den Inhalt der ersten Instanz der Textvariable.

Die letzte Instanz wäre etwa folgendermaßen zu ermitteln:

Code
var myVarValue = app.activeDocument.textVariables.itemByName("meineVariable").associatedInstances[app.activeDocument.textVariables.itemByName("meineVariable").associatedInstances.length-1].resultText; 


Viele Grüße
Martin




als Antwort auf: [#474085]

Textvariable ausgeben (CS4, WIN)

Martin Fischer
  
Beiträge gesamt: 12360

20. Jun 2011, 21:01
Beitrag # 9 von 25
Beitrag ID: #474093
Bewertung:
(6053 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Ich benötige lediglich für die switch-Abfrage den aktuellen Wert der Textvariable.


Der Inhalt der Textvariable wird von einer bestimmten Quelle bedient (z.B. Text mit bestimmtem AF oder bestimmtem ZF o.a.).
Wäre es da nicht sinnvoller, für Deine Zwecke nach der Quelle zu SUCHEN (findText()) und den Inhalt der Quelle aus dem Array der Fundstellen zu ermitteln?
Damit könntest Du den Weg über die Textvariablen komplett sparen.

Du könntest aber auch analysieren, über welche Quelle (AF oder ZF oder Anderes) eine bestimmte Textvariable bedient wird: variableOptions -> matchParagraphStylePreference.appliedParagraphStyle (Beispiel). Und darüber könntest Du die Parameter für die Suche ermitteln.

Das scheint mir allerdings etwas umständlich.


Wenn Du jedoch über die Umsetzung der Variable selbst gehen willst, mußt Du sie auch konkret umsetzen, um den Inhalt einer bestimmten Instanz zu ermitteln.

Viele Grüße
Martin




als Antwort auf: [#474089]
(Dieser Beitrag wurde von Martin Fischer am 20. Jun 2011, 21:06 geändert)

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

20. Jun 2011, 21:06
Beitrag # 10 von 25
Beitrag ID: #474094
Bewertung:
(6044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

ja so hatte ich es erst versucht.
Sieh auch meine Versuche hier:
http://www.hilfdirselbst.ch/...;;page=unread#unread

Im Format U1 habe ich einfach ein verschachteltes Format für 1 Zeichen angelegt.

Diese Lösung war für mich irgendwie einfacher.

Gruß
Christoph


als Antwort auf: [#474093]

Textvariable ausgeben (CS4, WIN)

Martin Fischer
  
Beiträge gesamt: 12360

20. Jun 2011, 21:15
Beitrag # 11 von 25
Beitrag ID: #474095
Bewertung:
(6038 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

der Ansatz dort mit der SUCH-Funktion scheint mir im Hinblick auf die Aufgabenstellung mit dem Register erfolgversprechender zu sein.

Kennst Du die Diskussion Register «automatisieren»?

Dort werden verschiedene Lösungswege zur Umsetzung von Registermarken vorgestellt und diskutiert.

Ich könnte mir vorstellen, daß Du z.B. mit der von Bernd skizzierten Lösung auf Musterseiten weiterkommst (zunächst ohne Skript Musterseiten für die Registermarken A-Z anlegen; diese können auf einer anderen Musterseite basieren, um gemeinsame Inhalte übergeordnet steuern zu können).
Dann müßtest Du per Skript lediglich die Seitenbereiche für die Registermarken ermitteln und den jeweiligen Bereichen die entsprechenden Musterseiten zuweisen.

Es geht doch um Registertabs A, B, C ... Z, die fortlaufend bestimmten Seitenbereichen zugeordnet werden sollen?

Viele Grüße
Martin




als Antwort auf: [#474094]
(Dieser Beitrag wurde von Martin Fischer am 20. Jun 2011, 21:21 geändert)

Textvariable ausgeben (CS4, WIN)

cwenet
Beiträge gesamt: 959

20. Jun 2011, 22:21
Beitrag # 12 von 25
Beitrag ID: #474098
Bewertung:
(5991 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

vielen Dank für den Link zu einer weiteren Diskussion.
Ja, es geht um Registertabs. Diese sollen abhängig vom ersten Zeichen im Absatzformat U1 sein.
Ich habe mich mit der Lösung über ein verschachteltes Format (über 1 Zeichen) schon angefreundet.
Hoffe da läuft dann im Ernstfall nichts schief.

Gruß
Christoph


als Antwort auf: [#474095]

Textvariable ausgeben (CS4, WIN)

WernerPerplies
Beiträge gesamt: 2536

21. Jun 2011, 06:18
Beitrag # 13 von 25
Beitrag ID: #474104
Bewertung:
(5959 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Christoph,

ich sehe, dass Du jetzt einen anderen Lösungsweg gehst, aber das Problem hat mich beschäftigt und bei mir funktioniert folgendes:

Code
 

main();

function main()
{
alert(GetTextVariableContent("meineVariable"));
}

function GetTextVariableContent(variableName)
{
var variableContent = "";
try
{
// create a temporary textframe
var tempFrame = app.activeDocument.textFrames.add({geometricBounds:[0,0,20,20]});
// insert the variable
variableContent = tempFrame.texts[0].textVariableInstances.add({associatedTextVariable:variableName}).resultText;
}
catch (error)
{
alert("Error: " + error.message + "\n" + "in line: " + error.line);
}
finally
{
// delete tempory used frame in any case
tempFrame.remove();
}
return variableContent ;
}


Ein wenig tricky, aber ich hoffe, es funktioniert.

Es wäre schön, Feedback zu bekommen, ob es generell funktioniert, oder in welchen Situationen nicht.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#473977]

Textvariable ausgeben (CS4, WIN)

Martin Fischer
  
Beiträge gesamt: 12360

21. Jun 2011, 08:20
Beitrag # 14 von 25
Beitrag ID: #474108
Bewertung:
(5940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Grunde genommen ist dieser Weg raffiniert und Werner Perplies gebührt Anerkennung.

Allerdings steckt im Detail ein Fehler.
Es kommt (für das Ergebnis) darauf an, wo der temporäre Textrahmen erzeugt wird. Mit app.activeDocument.textFrames.add() wird er stets auf der ersten Seite des Dokuments erzeugt. Damit wird immer die Instanz der Textvariable auf dieser (ersten) Seite ermittelt und nicht z.B. die Instanz auf der aktiven Seite.

Außerdem könnte die Breite des temporären Textrahmens mit 20 Einheiten etwas knapp bemessen sein (abhängig vom Einzug des aktiven Textformats).

Hier eine kleine Modifikation, welche einen bestimmten Platz, hier die erste Seite des aktiven Layoutfensters, im Aufruf der Funktion mit berücksichtigt.

Code
main(); 

function main()
{
alert(GetTextVariableContent("meineVariable", app.layoutWindows.firstItem().activePage));
}

function GetTextVariableContent(variableName, _location)
{
var variableContent = "";
try
{
// create a temporary textframe
var tempFrame = _location.textFrames.add({geometricBounds:[0,0,20,200]});
// insert the variable
variableContent = tempFrame.texts[0].textVariableInstances.add({associatedTextVariable:variableName}).resultText;
}
catch (error)
{
alert("Error: " + error.message + "\n" + "in line: " + error.line);
}
finally
{
// delete tempory used frame in any case
tempFrame.remove();
}
return variableContent ;
}



In der Praxis wird der Ort des temporären Textrahmens anders adressiert werden müssen. Es könnte z.B. eine Seite innerhalb einer Schleife durch die Seiten sein, oder eine Seite, auf welcher ein bestimmtes Element gefunden wurde ...

Viele Grüße
Martin




als Antwort auf: [#474104]
(Dieser Beitrag wurde von Martin Fischer am 21. Jun 2011, 08:30 geändert)

Textvariable ausgeben (CS4, WIN)

WernerPerplies
Beiträge gesamt: 2536

21. Jun 2011, 08:38
Beitrag # 15 von 25
Beitrag ID: #474109
Bewertung:
(5927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

zuerst einmal vielen Dank für Deine Informationen, ich bin immer noch ein Anfänger, was InDesign angeht, da ich selbst eigentlich nur programmiere, bin ich dankbar für jede Information über das Arbeiten mit InDesign.

Wenn ich Dich richtig verstehe, müsste meine Funktion immer auf der gerade aktiven Seite ausgeführt werden.

Diese aktive Seite müsste doch als Info unterhalb der app verfügbar sein. Wenn das so ist, bräuchte doch die Location nicht an die Funktion übergeben werden, sondern die Funktion könnte die Location doch direkt ermitteln.

Oder mache ich da einen Denkfehler?

Wenn meine Überlegung richtig ist, müsste sich damit auch dieses Problem

Zitat In der Praxis wird der Ort des temporären Textrahmens anders adressiert werden müssen. Es könnte z.B. eine Seite innerhalb einer Schleife durch die Seiten sein, oder eine Seite, auf welcher ein bestimmtes Element gefunden wurde ...


erledigen, oder?

Ergänzung:

Das hatte ich vergessen:
Zitat Außerdem könnte die Breite des temporären Textrahmens mit 20 Einheiten etwas knapp bemessen sein (abhängig vom Einzug des aktiven Textformats).

Wäre das relevant? Kann man bei eventuell entstehenden Übersatz den Inhalt der Variable nicht einfügen?

Hilft eventuell Frame.fit(FitOptions.frameToContent)?

Noch eine Frage, die mich beschäftigt:


Bleibt durch die Funktion die aktuell Position erhalten, oder muss die am Anfang der Funktion gerettet und am Ende wieder restauriert werden?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#474108]
(Dieser Beitrag wurde von WernerPerplies am 21. Jun 2011, 08:47 geändert)
X

Aktuell

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
26.11.2020

Wie schafft man einen gleichbleibenden Farbeindruck im Druck und elektronischer Ausgabe? Peter Jäger erklärt wie es geht!

Zoom Meeting
Donnerstag, 26. Nov. 2020, 19.00 - 21.01 Uhr

Vortrag

Agenda: Vorstellung Verein freieFarbe e.V. und pro2media gmbh Was verlangt der Kunde? Gleichbleibende Farbe über sämtliche Ausgaben? Für welche Ausgaben (Offset- oder Digitaldruck, Kopiersysteme, elektronische Ausgaben) Umgang mit Farben bisher: mehrere Logos- und Bildvarianten Logo Entwicklung heute: anhand pro2media gmbh, ausgehend von nur einer Logovariante Crossmediale Farben bestimmen Einsatz von Hilfsmitteln wie digitaler- und gedruckter Farbatlas und Gamutmap.com Sauberes Farben CD erstellen mit eindeutig definierten Werten Umsetzung in den Softwaren (Word, FileMaker, InDesign, Illustrator, Web CMS, OpenSource usw.) Verarbeitung in den Druckereien (anhand Callas pdfToolbox)

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

idugs66.eventbrite.com

Grafik- und Bilddaten crossmedial aufbereiten
Veranstaltungen
30.11.2020 - 01.12.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Montag, 30. Nov. 2020, 08.30 Uhr - Dienstag, 01. Dez. 2020, 17.00 Uhr

Kurs

Im Kurs lernen Sie die Schritte vom Import des Rohmaterials bis zum fertig exportierten Clip kennen. Dazu zählen die Materialverwaltung, das Trimmen für Roh- und Feinschnitt, Blenden, Titel und Effekte und eine Übersicht über die wichtigsten Formate.

Preis: CHF 1'700.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/video-und-audio-publishing/adobe-premiere-pro-cc/kurs-adobe-premiere-pro-cc-basic

Neuste Foreneinträge


Zwei Fragen zur Tabelle

Externe Verlinkung in Indesign ohne www

Glyphen-Salat

Transparente Klebefolie bedrucken

Grep suche nur erster Fund anzeigen

Script um 2 Items von CC Library auf eine Seite zu plazieren

Bilder exportieren

Satz für blinde bzw. seheingeschränkte Menschen

Mockup Alias Ebene erstellen

Preflight Ticket Signature Preflight.p12
medienjobs