[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt insertionPoints und basline (CS6, Win7)

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

insertionPoints und basline (CS6, Win7)

cwenet
Beiträge gesamt: 1139

16. Feb 2014, 13:03
Beitrag # 1 von 6
Bewertung:
(1207 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

folgendes Script platziert eine Fläche unter den ausgewählten Text:

Code
#target InDesign 
///////////////////////////////////////////////////////////////////////////
var korrektur_oben = 15;
var korrektur_unten = 8;
var bezeichner = "tpbgc_Rectangle";
//////////////////////////////////////////////////////////////////////////

//Maßeinheit vorher merken
var myOldViewPrefs = storeViewPrefs();

//alert(app.selection[0].constructor.name);

if (app.selection.length > 0 && app.selection[0].constructor.name == "Text") {


//Objektformat erstellen falls nicht vorhanden
if( app.activeDocument.objectStyles.item( bezeichner) == null )
{

var myDocument = app.activeDocument;

var props = {
name : bezeichner,
enableFill : true,
enableStroke : true,
fillColor: "Black",
fillTint: 10,
strokeColor : myDocument.swatches.item(0),
}
var myPlainTextObjectStyle = myDocument.objectStyles.add(props);
}

//parentTextFrame Koordinaten auslesen
var myTextFrame = app.selection[0].parentTextFrames[0];
var oben = myTextFrame.geometricBounds[0];
var links = myTextFrame.geometricBounds[1];
var unten = myTextFrame.geometricBounds[2];
var rechts = myTextFrame.geometricBounds[3];

//Fläche platzieren
var myPage = app.selection[0].parentTextFrames[0].parentPage;
var myRectangle = myPage.rectangles.add();
myRectangle.label = bezeichner;
myRectangle.sendToBack();

//Flächengröße einstellen
var ErsteZeile = app.selection[0].insertionPoints.item(0);
var LetzteZeile = app.selection[0].insertionPoints.item(-1);
myRectangle.geometricBounds = [ErsteZeile.baseline-korrektur_oben, links, LetzteZeile.baseline+korrektur_unten, rechts];

//alert(LetzteZeile.baseline);

//Objektformat zuweisen
var theOStyles = app.activeDocument.objectStyles.everyItem().name;
var myOStyleName = bezeichner;
var myOStyle = app.activeDocument.objectStyles.item(myOStyleName);
myRectangle.applyObjectStyle(myOStyle, true);


} else {

alert('Bitte Text auswählen');
exit();

}

//Maßeinheit wieder zurückstellen, so wie es war
restoreViewPrefs( myOldViewPrefs );

///////////////////////////////////////////////////////////////////////////
function storeViewPrefs()
{
with ( app.activeDocument )
{
var myHorizontalMeasurementUnits = viewPreferences.horizontalMeasurementUnits;
var myVerticalMeasurementUnits = viewPreferences.verticalMeasurementUnits;
var myRulerOrigin = viewPreferences.rulerOrigin;
var myZeroPoint = zeroPoint;
viewPreferences.horizontalMeasurementUnits = MeasurementUnits.POINTS;
viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS;
viewPreferences.rulerOrigin = RulerOrigin.pageOrigin;
zeroPoint = [0,0];
}
return { h:myHorizontalMeasurementUnits, v:myVerticalMeasurementUnits, r:myRulerOrigin, z:myZeroPoint }
}

function restoreViewPrefs ( p )
{
with ( app.activeDocument )
{
viewPreferences.horizontalMeasurementUnits = p.h;
viewPreferences.verticalMeasurementUnits = p.v;
viewPreferences.rulerOrigin = p.r;
zeroPoint = p.z;
}
}
///////////////////////////////////////////////////////////////////////////



Wenn ich den Text wie in Bild 1 gezeigt auswähle funktioniert es prima.
https://dl.dropboxusercontent.com/u/80200772/select_01.png

Sobald ich aber den Text wie in Bild 2 gezeigt markiere, wird die Fläche um eine Zeile höher.
https://dl.dropboxusercontent.com/u/80200772/select_02.png

Ich komme nicht drauf, warum das so ist.
Ein Demodok anbei:
https://dl.dropboxusercontent.com/u/80200772/basline.idml

Über Hilfe freue ich mich
Christoph

(Dieser Beitrag wurde von cwenet am 16. Feb 2014, 13:07 geändert)
X

insertionPoints und basline (CS6, Win7)

Dirk Becker
Beiträge gesamt: 193

16. Feb 2014, 14:55
Beitrag # 2 von 6
Beitrag ID: #523705
Bewertung:
(1188 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der InsertionPoint liefert meist die Werte des folgenden Zeichens, welches sich im zweiten Fall schon im nächsten Absatz befindet.

Noch witziger wird es, wenn der IP an der Grenze von zwei verketteten Rahmen liegt. Solche IPs liegen dann zum Beispiel in zwei TextContainern ...

Ich würde aus der Baseline noch immer den Baseline Shift rausrechnen, um auf die allgemeine Baseline der Zeile zu gelangen. Also Hochstellung usw. Achtung, die verwenden unterschiedliche Units ...

Grüße,
Dirk


als Antwort auf: [#523702]

insertionPoints und basline (CS6, Win7)

Kai Rübsamen
Beiträge gesamt: 4684

16. Feb 2014, 19:12
Beitrag # 3 von 6
Beitrag ID: #523709
Bewertung:
(1131 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Christoph, mir sind insgesamt ein paar Sachen aufgefallen, die ich anders machen würde. Ob das aber unbedingt richtiger ist … ;-)

Ansonsten habe ich noch nie Sachen wie "baseline" gescriptet. Es sieht aber so aus, dass dein Problem gelöst werden kann, wenn du nicht vom insertionPoint sondern von der line ausgehst. Für einen ersten Test würde ich mal deine korrekturen oben u. unten rausnehmen. Mir würde aber auch eine Korrektur später für links u. rechts notwendig erscheinen.

Code
var korrektur_oben = 2;  
var korrektur_unten = 2;
var bezeichner = "tpbgc_Rectangle";

if ( !( app.selection.length == 1 && app.selection[0].characters.length > 0 && app.selection[0].hasOwnProperty( "baseline" ) ) ) {
alert( "Bitte Text auswählen" );
exit();
}

var curDoc = app.activeDocument;
var curSel = app.selection[0];

// Objektformat erstellen falls nicht vorhanden
if( !curDoc.objectStyles.item( bezeichner ).isValid ) {
var props = {
name: bezeichner,
enableFill: true,
enableStroke: true,
fillColor: "Black",
fillTint: 10,
strokeColor: "None",
}
var oStyle = curDoc.objectStyles.add( props );
}
else {
var oStyle = curDoc.objectStyles.item( bezeichner );
}

// parentTextFrame Koordinaten auslesen
var tf = curSel.parentTextFrames[0];
var gB = tf.geometricBounds;
var links = gB[1];
var rechts = gB[3];

// Fläche platzieren
var curPage = tf.parentPage;
var curRect = curPage.rectangles.add( { name: bezeichner } );
curRect.sendToBack();
curRect.appliedObjectStyle = oStyle;

// Flächengröße einstellen
var ErsteZeile = curSel.lines[0].baseline - curSel.ascent;
var LetzteZeile = curSel.lines[-1].baseline;
curRect.geometricBounds = [ ErsteZeile - korrektur_oben, links, LetzteZeile + korrektur_unten, rechts ];



als Antwort auf: [#523705]
(Dieser Beitrag wurde von Kai Rübsamen am 16. Feb 2014, 19:23 geändert)

insertionPoints und basline (CS6, Win7)

cwenet
Beiträge gesamt: 1139

17. Feb 2014, 08:05
Beitrag # 4 von 6
Beitrag ID: #523718
Bewertung:
(1080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Dirk und Kai,

danke für die Antworten. An die Tief- u. Hochstellugnen hatte ich noch garnicht gedacht.
Über die line klappt es prima. Super.

Schönen Tag.
Christoph


als Antwort auf: [#523709]

insertionPoints und basline (CS6, Win7)

Uwe Laubender
Beiträge gesamt: 5321

17. Feb 2014, 08:17
Beitrag # 5 von 6
Beitrag ID: #523720
Bewertung:
(1076 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christoph!
Ja, der Hinweis von Kai, falls ich das richtig interpretiere, eine Begrenzung von links und rechts zu berechnen, wäre sinnvoll bei Textrahmen mit mehr als einer Spalte.

Das ganze Konzept geht natürlich in die Hose, wenn Textrahmen oder Text gedreht sind. (Siehe Screenshot)


als Antwort auf: [#523718]
Anhang:
GedrehterTextrahmenMitZweiSpalten.png (48.7 KB)

insertionPoints und basline (CS6, Win7)

cwenet
Beiträge gesamt: 1139

18. Feb 2014, 08:01
Beitrag # 6 von 6
Beitrag ID: #523767
Bewertung:
(1022 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

das ist richtig. Für mehrspaltigen Text müsste ich ich weitere Berechnungen anstellen.
So bin ich erstmal zufrieden. Gedrehte Texte kommen so gut wie nie vor.
Da ja Tabellen immer noch nicht umbrechen können, finde ich diese Lösung am besten.

Grüße
Christoph


als Antwort auf: [#523720]
X

Aktuell

PDF / Print
IWS-Logo_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
20.06.2024

Online
Donnerstag, 20. Juni 2024, 15.00 - 15.45 Uhr

Webinar

Etiketten-Workflows gehören zu den anspruchsvollsten in der grafischen Industrie. Ihre PDF-Dateien sind oft sehr komplex und erfordern eine spezielle Vorbereitung. pdfToolbox bietet viele Möglichkeiten, um diese Arbeit zu automatisieren. Nehmen Sie an unserem Webinar "pdfToolbox für den Etikettendruck" teil und lernen Sie einige der Funktionen kennen, die Ihren Etiketten-Workflow effizienter gestalten. Einige der Bereiche, die Sie kennenlernen werden, sind: Beschnitt erzeugen Beim Etikettendruck ist das Druckmotiv oft nicht rechteckig. Lernen Sie, wie Sie einen passenden Beschnitt für alle Arten von Formen hinzufügen können. Produktionsreife Dateien erstellen nutzen Sie bereits vorliegende Inhalte oder Seiteninformationen, um eine Weißform hinter dem Seiteninhalt hinzuzufügen, eine passgenaue Lackform für bestimmte Objekte zu erzeugen oder eine Stanzlinie mit korrektem Sonderfarbnamen zu erstellen. Ausschießen, Step & Repeat, N-Up Mit der Ausschieß-Engine von pdfToolbox lassen sich Seiten zu größeren Druckbögen zusammenfassen, wobei verschiedene Layouts und Komplexitäten unterstützt werden. Hochwertige Freigabe-Bögen Erstellen Sie automatisch Freigabe-Bögen mit Vorschaubildern Ihrer Produktionsdatei und Auftragsdaten aus dem MIS. Qualitätskontrolle pdfToolbox enthält Standard-Preflight-Profile, die die grundlegenden Anforderungen an PDF-Dateien in Etiketten-Workflows abdecken. Prüfen Sie ob Ihre Dokumente internationalen Standards wie ISO PDF/X oder GWG (Ghent Workgroup) Spezifikationen entspricht. Verpackungs- und etikettenspezifische Vorgaben, wie der ISO-Standard „Processing Steps“, werden ebenfalls unterstützt.

kostenlos

Ja

Organisator: callassoftware

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

pdfToolbox für den Ettikettendruck
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

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

So optimieren Sie Ihren LFP-Workflow