[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textbreite der aktuellen selection in mm messen und die breite in mm setzen

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

Textbreite der aktuellen selection in mm messen und die breite in mm setzen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

8. Mär 2023, 15:26
Beitrag # 1 von 4
Bewertung:
(5722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe Text in der Auswahl, den ich abhängig von seiner Breite in mm bearbeiten möchte.

Code
var aktAuswahl = app.selection[0]; 


In aktAuswahl ist meine Textselektion drin.

Es geht mir nicht um die Zeilen oder um das Scaling.
Es geht mir um die Info wie breit läuft der Text in mm.
Bei anderen Libs, wie z.B. DynaPDF, kann ich die Laufbreite einfach abfragen.

Ich finde dazu hier im Forum und im Internet nichts.

Vielleicht kann hier einer helfen.
X

Textbreite der aktuellen selection in mm messen und die breite in mm setzen

Kai Rübsamen
Beiträge gesamt: 4684

8. Mär 2023, 16:50
Beitrag # 2 von 4
Beitrag ID: #585667
Bewertung:
(5679 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du könntest z.B. entweder den Text temporär in Pfade konvertieren und erhältst damit ein Objekt, dessen Breite du auslesen kannst oder du liest die insertionPoinsts (erster und letzter) deiner Auswahl aus. Bei erster Variante hast du nur den reinen Buchstaben. Bei der zweiten Variante inkl. Vor- und Nachbreite.


als Antwort auf: [#585666]
Anhang:
Bildschirmfoto 2023-03-08 um 16.48.13.png (71.1 KB)

Textbreite der aktuellen selection in mm messen und die breite in mm setzen

Dirk Becker
Beiträge gesamt: 193

11. Mär 2023, 14:52
Beitrag # 3 von 4
Beitrag ID: #585704
Bewertung:
(5500 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich würde mal die Properties horizontalOffset und endHorizontalOffset anschauen.

Welche Maßeinheit da verwendet wird müsste ich erst experimentieren, app.scriptPreferences.measurementUnits oder einer der anderen Werte in app.viewPreferences . Um Rundungsfehler zu reduzieren, setzt man die normalerweise alle auf POINTS. Zur Konvertierung hilfreich: UnitValue.


als Antwort auf: [#585666]

Textbreite der aktuellen selection in mm messen und die breite in mm setzen

lektorat@blue-panther-books.de
Beiträge gesamt: 7

13. Mär 2023, 11:54
Beitrag # 4 von 4
Beitrag ID: #585707
Bewertung:
(5399 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für diese Idee:
Antwort auf: Ich würde mal die Properties horizontalOffset und endHorizontalOffset anschauen.


Damit habe ich sofort lösen können.
Hier die Finale Version mit der ich den selektieren Text messe und ggf. schmaler setze. Vielleicht hilft das ja dem Nächstem!


Code
var aktAuswahl_autor = app.selection[0]; 

var hOff_start = aktAuswahl_autor.horizontalOffset;
var hOff_end = aktAuswahl_autor.endHorizontalOffset;
var hOff_div = hOff_end-hOff_start;
var hOff_div = hOff_div*10;
var hOff_div = Math.round(hOff_div);

// meine Maxbreite in mm
var max = 185;

// Umrechnung meiner Maxbreite im Verhältnis zur Realbreite
var scale = max/hOff_div*100;

// alert ("|"+ hOff_start+"|"+ hOff_end+"|"+ hOff_div+"|"+ scale+"|"+ zeilen+"|");

// wenn gestaucht werden muss also scale < 100 dann stauchen.
if (scale < 100)
{
aktAuswahl_autor.horizontalScale = scale;
}



als Antwort auf: [#585704]
X