将RTF文本复制到我的AS3程序中

时间:2011-05-10 18:58:58

标签: actionscript-3 rtf

我进行了搜索和搜索,但弹出的只是“买这个,买那个”。

我是否无法从MS-Word复制文本并且能够在粘贴到我的应用程序时保留格式? (我不是在谈论Flash IDE,我说的是将其粘贴在TLF或其他东西中)

提前感谢。

1 个答案:

答案 0 :(得分:2)

确定。下面是它的工作原理。如果你想将单词从word中弹出到flash中的TextField,你需要做这样的事情......

从word中复制后,您需要决定如何将内容弹出到TextField ...您是否想通过做一些KeyboardEvent来尝试使用cmd + v?你想要一个类似“粘贴内容”的按钮吗?无论哪种方式,您将运行一些代码来抓取剪贴板内容并将其弹出到TextField以响应某些事件。所以在你的事件处理程序中做这样的事情:

function onPasteEvent(e:SomeEventType):void{

    var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.HTML_FORMAT) as String;
    if (pasteData){

       txt.htmlText = formatClipboardData(pasteData);
    }else{
          // probably nothing on clipboard
    }

}

现在,formatClipboardData()函数将对剪贴板中的数据进行某种操作。你会注意到来自word的HTML充满了奇怪的东西。你可以剥掉一些,整理一下,在某些情况下使用它们的一些类。在我看到的一些代码中,我有这个:

var s:StyleSheet = new StyleSheet();
s.setStyle(".MsoListParagraphCxSpFirst", {marginLeft : "10px"});
...
txt.styleSheet = s;

为了从单词doc中缩进列表项。您可以使用简单的正则表达式来更改html ...删除不需要的属性和标记。以下是我的formatClipboardData()函数中的一些示例:

// lists were coming in as dots with some space inside a p tag so:
  replace(/<p>\·\s+(.*?)<\/p>/g, "<li>$1</li>")

// no need for the body tag:
  replace(/<body>|<\/body>/g,"")

// strip attributes from p tags:
  replace(/<p(.*?)>/g, "<p>")

etc....