hilfdirselbst.ch
Facebook Twitter gamper-media
Stephan_M m
Beiträge: 464
16. Okt 2007, 11:33
Beitrag #1 von 13
Bewertung:
(6167 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Hallo hilfdirselbst Forum,
ich suche ein Script das ich mir bei meiner täglichen Arbeit in InDesign CS3 sehr hilfreich vorstelle. Ich würde 20 Euro an denjenigen Überweisen, der mir das Script findet oder gar schreibt.

Man selektiert Text in einem Rahmen, bzw. einer Textspalte. Das Script schneidet dann diesen Text aus und erstellt einen Textrahmen an der gleiche Stelle, mit der gleichen Breite der Textspalte in der Text vorher war und setzt den Text dort hinein. Der erstellte Textrahmen hat rechteckige Konturenführung mit 0mm.

Eigentlich einfach oder? Für Hilfe wäre ich sehr dankbar.
Stephan
Top
 
X
Gerald Singelmann  M  p
Beiträge: 6178
16. Okt 2007, 19:02
Beitrag #2 von 13
Beitrag ID: #317284
Bewertung:
(6122 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Gibt es einen Grund, weshalb Sie dafür nicht mit einer Ein-Zellen-Tabelle arbeiten?
--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#317171] Top
 
Stephan_M m
Beiträge: 464
16. Okt 2007, 19:11
Beitrag #3 von 13
Beitrag ID: #317285
Bewertung:
(6118 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Aber ja.
Ich bekomme viele Word Dokumente die ich in InDesign platziere. Ich muss sehr oft Absätze daraus markieren, diese auschneiden, wieder pasten und den so entstandenen Textrahmen wieder zurechtschieben und -zerren.
Wäre echt schön das ganze ein wenig automatisierter auf Tastendruck zu haben.

Wie genau funktioniert Ihre Idee mit den Tabellen?
als Antwort auf: [#317284]
(Dieser Beitrag wurde von Stephan_M am 16. Okt 2007, 19:13 geändert)
Top
 
Gerald Singelmann  M  p
Beiträge: 6178
16. Okt 2007, 19:47
Beitrag #4 von 13
Beitrag ID: #317289
Bewertung:
(6110 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Zitat Wie genau funktioniert Ihre Idee mit den Tabellen?


Ich hatte Ihre Anfrage falsch verstanden. Ich dachte, Sie brauchen den Text im Hauptfluss verankert. Und das könnte in den meisten Fällen auch eine Tabellenzelle übernehmen.
--------------------------

InDesign-Wissen und Automatisierung nicht nur rund um die Suite.

http://www.cuppascript.com
als Antwort auf: [#317285] Top
 
kkauer
Beiträge: 661
16. Okt 2007, 20:08
Beitrag #5 von 13
Beitrag ID: #317292
Bewertung:
(6101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Hallo Stephan

ich bin mir nicht sicher, ob ich die Aufgabe komplett verstanden habe.

Code
if (app.documents.length > 0 && app.selection.length == 1 && app.selection[0].hasOwnProperty("baseline")) {  
vUnits = app.documents[0].viewPreferences.verticalMeasurementUnits;
app.documents[0].viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
selectedTextToNewFrame(app.selection[0]);
app.documents[0].viewPreferences.verticalMeasurementUnits = vUnits
}

function selectedTextToNewFrame(sText) {
var fBounds = sText.parentTextFrames[0].geometricBounds;
nFrame = sText.parentTextFrames[0].parent.textFrames.add();
nFrame.geometricBounds = [sText.characters[-1].baseline, fBounds[1], sText.characters[0].baseline - sText.characters[0].leading, fBounds[3]];
nFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.leadingOffset;
nFrame.textWrapPreferences.textWrapType = TextWrapTypes.BOUNDING_BOX_TEXT_WRAP;
sText.move(LocationOptions.atBeginning, nFrame.insertionPoints.item(0));
}


Hilft das als Einstieg?

Karsten
als Antwort auf: [#317171] Top
 
Stephan_M m
Beiträge: 464
16. Okt 2007, 20:47
Beitrag #6 von 13
Beitrag ID: #317302
Bewertung:
(6085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Hallo Karsten,
schonmal vielen Dank, das Du dich des Problems annimmst. Leider kann ich nicht scripten und es mir zurechtbiegen, oder verstehen was es macht. Aber es scheint nah dran zu sein. Ich habs als text2frame.js im Scripte Order gespeichert und auf selectierten Text angewendet.

Er hat den Text ausgeschnitten und einen neuen Textrahmen erstellt der aber unendlich hoch war und seinen Ankerpunkt irgendwo in der Unendlichkeit hatte. Buggy, aber schon fast richtig.

Magst Du es mir nicht zuende-scripten? Ist 20 Euro angemessen?
als Antwort auf: [#317292]
(Dieser Beitrag wurde von Stephan_M am 16. Okt 2007, 20:48 geändert)
Top
 
kkauer
Beiträge: 661
16. Okt 2007, 21:04
Beitrag #7 von 13
Beitrag ID: #317306
Bewertung:
(6073 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Ich sagte ja "als Einstieg". ;-)

Mit Textketten läuft das so nicht, aber mit einem einzelnen Rahmen (1-spaltig) sollte es klappen. Und genau da wollte ich ansetzen, um die Parameter (1. Grundlinie, Rahmenhöhe etc) zu klären.


Edit: Vergiss es erst einmal. Da ist noch was anderes nicht i.O.

Karsten
als Antwort auf: [#317302]
(Dieser Beitrag wurde von kkauer am 16. Okt 2007, 21:13 geändert)
Top
 
Stephan_M m
Beiträge: 464
16. Okt 2007, 21:35
Beitrag #8 von 13
Beitrag ID: #317311
Bewertung:
(6056 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Cool!!!
Es muss gar nichts verkettet sein.
Es wäre aber schön wenn es auch aus mehrspaltigen Text heraus funktionieren würde.

Das ganze sollte wirklich nur ein ganz kleines unkompliziertes Script-Päkchen von ein paar Zeilen sein.

((Wäre der selektierte Text länger als eine Spalte, reicht es wenn der neue Rahmen einfach so hoch wie eine Spalte ist und der hineinkopierte Text dann Überfluss hat - denn sonst würde das ganze ja wirklich wahnsinnig komplex, glaube ich))
als Antwort auf: [#317306] Top
 
kkauer
Beiträge: 661
16. Okt 2007, 22:46
Beitrag #9 von 13
Beitrag ID: #317316
Bewertung:
(6030 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Bitte prüfe, ob das Problem nur bei Texten auftaucht, die einen automatischen Zeilenabstand haben …
als Antwort auf: [#317311]
(Dieser Beitrag wurde von kkauer am 16. Okt 2007, 22:47 geändert)
Top
 
Stephan_M m
Beiträge: 464
17. Okt 2007, 01:08
Beitrag #10 von 13
Beitrag ID: #317326
Bewertung:
(5998 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Yipeee! Hervorragend!
Das ist es. Es funktioniert schon supi bei nicht-automatischem Zeilenabstand. Er verhält sich sogar sofort wunderbar bei mehrspaltigen Text. Danke Danke Danke.
...Automatischen Zeilenabstand benutzt ja eh keiner. Vielleicht magst Du das für den uneingeweihten Script-Nutzer ja aber noch mit einer IF-Anweisung abfangen?

Bitte lasse mir auf jeden Fall deine Emailadresse / Bankverbindung zukommen, damit ich dich entlohnen kann.
Du erreichst mich unter:

"moebius ätt pdsounds pungd ORG" (Admin auf www.pdsounds.org)

Ich finde das Script sollte bei HIlfDirSelbst in die Scripte-Linksammlung eingehen, Du nicht auch? SelectedText2NewFrame ist ein guter Name.
als Antwort auf: [#317316]
(Dieser Beitrag wurde von Stephan_M am 17. Okt 2007, 01:14 geändert)
Top
 
Stephan_M m
Beiträge: 464
15. Mär 2018, 15:03
Beitrag #11 von 13
Beitrag ID: #562844
Bewertung:
(636 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Omg, ist das lang her. 10 Jahre!!! Und ich benutze deses Skript immer noch täglich und ständig. Es gehört zu meinen Handgriffen. :)

Wenn der selektierte Text aber Spaltenspannend war (diese tolle neue Funktion die irgendwann mit CS5 oder CS6 dazu kam), dann hat das Skript nicht genau funktioniert, das hab ich endlich mal gefixt. *lach*

Code
// SelectedTextToNewFrames.jsx 

// Script expects selected text. It will put the selected text into its own textframe at the same location, the same width of the column and height of the selected text.
// It's a shortcut for the tedious CTRL-dragging of text out to a new framne, or cutting&pasting it out .... for instance if you simply want to move a headline into its own textframe.
// lastEdit 15.03.2018, Stephan Möbius, to make it work with column spanning paragaphs and right- or center-aligned text.

if (app.documents.length > 0 && app.selection.length == 1 && app.selection[0].hasOwnProperty("baseline") && app.selection[0].characters.length > 0) {
var sT = "selectedTextToNewFrame(app.selection[0])";
app.doScript(sT, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, "Text to new frame");
}

function selectedTextToNewFrame(sText) {
var uRuler = app.documents[0].viewPreferences.rulerOrigin;
app.documents[0].viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
var p = sText.paragraphs[0];
var tf = sText.parentTextFrames[0];
var colType = p.spanColumnType;
var spanColCount = p.spanSplitColumnCount;
spanColCount = (colType != SpanColumnTypeOptions.SPAN_COLUMNS) ? 1 : (spanColCount == SpanColumnCountOptions.ALL ? tf.textFramePreferences.textColumnCount : Math.min(tf.textFramePreferences.textColumnCount,spanColCount));
var uJustification = p.justification;
p.justification = Justification.LEFT_ALIGN;
hProps = [
p.horizontalOffset - p.leftIndent - sText.paragraphs[0].firstLineIndent,
tf.textFramePreferences.textColumnFixedWidth * spanColCount + ((spanColCount-1) * tf.textFramePreferences.textColumnGutter)
];
nFrame = sText.parentTextFrames[0].parent.textFrames.add();
nFrame.geometricBounds = [sText.lines[-1].baseline, hProps[0], sText.lines[0].baseline - sText.lines[0].ascent, hProps[0] + hProps[1]];
nFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.ascentOffset;
nFrame.textWrapPreferences.textWrapMode = TextWrapModes.BOUNDING_BOX_TEXT_WRAP;
nFrame.textWrapPreferences.textWrapOffset = [p.spaceBefore,0,sText.paragraphs[-1].spaceAfter+sText.paragraphs.nextItem(p).spaceBefore,0];
sText.move(LocationOptions.atBeginning, nFrame.insertionPoints.item(0));
//restore users measurement preferences
app.documents[0].viewPreferences.rulerOrigin = uRuler;
nFrame.insertionPoints.item(0).paragraphs[0].justification = uJustification;
}


herzliche Grüße,
Stephan
als Antwort auf: [#317326]
(Dieser Beitrag wurde von Stephan_M am 15. Mär 2018, 15:05 geändert)
Top
 
Stephan_M m
Beiträge: 464
1. Mai 2018, 20:44
Beitrag #12 von 13
Beitrag ID: #563676
Bewertung:
(393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Sorry, hier ist noch ein kleiner Bugfix...

Code
// SelectedTextToNewFrames.jsx 
#target indesign

// Script expects selected text. It will put the selected text into its own textframe at the same location, the same width of the column and height of the selected text.
// It's a shortcut for the tedious CTRL-dragging of text out to a new framne, or cutting&pasting it out .... for instance if you simply want to move a headline into its own textframe.
// lastEdit 15.03.2018, Stephan Möbius, to make it work with column spanning paragaphs and right- or center-aligned text.

if (app.documents.length > 0 && app.selection.length == 1 && app.selection[0].hasOwnProperty("baseline") && app.selection[0].characters.length > 0) {
var sT = "selectedTextToNewFrame(app.selection[0])";
app.doScript(sT, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, "Text to new frame");
}

function selectedTextToNewFrame(sText) {
var uRuler = app.documents[0].viewPreferences.rulerOrigin;
app.documents[0].viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
var p = sText.paragraphs[0];
var tf = sText.parentTextFrames[0];
var colType = p.spanColumnType;
var spanColCount = p.spanSplitColumnCount;
spanColCount = (colType != SpanColumnTypeOptions.SPAN_COLUMNS) ? 1 : (spanColCount == SpanColumnCountOptions.ALL ? tf.textFramePreferences.textColumnCount : Math.min(tf.textFramePreferences.textColumnCount,spanColCount));
var uJustification = p.justification;
p.justification = Justification.LEFT_ALIGN;
hProps = [
p.horizontalOffset - p.leftIndent - sText.paragraphs[0].firstLineIndent,
tf.textFramePreferences.textColumnFixedWidth * spanColCount + ((spanColCount-1) * tf.textFramePreferences.textColumnGutter)
];
nFrame = sText.parentTextFrames[0].parent.textFrames.add();
nFrame.geometricBounds = [sText.lines[-1].baseline, hProps[0], sText.lines[0].baseline - sText.lines[0].ascent, hProps[0] + hProps[1]];
nFrame.textFramePreferences.firstBaselineOffset = FirstBaseline.ascentOffset;
nFrame.textWrapPreferences.textWrapMode = TextWrapModes.BOUNDING_BOX_TEXT_WRAP;
nFrame.textWrapPreferences.textWrapOffset = [(p.spaceBefore || 0), 0, ((p!= p.parentStory.paragraphs.lastItem())?(sText.paragraphs[-1].spaceAfter+sText.paragraphs.nextItem(p).spaceBefore):0), 0];
sText.move(LocationOptions.atBeginning, nFrame.insertionPoints.item(0));
//restore users measurement preferences
app.documents[0].viewPreferences.rulerOrigin = uRuler;
nFrame.insertionPoints.item(0).paragraphs[0].justification = uJustification;
}

als Antwort auf: [#562844] Top
 
Stephan_M m
Beiträge: 464
2. Mai 2018, 10:13
Beitrag #13 von 13
Beitrag ID: #563689
Bewertung:
(364 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Suche Script: Mache Textframe aus selektiertem Text


Querlink zu einer Quick&Dirty Variante des Skripts, welches nicht die Selektierten Paragraphen in _einen_ Rahmen setzt, sondern mit jedem Paragrafen einen eigenen Textrahmen erzeugt ...

--> https://www.hilfdirselbst.ch/...i?post=563675#563675
als Antwort auf: [#563676] Top
 
X