basierend auf Beiträgen aus diesem Forum habe ein kleines Programm geschrieben, welchen den Text aus dem Clipboard liest und wieder zurückschreibt.
Ich würde gerne die Formatierung des Strings entfernen. Idee hier ist mein tägliches Einfügen als unformatierten Text zu beschleunigen (Edit -> Paste Special -> As Unformated Text).
Allerdings "sehe" ich in meinem Programm nicht die Formatierung, d.h. wenn ich den String per System.out... ausgebe, sieht der schon unformatiert aus.
Jetzt die Frage: Wie kann ich die Formatierung sehen bzw. löschen?
Viele Grüße, Lars
Code:
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
public class MyClipboard {
public void putClipboard(String s) {
try // legt ein clipboard objekt an und speichert den übergebenen string
// im clipboard STRG + C/V
{
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection stringSelection = new StringSelection(s);
cb.setContents(stringSelection, stringSelection);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public String getFromClipboard() {
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable cont = cb.getContents(this);
try {
return (String) cont.getTransferData(DataFlavor.stringFlavor);
} catch (Exception e) {
System.out.println("Zwischenablage enthält keinen Text");
}
return "";
}
public static void main(String args[]) throws Exception {
MyClipboard clip = new MyClipboard();
clip.putClipboard(clip.getFromClipboard());
}
}
deswegen hätte ich gedacht, daß meine Aktion mir einen unformatierten String ablegen müßte. Aber wenn ich einen formatierten String aus Powerpoint kopiere und den wieder in Powerpoint paste, hat der immer noch die Formatierung.
Das Ding liefert aber immer nur einen leeren String zurück.
Wie ich die anderen Mime Typen anspreche, habe ich nicht herausgefunden. Die Typen auflisten kann ich mir:
Code:
DataFlavor[] test = cont.getTransferDataFlavors();
for (int i = 0; i < test.length; i++) {
System.out.println(test[i].getHumanPresentableName());
System.out.println(test[i].getMimeType());
}
aber jedem Versuch ein DataFlavor mit einem der Typen zu definieren, wurde mit einen leerem String "belohnt".
(String) cont.getTransferData(DataFlavor.stringFlavor);
klappt doch wenn du nur den String willst, oder was ist nun die Frage?
von Mime-Typen usw. weiß ich nix, nicht mal von Clipboard bis heute,
solltest du nicht genauer erklären was du eigentlich vorhast,
oder ist das einem wissenden Leser klar?
Aber (String) cont.getTransferData(DataFlavor.stringFlavor); hat, zumindestens was aus Powerpoint kopierte Strings betrifft, immer noch die Formatierung.
Also mit dem Programm von ganz oben:
Powerpoint Text Markieren Strg+C
Java Programm
Irgendwo anders im Powerpoint den Cursor plazieren Strg+V -> String hat immer noch seine Formatierung
ob NACH der Änderung im Programm (Text setzen auf 'huhu')
beim Einfügen in Powerpoint nun der neue Text huhu mit altem Format oder der alte Text im alten Format erscheint hast du immer noch nicht gesagt
Du gibt den Output an, nicht das Java Statement, um diesen zu erzeugen. Auch nach Lesen des Abschnitts habe es nicht hinbekommen, den Output zu bekommen.
Deine andere Frage hatte ich beantwortet
Das Clipboard zu löschen, oder einen neuen Text hereinzusetzen, ändert nichts daran, daß Powerpoint die alte Formatierung einfügt.
SlaterB: Danke für die Hilfe bis hier; da Du kein Powerpoint installiert hast, ist; glaube ich, der Versuch Ferndiagnose zu betreiben nicht erfolgreich.
> Du gibt den Output an, nicht das Java Statement, um diesen zu erzeugen.
ich kann nur den Code dort eintippen und bekomme bei mir die Ausgabe,
natürlich muss man das break und rausnehmen, sonst wird ja früh abgebrochen,
mehr kann ich auch nicht sagen
bisschen formatierter: