[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Mehrere Eigenschaften von Absatzformaten auslesen

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

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

11. Apr 2014, 09:07
Beitrag # 1 von 12
Bewertung:
(3081 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

In einem Absatzformat gibt es ja jede Menge Eigenschaften, die ich offensichtlich mit toSource() auslesen kann.

Wie man eine Eigenschaft ausliest, ist hier erklärt: http://www.hilfdirselbst.ch/...oSource%28%29#524543

Mir ist jetzt
1. nicht klar, was toSource() da genau macht?
2. Wie kann ich das Ganze auf z.B. 10 Eigenschaften aus einem Absatzformat begrenzen?

Dave Saunders schlägt im Amerik. Forum vor, man solle ein eigenes Objekt mit den Eigenschaften erstellen und dieses dann mit toSource() auslesen. Leider hat er kein Beispiel geliefert.

Ein eigenes Objekt würde ich so erstellen:
var cmd = {strokeWeight: 3, strokeColor: "Black", strokeTint: 44}; >> Beispiel von Werner!

Bei den verschiedenen Formaten will ich aber ja die Werte auslesen und nicht mitgeben. Wenn ich jetzt nur die Eigenschaften, aber nicht die Werte angebe, erhalte ich egal wie ich es schreibe Fehler.

Wie macht man das richtig?

Danke.

Gruß Kai Rübsamen
X

Mehrere Eigenschaften von Absatzformaten auslesen

WernerPerplies
Beiträge gesamt: 2572

11. Apr 2014, 09:42
Beitrag # 2 von 12
Beitrag ID: #526078
Bewertung:
(3063 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Kai,
Zitat 1. nicht klar, was toSource() da genau macht?

toSource -> frei übersetzt -> mache Programmcode draus.
Gegenstück -> eval(Object.toSource()) -> führt diesen Programmcode aus.

Zitat 2. Wie kann ich das Ganze auf z.B. 10 Eigenschaften aus einem Absatzformat begrenzen?

Mir ist nicht klar, was das soll, aber dafür verwendet man eine Schleife, aber ich würde eher bestimmte Eigenschaften auslesen wollen.

Ich weiß ja, dass Du Dich nicht so sehr für generelle Lösungen interessierst, aber wie man beliebige Eigenschaften ausliest findest Du hier:
WpsCompareObjectsClass

Da müsstest Du Dich aber schon ein wenig damit beschäftigen,
am besten:
Debug+Single Step.

Einzelne Eigenschaften liest Du so aus:
Code
    function getBy(/*objectCollection*/oc, /*String*/property, /*Any*/what)  
{
try
{
if ("length" in oc)
{
for (var i = 0; i<oc.length; i++)
{
if (property in oc[i])
{
if (getProperty(oc[i], property, what))
return getProperty(oc[i], property, what);
// if ((oc[i][property] != null) && (oc[i][property]==what))
// return oc[i];
}
}
}
else
{
return getProperty(oc, /*String*/property, /*Any*/what);
}
/*Any*/function getProperty(/*Any*/elem, /*String*/property, /*Any*/what)
{
if ((property in elem) && (elem[property] != null))
{
if ((property == "fsName") || (property == "fullName"))
{
if (File(elem[property]).fsName == File(what).fsName)
return elem;
}
else
{
if (elem[property] == what)
return elem;
}
}
}
}
catch (error)
{}
return null;
}


Wenn Du diese Funktion über eine Schleife aufrufst, die über ein Array mit den gewünschten Eigenscaften läuft, solltest Du das gewünschte Ergebnis erhalten.

-

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#526075]

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

11. Apr 2014, 10:52
Beitrag # 3 von 12
Beitrag ID: #526086
Bewertung:
(3032 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Werner und alle Anderen,

bin mir nicht sicher, aber für mich klingt es nicht nach dem was ich suche?

Hier mal der Link ins amerikanische Forum: http://forums.adobe.com/message/6285859#6285859

Was dieser Trevor da macht, versteh ich nicht.

Die Aufgabe ist Folgende:
In einem Dokument gibt es 10 Absatzformate. Jetzt gilt es diese Formate miteinander zu vergleichen, damit man z.B. für EPUB rausfinden kann, welches CSS man braucht.

Ich nutze hierfür bisher ein Skript von Kasyan Servetsky, dass ich hier mal anhänge. Das Skript erstellt eine CSV-Datei, die eine Unmenge an Eigenschaften auflistet. In der Praxis brauche ich aber eigentlich nur 5-10 und suche mir die dann mühevoll in der CSV zusammen.

Ausgehend von dem o.g. Beitrag wollte ich mir jetzt ein eigenes Objekt basteln und NUR diese Infos für alle Formate auslesen.

Das könnte z.B. sein fontFamily, fontStyle, pointSize.

Naiv dachte ich jetzt, ich würde mir ein Objekt bauen: var meineWenigenEigenschaften = newObject{}
In dieses Objekt möchte ich dann fontFamily usw. aufnehmen, aber logischerweise keine Werte mitgeben.

Dann eine Schleife durch alle Absatzformate und anstelle von
myParagraphStyle.properties >> myParagraphStyle.meineWenigenEigenschaften auslesen.

Versteht mich einer? Geht sowas?

Gruß Kai Rübsamen


als Antwort auf: [#526078]
Anhang:
Export paragraph styles descriptions - 3.5.jsx (30.3 KB)

Mehrere Eigenschaften von Absatzformaten auslesen

WernerPerplies
Beiträge gesamt: 2572

11. Apr 2014, 10:59
Beitrag # 4 von 12
Beitrag ID: #526088
Bewertung:
(3029 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

Zitat bin mir nicht sicher, aber für mich klingt es nicht nach dem was ich suche?


Solche Aussagen liebe ich von Dir, Du magst nicht lesen, aber ich soll mir Deine Links ansehen.

Zitat Versteht mich einer? Geht sowas?

Ja, und ich habe Dir alle notwendigen Zutaten genannt.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#526086]

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

11. Apr 2014, 11:18
Beitrag # 5 von 12
Beitrag ID: #526093
Bewertung:
(3019 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Schreib es halt so, dass man dich versteht ;-)

Wenn du mir eine Frage beantworten willst und damit 2 neue Fragezeichen aufmachst, hilft mir das nicht.

Gruß Kai Rübsamen


als Antwort auf: [#526088]

Mehrere Eigenschaften von Absatzformaten auslesen

WernerPerplies
Beiträge gesamt: 2572

11. Apr 2014, 11:19
Beitrag # 6 von 12
Beitrag ID: #526094
Bewertung:
(3015 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#526093]

Mehrere Eigenschaften von Absatzformaten auslesen

Martin Fischer
  
Beiträge gesamt: 12413

11. Apr 2014, 11:45
Beitrag # 7 von 12
Beitrag ID: #526100
Bewertung:
(2991 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rübe,

habe die Links nicht gelesen.
Auf die Schnelle hier eine Skizze, wie Du auf einfache Weise gezielt bestimmte Eigenschaften aus Objekten auslesen könntest.

Code
main(); 

function main()
{
var doc = (app.documents.length > 0) ? app.documents.firstItem() : app.documents.add(),
i = 0, ps_props = new Array,
props2get = {
appliedFont: null,
name: null,
pointSize: null,
fillColor: null,
underline: null,
parent: null,
dummy: null // Unsinn!
};

for (i = 0; i < doc.allParagraphStyles.length; i++)
ps_props.push( get_selprops(props2get, doc.allParagraphStyles[i]));

// do something
$.bp();

function get_selprops(obj, ps)
{
var o = {}, x = 0;
for (x in obj)
if (ps.hasOwnProperty(x) )
o[x] = ps[x];
return o;
}
}


Die ermittelten Eigenschaften - hier der Absatzformate - werden als Objekte im Array ps_props gesichert.

Manche Eigenschaften liegen als Objekt vor (appliedFont).
Diese müsstest Du ggf. durch eine weitere Routine auflösen bzw. die gewünschten Eigenschaften herauspicken.

----
edit: Nun habe ich doch mal kurz in den Link reingespickelt.
Bei Trevor ist die Auflösung ja praktisch auch sehr differenziert enthalten. ;-)
Vergiss meinen Ansatz oben.
Kann den Ansatz von Trevor aber aus zeitlichen Gründen jetzt nicht analysieren und erklären. :-(

Viele Grüße
Martin




als Antwort auf: [#526075]
(Dieser Beitrag wurde von Martin Fischer am 11. Apr 2014, 11:55 geändert)

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

11. Apr 2014, 11:57
Beitrag # 8 von 12
Beitrag ID: #526103
Bewertung:
(2979 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Martin,

bis auf die for in-Schleife verstehe ich hier zumindest alles. Bin heute Abend allein zu Haus und werde das testen. Danke.

@ Werner: Natürlich auch vielen Dank. Während Martins Code für mich sehr einfach zu lesen ist, weis ich bei deinen Zeilen leider erst Mal gar nicht, was da los ist. >> das alte Problem ;-)

Gruß Kai Rübsamen


als Antwort auf: [#526100]

Mehrere Eigenschaften von Absatzformaten auslesen

Martin Fischer
  
Beiträge gesamt: 12413

11. Apr 2014, 11:58
Beitrag # 9 von 12
Beitrag ID: #526104
Bewertung:
(2977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Rübi,

hier Trevors Skript mit ausgewählten Eigenschaften - props2sel:

Code
doc = app.activeDocument, 
ps = doc.allParagraphStyles,
l = ps.length,
paraStyles = [],
c = 0;
while (l--) {
var styleDetails = [], n = 0, s, x, p, q,
props2sel = {
appliedFont: null,
name: null,
pointSize: null,
fillColor: null,
underline: null,
parent: null
}
;
s = ps[l].properties;
for (x in props2sel) {
p = (s[x] && s[x].hasOwnProperty ("name")) ? s[x].name : s[x]; // change according to requirements.
if (p && p.constructor.name == "String") p = '"' + p +'"'; // ok if the sctring doesn't contain a " mark
else if (x == "tabList") p = getTabList (s[x]);
else if (p instanceof Object && p.constructor.name != "Enumerator") {
var objProps = [], z = 0;
for (q in p) objProps[z++] = q + ": " + p[q]
p = x + " {" + objProps.join(", ") + "}";
}
styleDetails[n++] = x + ": " + p;
}
paraStyles[c++] = "{" + styleDetails.join(", ") + "}";
}

temp = new File (Folder (Folder.temp) + "/" + doc.name + " Paragraph Style Properties " + ("" + new Date).replace(/:/g,"\xB7").replace(/\s\S+$/,"")+ ".txt");
temp.encoding = "UTF-8";
temp.lineFeed = ($.os[0]=="M") ? "Macintosh" :" Windows";
temp.open('w');
temp.write("\uFEFF" + paraStyles.join("\r"));
temp.close();
$.sleep(300);
temp.execute(true);

function getTabList (t) {
var tl = t.length, n, pTabList = [];
for (n = 0; n < tl; n++) { // if the leader etc. contains a " then you have to use ' instead of "
pTabList[n] = "({alignment: " + t[n].alignment + ', alignmentCharacter: "' + t[n].alignmentCharacter + '", leader: "' +t[n].leader + '", position: ' + t[n].position + "})";
}
return "[" + pTabList.join(", ") + "]";
}

function getGrepList (g) { // nestedGrepStyles
return // couldn't be bothered to do this one, sorry
var tl = g.length, n, pnestedGrepList = [];
for (n = 0; n < tl; n++) { // if the leader etc. contains a " then you have to use ' instead of "
// pTabList[n] = figure for yourself
}
return "[" + pTabList.join(", ") + "]";
}


----
edit: Sorry, hatte bei copy & paste einmal zu viel gedrückt, so dass das Skript 2x ausgeführt wurde.
Der Code oben ist nun korrigiert.

Viele Grüße
Martin




als Antwort auf: [#526103]
(Dieser Beitrag wurde von Martin Fischer am 11. Apr 2014, 12:17 geändert)

Mehrere Eigenschaften von Absatzformaten auslesen

Martin Fischer
  
Beiträge gesamt: 12413

11. Apr 2014, 12:01
Beitrag # 10 von 12
Beitrag ID: #526105
Bewertung:
(2976 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

Antwort auf: bis auf die for in-Schleife verstehe ich hier zumindest alles


Mit der for in-Schleife greifst Du der Reihe nach gezielt auf die keys des Objekts zu.

Viele Grüße
Martin




als Antwort auf: [#526103]

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

11. Apr 2014, 12:35
Beitrag # 11 von 12
Beitrag ID: #526109
Bewertung:
(2941 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Huch und ich dachte, das wäre ein Dreizeiler ;-)

Dank dir > schau ich mir auch heute Abend an.

Gruß Kai Rübsamen


als Antwort auf: [#526105]

Mehrere Eigenschaften von Absatzformaten auslesen

Kai Rübsamen
Beiträge gesamt: 4660

12. Apr 2014, 11:54
Beitrag # 12 von 12
Beitrag ID: #526128
Bewertung:
(2773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

hab dein Skript im Einzeilenmodus nachvollzogen und halbwegs verstanden, was passiert. Trevors Skript scheint dann schon die fertige Liste zu erzeugen.

Cool, was alles geht, aber (noch) eine Nummer zu hoch für mich ;-)

Gruß Kai Rübsamen


als Antwort auf: [#526109]
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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
01.03.2021 - 05.03.2021

Persönlichkeitsentwicklung

Online
Montag, 01. März 2021, 00.17 Uhr - Freitag, 05. März 2021, 00.18 Uhr

Webinar

Personal Power Coaching - Um was geht es? ​ Potenzialentfaltung: Potenzial entdecken und entfalten Talente entdecken: Deine Talente und Fähigkeiten erkennen und loslegen Gewohnheiten: schlechte Gewohnheiten durch Positive ersetzen Selbstbewusstsein stärken: Dein Bewusstsein stärken Eigendynamik entwickeln: Mehr Erfolg durch Eigenverantwortung & Disziplin Ängste kontrollieren: Ängste als Antrieb nutzen Entscheidungen treffen: Mit mehr Mut an die Sache ran! Lebensenergie steigern: Deine Lebensenergie steigern und aufrechterhalten Ziele erreichen: Ziele setzen und übertreffen! Motivationssteigerung: Mehr Erfolg durch Selbstmotivation Selbstvertrauen: Selbstvertrauen auf- und ausbauen

Details:
https://www.snfa.ch/swiss-personal-power-birolisik

Ja

Organisator: Birol Isik

Kontaktinformation: Birol Isik, E-Mailinfo AT snfa DOT ch

https://www.snfa.ch/swiss-personal-power-birolisik

Neuste Foreneinträge


Optionsfelder abhängig machen von Kontrollkästchen

InDesign CC21 sperrt Taskleiste und Programme

Bilder verschieben sich nach dem Speichern und Kopiern der Datei

Verknüpfung mit Format aufheben

Kursivierung geht bei é und É verloren

Abbildungen auf 100 % bringen

Scriptphänomen alle 16 Steps

Alternative Acrobat Pro

Affinity Designer

Objekte in Texten lassen sich nicht mehr mit Maus auswählen, nurnoch als Text mit Cursor
medienjobs