[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textlänge in mm oder pt?

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

Textlänge in mm oder pt?

sleepless
Beiträge gesamt: 152

7. Dez 2010, 15:55
Beitrag # 1 von 9
Bewertung:
(3846 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe mal wieder ein kleines Problem: Ich gebe per Skript einen Textrahmen aus, in dem ein einzeiliger Text steht (meistens ein Preis; z.B. 99.99). Die x- und y-Koordinate des Text habe ich, die Höhe des Textes auch, aber wie kann ich mir Breite des Textes in eine Variable schreiben?
Mit txtFrame.texts.item(0).length; bekomme ich nur die Anzahl der Buchstaben, aber ich bräuchte die Länge, um den Text durchzustreichen (von links unten nach rechts oben). Da der Preis aber von einer Datenbank übergeben wird, ebenso wie die Schriftart und Schriftgröße, muss ich die Koordinaten errechnen. Das letzte Puzzlesteinchen, das mir fehlt, ist ein Befehl, der die Textlänge in mm oder pt oder auch px zurückgibt.

Vielen Dank für Eure Mühe,
stephan
X

Textlänge in mm oder pt?

Martin Fischer
  
Beiträge gesamt: 12783

7. Dez 2010, 16:24
Beitrag # 2 von 9
Beitrag ID: #459146
Bewertung:
(3832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

wenn ich Dich richtig verstehe, dann willst Du nicht die Distanz eines bestimmt,en Textes vom Beginn des Buchstabens a bis zum Ende des Buchstabens b ermitteln, sondern die Breite eines Textrahmens.

Ein Textrahmen hat die Eigenschaft geometricBounds.
Darin sind (in einem Array) die beiden Eckpunkte links oben und rechts unten definiert: [y1, x1, y2, x2],

Die Breite eines Textrahmens ist die Distanz zwischen x1 von x2.
Ausgegeben wird Dir in dem aktuell eingestellten Maßstab.

Zum Umrechnen von einem Maßsystem ins andere gehst Du am besten so vor:
1. altes Maßsystem sichern, damit es später wieder eingestellt werden kann;
2. neues Basismaßsystem setzen;
3. Berechnungen durchführen, ggf. Werte über Dreisatz in anderes Maßsystem konvertieren;
4. altes Maßsystem wieder herstellen.

Zum Sichern und Wiederherstellen der Maßeinheiten siehe die Beispielfunktion setupViewPrefs() von Dirk Becker.


als Antwort auf: [#459145]
(Dieser Beitrag wurde von Martin Fischer am 7. Dez 2010, 16:30 geändert)

Textlänge in mm oder pt?

sleepless
Beiträge gesamt: 152

7. Dez 2010, 16:33
Beitrag # 3 von 9
Beitrag ID: #459148
Bewertung:
(3829 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
Zitat wenn ich Dich richtig verstehe, dann willst Du nicht die Distanz eines bestimmt,en Textes vom Beginn des Buchstabens a bis zum Ende des Buchstabens b ermitteln, sondern die Breite eines Textrahmens.

Nein, leider nicht. Ich will tatsächlich die Breite des Textes im Rahmen bestimmen. Natürlich könnte ich den Rahmen mit frameToContent auf die Breite bringen und dann auslesen, aber dann müsste ich ihn auch wieder zurückstellen. Ich dachte, evtl. gibt es da ja eine andere Möglichkeit, da InDesign ja eigentlich weiß, wie breit der Text ist (sonst könnte es ja den Rahmen auch nicht anpassen)...

Gruß
stephan


als Antwort auf: [#459146]

Textlänge in mm oder pt?

Hans Haesler
  
Beiträge gesamt: 5826

7. Dez 2010, 16:58
Beitrag # 4 von 9
Beitrag ID: #459153
Bewertung:
(3811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

vielleicht hilft das:

Code
var txtFrame = app.documents[0].textFrames[0]; 
var pos1 = txtFrame.texts.item(0).insertionPoints[0].horizontalOffset;
var pos2 = txtFrame.texts.item(0).insertionPoints[-1].horizontalOffset;
alert (pos2-pos1);

Gruss, Hans


als Antwort auf: [#459148]

Textlänge in mm oder pt?

sleepless
Beiträge gesamt: 152

8. Dez 2010, 08:57
Beitrag # 5 von 9
Beitrag ID: #459192
Bewertung:
(3742 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ja, das funktioniert wunderbar. Allerdings verstehe ich den Code nicht ganz. insertionPoints[] ist, glaube ich,
der Stand des Cursors und [0] wahrscheinlich die erste Position. Aber wieso [-1]?

Vielen Dank auch
stephan


als Antwort auf: [#459153]

Textlänge in mm oder pt?

Hans Haesler
  
Beiträge gesamt: 5826

8. Dez 2010, 10:07
Beitrag # 6 von 9
Beitrag ID: #459195
Bewertung:
(3726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

bitteschön.

Mit -1 kann in vielen Fällen das letzte Objekt angesprochen werden.

Im vorliegenden Beispiel ist das der letzte Einfügungspunkt der Textkette. Das -1 ist praktisch, weil man nicht immer weiss, wieviele Buchstaben die Zeile enthält.

Führe bitte Folgendes aus: Ein neues Dokument, Textrahmen aufziehen, das Wort test tippen. Dann dieses Script starten:

Code
var txtFrame = app.documents[0].textFrames[0]; 
var nPos = txtFrame.texts.item(0).insertionPoints.length;
alert (nPos);

Es wird 5 angezeigt: Anzahl Buchstaben plus eins. Weil zwischen jedem Buchstaben ein Einfügungspunkt ist und auch am Anfang und am Ende der Textkette.

Man könnte also die Anzahl Einfügepunkte feststellen, davon 1 abziehen (weil JavaScript bei Null zu zählen beginnt) und das Ergebnis anstelle des -1 einsetzen:

Code
var txtFrame = app.documents[0].textFrames[0]; 
var nPos = (txtFrame.texts.item(0).insertionPoints.length)-1;
var pos1 = txtFrame.texts.item(0).insertionPoints[0].horizontalOffset;
var pos2 = txtFrame.texts.item(0).insertionPoints[nPos].horizontalOffset;
alert (pos2-pos1);


Noch etwas: Vielleicht möchtest Du ein Ergebnis mit weniger Nachkommastellen:

Code
var txtFrame = app.documents[0].textFrames[0]; 
var pos1 = txtFrame.texts.item(0).insertionPoints[0].horizontalOffset;
var pos2 = txtFrame.texts.item(0).insertionPoints[-1].horizontalOffset;
var txtL = (Math.floor(((pos2-pos1)*10)+.5))/10;
alert (txtL);

Das +.5 rundet nach oben. Für zwei Nachkommastellen *100 und /100 einsetzen. Und für drei *1000 und /1000.

Gruss, Hans


als Antwort auf: [#459192]

Textlänge in mm oder pt?

sleepless
Beiträge gesamt: 152

8. Dez 2010, 10:47
Beitrag # 7 von 9
Beitrag ID: #459204
Bewertung:
(3708 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

wow, so ist das also. Ich muss zugeben, ich bin nicht gerade der große Skripter vor dem Herrn; aber ich finde langsam Gefallen daran, vor allem dann, wenn es funktioniert. *smile*
Ich habe mich auch schon nach Literatur umgesehen, bin aber noch nicht weit gekommen. Hast Du vielleicht einen Tipp für Anfänger? Irgendwie komme ich auch mit der Hilfe im ExtendScript Toolkit nicht zurecht; ich finde nie das, was ich brauche...

Na, dann mach ich jetzt mal weiter, vielen Dank nochmal
Stephan


als Antwort auf: [#459195]

Textlänge in mm oder pt?

Hans Haesler
  
Beiträge gesamt: 5826

8. Dez 2010, 11:36
Beitrag # 8 von 9
Beitrag ID: #459207
Bewertung:
(3693 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

Literatur zu diesem Thema? Erste Wahl ist sicher die deutsche Übersetzung (durch Martin Fischer) von Peter Kahrels "Scripting InDesign with JavaScript". Als TecFeed herunterladen bei O’Reilly: InDesign mit JavaScript automatisieren

Das ESTK konsultiere ich nur ausnahmsweise. Viel praktischer ist der InDesign JavaScript Reference Guide von jongware.

Gruss, Hans


als Antwort auf: [#459204]

Textlänge in mm oder pt?

sleepless
Beiträge gesamt: 152

8. Dez 2010, 12:35
Beitrag # 9 von 9
Beitrag ID: #459215
Bewertung:
(3671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

vielen Dank. Werde ich mir beides heute abend mal anschauen.

Schönen Tag noch
stephan


als Antwort auf: [#459207]
X

Aktuell

PDF / Print
enfocus_300

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!