[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Skript um Schriften aus Dokument auszulesen?

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

Skript um Schriften aus Dokument auszulesen?

jochenknochen
Beiträge gesamt: 41

23. Aug 2011, 11:39
Beitrag # 1 von 19
Bewertung:
(119738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

hat jemand zufällig ein Skript, mit dem es möglich ist,
die verwendeten Schriten eines Dokuments auszulesen?
Gern Ausgabe in eine Textdatei :)

mfg
J.K.
X

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

14. Okt 2011, 21:32
Beitrag # 2 von 19
Beitrag ID: #482416
Bewertung:
(119511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich bin gerade zufällig über Deine Skriptlösung hierzu im Premiumbereich gestolpert und würde gerne wissen, ob sich die Auflistung in der Textdatei nur auf Schriften vom Typ "TrueType" einschränken ließe? Hierbei sollten wenn möglich nur "reine" TrueTypes gelistet werden, keine OpenType-TrueTypes.

MfG
Thomas


als Antwort auf: [#478686]

Skript um Schriften aus Dokument auszulesen?

Martin Fischer
  
Beiträge gesamt: 12783

15. Okt 2011, 11:02
Beitrag # 3 von 19
Beitrag ID: #482422
Bewertung:
(119466 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

Du könntest mir mit einem Link zum Skript auf die Sprünge helfen.

Antwort auf: ob sich die Auflistung in der Textdatei nur auf Schriften vom Typ "TrueType" einschränken ließe?


Ja, das sollte möglich sein.
Laut Dokumentation lassen sich folgende Fonttypen ermitteln:
Code
FontTypes.TYPE_1 
FontTypes.TRUETYPE
FontTypes.CID
FontTypes.ATC
FontTypes.BITMAP
FontTypes.OCF
FontTypes.OPENTYPE_CFF
FontTypes.OPENTYPE_CID
FontTypes.OPENTYPE_TT
FontTypes.UNKNOWN


Wie Du siehst, wird zwischen Truetype und unterschiedlichen OpenType-Typen (so auch OpenType_TT) unterschieden.

Gib mir den Link und ich setz Dir den Filter auf TrueType.

Oder versuch's einstweilen damit:
Code
if (app.documents.length > 0) 
get_tt(app.activeDocument)

function get_tt(d)
{
var _tt = new Array;
var doc_fonts = d.fonts.everyItem().getElements();
for (var i = 0; i < doc_fonts.length; i++)
{
if (doc_fonts[i].fontType == FontTypes.TRUETYPE) // Filter auf TrueType
_tt.push(doc_fonts[i].name);
}
if (_tt.length > 0)
{
_tt.sort();
var _f = write_file(File('~/Desktop/TrueType_of_' + app.activeDocument.name.replace(/\.indd$/i,'') + '.txt'), _tt.join('\r'));
_f.execute();
}
else
alert('Keine TrueType-Fonts vorhanden.')
}

function write_file ( _file, _data )
{
if (! Folder(_file.path).exists)
Folder(_file.path).create();
_file.open( 'w' );
_file.encoding = 'UTF-8';
_file.writeln ( _data );
_file.close();
return (_file);
}



als Antwort auf: [#482416]

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

16. Okt 2011, 15:54
Beitrag # 4 von 19
Beitrag ID: #482437
Bewertung:
(119404 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

und sorry: mein Post bezog sich auf "Liste mit Schriften im Dokument auslesen"zu finden im Premiumbereich hier:
http://indesign.hilfdirselbst.ch/...kument-ausgeben.html

Allerdings hatte ich soo schnell nicht mit Antworten gerechnet - noch dazu am Wochenende. ;o)

Deinen Code kann ich leider erst Anfang der Woche im Büro testen. So als Non-Scripter sehe ich auf den ersten Blick nur einen Unterschied in der Anzahl der verwendeten Funktionen und der Einschränkung auf TrueTypes im hier geposteten Code - wie von mir gewünscht. Ich wollte mit meiner Frage vor allem abklären, ob generell eine Unterscheidung der Schrittypen per JS möglich ist.

Meine derzeitige Aufgabenstellung in Kurzform lautet:
Es sollen nach und nach alle verwendeten "reinen" TrueType-Schriften einmalig, sowie deren zugehörige Dokumentnamen in einer separaten Textdatei gelistet werden.

Das Ideal hierfür wäre vmtl. ein Skript, welches in ID CS4.x und CS5.x als StartupSkript mit einem EventListener vor jedem "Speichern" abläuft. (Nach "Öffnen" könnten ja evtl. noch weitere TrueTypes eingefügt werden; auf den Fall "Speichern unter" verzichte ich der Einfachheit halber an dieser Stelle.) Das Skript sollte - zuverlässig und unbemerkt - alle "reinen" TrueType-Schriften in jedem zu sichernden Dokument in einer externen Textdatei auf dem eigenen Rechner speichern. Sinnigerweise sollte hierbei fontname<TAB>fulldocumentname<Return> protokolliert und hierfür immer ein und dieselbe Textdatei verwendet werden, die dadurch stetig wächst. Hierbei entstehende, doppelte (d.h. identische) Zeilen zu verhindern, wird mir persönlich sicher nicht gelingen, weshalb ich versuchen würde, am Ende sozusagen halbautomatisch - mit Hilfe eines geeigneten Textverarbeitungsprogramms - die Dubletten zu entfernen. Der Anwender selbst soll beim Sammeln der TrueTypes mit keinerlei Meldungen "belästigt" werden.

Aber wie gesagt, weiter testen kann ich erst die kommenden Tage (sofern es die Zeit während Produktion hoffentlich zulässt) ;o/

Schönen Sonntag!
Gruß Thomas


als Antwort auf: [#482422]

Skript um Schriften aus Dokument auszulesen?

WernerPerplies
Beiträge gesamt: 2762

16. Okt 2011, 16:32
Beitrag # 5 von 19
Beitrag ID: #482438
Bewertung:
(119393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

Zitat fontname<TAB>fulldocumentname<Return> protokolliert und hierfür immer ein und dieselbe Textdatei verwendet werden, die dadurch stetig wächst. Hierbei entstehende, doppelte (d.h. identische) Zeilen zu verhindern, wird mir persönlich sicher nicht gelingen, weshalb ich versuchen würde, am Ende sozusagen halbautomatisch - mit Hilfe eines geeigneten Textverarbeitungsprogramms - die Dubletten zu entfernen.


Lese die gesamte Textdatei in ein Array ein, prüfe vor der Ergänzung des neuen Eintrags, ob der Eintrag schon vorhanden ist:
if (array.indexOf(Eintrag) == -1) array.push(Element) // nicht vorhanden
else // tue nichts

ergänzend kannst Du das Array dann noch sortieren, fügst die Elemente wieder zeilenweise zusammen und speicherst den erhaltenen String komplett wieder in die Datei.

Alternativ kannst Du auch ein zweidimensionales Array aufbauen:
Zeilen:
Fontname, Array(Dokumente)
.
.
.
Fontname, Array(Dokumente)

Dann suchst die Einträge in einer Schleife:
Suche Font
wenn gefunden, suche in Dokumente Dokument
wenn nicht gefunden, ergänze Dokument und sortiere SubArray
Wenn Font nicht gefunden, ergänze Array mit Font und Dokument

Sortiere gesamtes Array nach Fonts und speichere als Textdatei ab.

Alternativ drehst Du die Sache um, und erzeugst Einträge mit den Fonts für jedes Dokument.

Zeilen:
Dokument, Array(Fonts)
.
.
.
Dokument, Array(Fonts)


als Antwort auf: [#482437]

Skript um Schriften aus Dokument auszulesen?

Martin Fischer
  
Beiträge gesamt: 12783

16. Okt 2011, 18:45
Beitrag # 6 von 19
Beitrag ID: #482440
Bewertung:
(119368 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

nachdem H. Perplies Interesse zeigt, die Sache in seine Hand zu nehmen und mit der vorgeschlagenen Skizze zu einem gelungenen Ende zu führen, will ich dabei nicht im Weg stehen und gehe einen Schritt zur Seite.

Viel Erfolg!


als Antwort auf: [#482437]

Skript um Schriften aus Dokument auszulesen?

WernerPerplies
Beiträge gesamt: 2762

16. Okt 2011, 19:16
Beitrag # 7 von 19
Beitrag ID: #482441
Bewertung:
(119357 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

da hast Du wohl etwas missverstanden.

Für mich klang das so, das Thomas selbst programmieren will, und mein Vorschlag sollte nur zeigen, wie er eventuell die Nacharbeit im Editor verweiden kann.

Also wenn Du programmieren willst, bitte sehr. ;-)


als Antwort auf: [#482440]

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

16. Okt 2011, 21:06
Beitrag # 8 von 19
Beitrag ID: #482444
Bewertung:
(119329 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oje, bitte keinen Streit vom Zaun brechen wegen mir ;o) ... ihr habt beide Recht:
Natürlich würde ich das beschriebene Skript gerne selbst auf die Beine stellen, bin allerdings wie schon erwähnt ziemlicher Script-Anfänger und ein "kleines Licht" in einem "System", in welchem die Tagesproduktion stets Vorrang hat. Zeit und Geld in (auf den ersten Blick) scheinbar "Unproduktives", möchte man nicht investieren. Zuhause steht mir leider die entsprechende Software nicht zur Verfügung, so dass sich im Büro nur selten die Zeit findet, Eigenes zu scripten. In der Vergangenheit habe ich mir zwar schon diverse Scriptschnipsel aus dem Web kopiert, nach meinen Bedürfnissen abgeändert und neu aneinander gereiht. Bleibt hierfür nur alle paar Monate mal Zeit, so ist's eben aussichtslos, den Syntax und die Zusammenhänge vollständig zu verstehen. Für mich einziger Ausweg aus der Misère, bleibt somit das Sammeln von und Nachfragen zu fehlenden Puzzleteilen bzw. Skiptcodes, welche ich dann versuche, in korrekter Reihenfolge zusammen zu führen. Motivation hierfür ist meist alleinig die Freude über das Funktionieren von selbstgestrickten Automatismen und das Zur-Verfügung-stellen für Kollegen, welche leider allzu oft auf "traditionelle" - in meinen Augen meist überflüssige - Handarbeit setzen und "neuartigen Automatismen" mit der Begründung fehlender Kontrolle grundsätzlich misstrauen.
...doch nun Schluss mit dem Jammern und zurück zum Thema:

Ich kann Werner's Skizze zwar logisch nachvollziehen, wäre aber niemals selbst in der Lage, dies in Skriptform umzusetzen. Martin's Skriptcode auszuprobieren, ihn zu analysieren, zu verstehen und mit anderen Codeteilen zu kombinieren, fällt mir persönlich wesentlich leichter. Das Suchen nach und Schreiben von gefundenen TrueType-Namen in die .txt kann ich in Martin's Code schon in der Theorie nachvollziehen. Eine EventListener-Routine hatte ich vor 1-2 Jahren bereits mal verbaut und traue mir zu, diese zu intergrieren. Mit Arrays, deren Prüfung und Sortierung habe ich bisher leider keinerlei Erfahrungen und werde mir hierbei schwertun. Dabei gefällt mir Werner's Ansatz mit dem zweidimensionalen Array und mehreren, gelisteten Dokumentnamen sehr gut, da sich hieraus am Ende Rückschlüsse auf die Häufigkeit der verwendeten TrueType-Schrift ziehen ließen.

Fazit: Gerne hätte ich diesen Job hier ausgeschrieben, wenn ich denn in der entsprechenden Position dazu wäre.
So werde ich - wenn man mich lässt - mein Bestes geben, die hier gezeigten Ideen selbst umzusetzen, um Effizienz für meine eigene Arbeitsweise und die Allgemeinheit (intern und extern) zu schaffen. Im Falle von Problemen greife ich vmtl. wieder auf das hier "gebündelte" Know-How zurück. Gerne poste ich eines Tages das Endergebnis hier.

"Herzlichen Dank" für Eure bisherige Hilfe!!!
Gruß Thomas


als Antwort auf: [#482441]

Skript um Schriften aus Dokument auszulesen?

olaflist
Beiträge gesamt: 1400

17. Okt 2011, 01:18
Beitrag # 9 von 19
Beitrag ID: #482449
Bewertung:
(119295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Während sich andere im die Programmierung kappeln :-) , hätte ich eine ganz andere Frage (aus reiner Neugier):

was ist der Grund, die "alten" TrueType Fonts auszusondern?

Olaf


als Antwort auf: [#482444]

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

17. Okt 2011, 08:23
Beitrag # 10 von 19
Beitrag ID: #482451
Bewertung:
(119259 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hr. Druemmer,

nach meiner derzeitigen Kenntnislage gibt es hauptsächlich zwei Gründe für das Verbannen der veralteten TrueTypes (natürlich nur aus den Layoutdaten, nicht innerhalb PDF):
1. Schreiben mehrere Kunden uns vor, demnächst nur noch OpenType-Schriften verwenden zu dürfen; mit einer Übergangsfrist, in welche zumindest PS-Type1 noch geduldet werden. So sollen im 1. Step also TT-Schriften sofort verboten und während der Übergangszeit nach und nach auch die PS-Type1 eliminiert werden.
2. Hänge ich immer noch an dem Acrobat9/Toolbox5-Problem (genauer an den eingesetzten pdfToolbox 5-Modulen in PowerSwitch10 Update 1), welches in meinen Tests z.T. Sonderzeichen in älteren TrueType-Schriften zerschießt (stattdessen Leeraum oder Kästchen). Dieses Risiko möchte ich innerhalb eines neuen PDF-Workflows für die Produktion mit PowerSwitch 10 und pdfToolbox 5 nicht riskieren. Siehe hierzu auch meinen Post unter http://www.hilfdirselbst.ch/...orum.cgi?post=480848

Ich hoffe nicht, dass ich bei meinen Tests einer defekten oder LowCost-Schrift auf den Leim gegangen bin. Auch wurde mir via Impressed sowohl der Fehler (nur in den Mac-Versionen) und die Meldung an Callas bestätigt (Impressed-Supportmails 26./27.09.2011).

Halten Sie das Verbannen aller TrueTypes in meinem Fall für übertrieben?

MfG
Thomas Kittel


als Antwort auf: [#482449]

Skript um Schriften aus Dokument auszulesen?

WernerPerplies
Beiträge gesamt: 2762

17. Okt 2011, 09:46
Beitrag # 11 von 19
Beitrag ID: #482455
Bewertung:
(119227 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

ich habe hier jetzt mal meinen Vorschlag in ein Beispielskript gepackt.
http://www.weepee.de/...ic.php?f=10&t=28
Vielleicht kannst Du den Code mit Martins Vorschlag verbinden.
Viel Erfolg.


als Antwort auf: [#482444]

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

17. Okt 2011, 14:43
Beitrag # 12 von 19
Beitrag ID: #482484
Bewertung:
(119179 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hr. Perplies,

vielen Dank für den bereitgestellten Code, welchen ich erwartungsgemäß noch gar nicht verstehe ;o)
Sollte dieser Teil bereits eigenständig lauffähig sein?
Falls ja, gelingt mir unter CS5 Mac kein erfolgreicher Testlauf. Welche Datei muss ich per Benutzerauswahl auswählen: die Textdatei worin die Werte gespeichert werden sollen oder das zu durchsuchende Indesign-Dokument?

MfG
Thomas


als Antwort auf: [#482455]

Skript um Schriften aus Dokument auszulesen?

WernerPerplies
Beiträge gesamt: 2762

17. Okt 2011, 15:08
Beitrag # 13 von 19
Beitrag ID: #482487
Bewertung:
(119165 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Kittel,

ich würde die Fragen gerne bei mir beantworten, da können wir das Skript Stück für Stück durchgehen, und ich kann einzelne Stellen mit eingefügten Screenshots verdeutlichen.

Aber soviel vorweg, das Skript ist eine Umsetzung meiner obigen Beschreibung ohne irgendeinen Bezug auf Fonts oder InDesign.

Sie können auch den Eintrag #target InDesign löschen, das Skript läuft auch ohne InDesign ausschließlich im ExtendScript Toolkit.

Wenn ich ein fremdes Skript verstehen will, führe ich es in der Regel zumindestens teilweise im Einzelschrittverfahren aus.

Um Ihnen das zu ermöglichen, habe ich die Datenmenge klein gehalten.

Das Skript tut das, was der Name sagt:

Wählen sie die Musterdatei aus, dann werden die Einträge des Arrays entries2Add hinzugefügt, das Ergebnis sortiert und dann das Ergebnis wieder in die Musterdatei geschrieben.

Danach hat die Musterdatei den neuen Inhalt.

Als, weitere Fragen bitte in meinem Forum.


als Antwort auf: [#482484]

Skript um Schriften aus Dokument auszulesen?

t-kittel
Beiträge gesamt: 254

17. Okt 2011, 15:22
Beitrag # 14 von 19
Beitrag ID: #482491
Bewertung:
(119156 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry, hatte ich total übersehen, dass Ihr Eintrag innerhalb eines Forums stand – kommt davon, wenn man immer nur schnell "zwischen Tür und Angel" testet.
Okay, das Grundprinzip habe ich nun verstanden, aber der auf die Schnelle gestetest bleibt der Schreibfehler bestehen, auch ohne Indesign. Da erwarte ich wohl einfach zu schnell zu viel. Werde dann erstmal die Rechtevergabe checken müssen.

Für mich ist das wie gesagt völliges Neuland und ich werde einige Zeit investieren müssen. Alle weiteren Fragen dann zu seiner Zeit ... und in Ihrem Forum. :o)

Vielen Dank bis hierher !!!


als Antwort auf: [#482487]

Skript um Schriften aus Dokument auszulesen?

WernerPerplies
Beiträge gesamt: 2762

17. Okt 2011, 15:51
Beitrag # 15 von 19
Beitrag ID: #482495
Bewertung:
(119138 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Musterdatei gehört natürlich in Verzeichnis mit Schreibrechten.


als Antwort auf: [#482491]
X