Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Text ohne Formatierung kopieren

Text ohne Formatierung kopieren

Hans Haesler
Beiträge gesamt: 5826

8. Nov 2006, 12:38
Bewertung:

gelesen: 12312

Beitrag als Lesezeichen
Hallo Leute,

In CS2 gibt es die schöne Option "Ohne Formatierung einfügen"
(Mac: Befehl + Umschalt + V / Windows: Ctrl + Shift + V).

Nun habe ich aber festgestellt, dass bei dieser Aktion auch
Absatz- und Zeichenformate sowie Farben, welche in der Auswahl
angewendet sind, ins Zieldokument kopiert werden, falls
sie dort nicht vorhanden sind.

Das ist meistens nicht erwünscht. Deshalb habe ich versucht,
ein Script zu schreiben, welches "sauberer" arbeitet.
Bei der ersten Version war das Problem nicht behoben.
Erst als ich im Quelldokument den kopierten Text zum Reinigen
in einen temporären Rahmen zwischenlagerte, unterblieb
das "hilfreiche" Ergänzen.

Das folgende Script prüft die Auswahl. Wenn es Text ist,
dann wird dieser in die Zwischenablage kopiert. Wenn nur die
Einfügemarke blinkt, dann wird versucht, den Inhalt der
Zwischenablage einzufügen.

Code
//NurTextKopieren_02d.js 
//Dieses Script ermöglicht, Texte ohne Formatierung zu kopieren
//und einzusetzen, ohne dass Absatz- und Zeichenformate sowie Farben
//ins Zieldokument kopiert werden

if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.");
exit();
}

var curSel = app.selection[0];

try {
var selType = curSel.constructor.name;
}
catch (e) {
alert ("Es ist nichts ausgewählt.");
exit();
}

if (selType == "Text" || selType == "TextColumn" || selType == "Paragraph"
|| selType == "TextStyleRange" || selType == "Word" || selType == "Character") {
app.copy();
var tmpFrame = app.documents[0].textFrames.add({label:"t_m_p"});
tmpFrame.parentStory.contents = "s";
app.selection = tmpFrame.parentStory.characters[0];
app.pasteWithoutFormatting();
app.selection = tmpFrame.parentStory.characters.itemByRange(0, -1);
app.copy();
tmpFrame.remove();
}
else if (selType == "InsertionPoint") {
try {
app.pasteWithoutFormatting();
}
catch (e) {
alert ("Hat leider nicht geklappt.");
}
}
else {
alert ("Entweder Text auswählen\noder die Einfügemarke positionieren.");

Gruss, Hans

Text ohne Formatierung kopieren

Martin Fischer
  
Beiträge gesamt: 12783

8. Nov 2006, 14:27
Bewertung:

gelesen: 12284

Beitrag als Lesezeichen
Hans,

danke für die Vorlage.

Hier ein alternativer Ansatz:
Code
// textOnly.jsx 

Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}

if ((app.documents.length ==0) || (app.selection.length == 0))
exit();

var mySel = app.selection[0];
if (mySel.isText()) {
var tmpFrame = app.activeDocument.textFrames.add({contents:mySel.contents});
tmpFrame.parentStory.texts[0].select();
app.copy();
tmpFrame.remove();
mySel.select();
}
else if (mySel.constructor.name == "InsertionPoint") {
app.pasteWithoutFormatting()
}


Das isText()-Objekt habe ich mir von Dave Saunders geliehen. ;-)

Im obigen Ansatz wird der Inhalt der Auswahl dem temporären Textrahmen direkt zugewiesen (ohne copy & paste). Anschließend wird der Inhalt des temporären Textrahmens in die Zwischenablage kopiert und die ursprüngliche Auswahl wieder hergestellt.

Das Einfügen funktioniert wie bei Dir.
Auf das try-Kommando habe ich verzichtet.
Gibt es tatsächlich eine Fehlermeldung, wenn beim Versuch, etwas einzufügen, nichts in der Zwischenablage ist? Um dies zu überprüfen wollte ich meinen Rechner nicht extra neu starten (kann man die Zwischenablage auch anders auf null setzen?).

Was ich bei Deinem Ansatz nicht verstehe:
Warum fügst Du das Zeichen "s" in den temporären Textrahmen ein?
Um es hinterher auszuwählen und den Inhalt der Zwischenablage in die Auswahl reinzukopieren? Dazu würde es ausreichen, wenn Du den insertionPoint[0] des temporären Textrahmens auswählen würdest.

Viele Grüße
Martin


Text ohne Formatierung kopieren

Hans Haesler
Beiträge gesamt: 5826

8. Nov 2006, 15:37
Bewertung:

gelesen: 12266

Beitrag als Lesezeichen
Hallo Martin,

danke für Deine Rückmeldung.

Das Dave-Saunders-isText()-Objekt kenne ich, habe es aber noch nie verwendet.

Das direkte Einsetzen ist natürlich vorzuziehen. Und: Gute Idee, die Auswahl
wiederherzustellen!

Ja, es gibt eine Fehlermeldung, wenn das Script versucht, nicht vorhandenen
Inhalt der Zwischenablage einzusetzen. Das hatte ich aber nur geahnt und
erst jetzt ausprobiert (ohne Neustart des Rechners, nur die Session beendet).
Den 'try'-Wickel hatte ich aber eigentlich nur so, für alle Fälle eingebaut.
Deshalb ist auch die Meldung allgemein gehalten.

Die Sache mit dem "s": Dadurch hatte ich eine optische Meldung, dass etwas
kopiert worden ist. Zuvor hatte ich schon versucht, den 'insertionPoint[0]'
auszuwählen. Klappte aber nicht. Erst soeben ist es mir gelungen, nachdem
ich das Mehrzahl-"s" eingefügt habe: 'insertionPoints[0]'.

Das direkte Einsetzen werde ich übernehmen. Und vielleicht auch die Wieder-
herstellung der Auswahl. Mit Angabe des Beraters!

Gruss, Hans

Text ohne Formatierung kopieren

roli.haeusermann
Beiträge gesamt: 60

2. Feb 2007, 16:11
Bewertung:

gelesen: 12174

Beitrag als Lesezeichen
Grüezi mitenand

Habe die beiden Skripts ausprobiert; leider funktionieren diese nicht für Tabellen. Gäbe es hierzu eine alternative? Ich muss derzeit Tabellen von einer alten in eine neue Vorlage kopieren, wobei das Layout gänzlich ändert (Font, Farben, Konturstärke usw.). Hierbei wäre es SEHR hilfreich, wenn ich die Funktion "ohne Formatierung einfügen" effektiv nutzen könnte.

Besten Dank für allfällige Tipps
Roli

Text ohne Formatierung kopieren

mindkicks
Beiträge gesamt: 59

8. Jul 2021, 12:02
Bewertung:

gelesen: 3447

Beitrag als Lesezeichen
Hallo zusammen,

ich würde mich dem, wenn auch älteren, Post von Roli anschließen.
Da ich aktuell auch aus einem riesen Katalog unzählige Tabellen in ein neues Dokument versetzen muss, OHNE die bestehende Formatierung.

Danke & LG

(Dieser Beitrag wurde von mindkicks am 8. Jul 2021, 12:03 geändert)