【问题标题】:Copy formatted text to the clipbord, except for the font将格式化文本复制到剪贴板,字体除外
【发布时间】:2012-01-07 14:40:02
【问题描述】:

我正在尝试以编程方式生成格式化文本并将其复制到剪贴板,以便将其粘贴到电子邮件中。我要复制的唯一格式是换行符和粗体文本。我希望它使用电子邮件的当前或默认字体。

许可: XXXXX
许可证密钥: XXXXX

我对 HTML 的尝试在 Windows Live Mail 中生成了正确的格式,但它有自己的字体选择。

Dim Text As String =
    "Version:0.9" & vbCrLf &
    "StartHTML:00000097" & vbCrLf &
    "EndHTML:00000343" & vbCrLf &
    "StartFragment:00000243" & vbCrLf &
    "EndFragment:00000308" & vbCrLf &
    "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" & vbCrLf &
    "<HTML><HEAD><TITLE>Software License</TITLE></HEAD><BODY>" & vbCrLf &
    "<!--StartFragment -->" & vbCrLf &
    "<P><B>Licensed to:</B> XXXXX<BR /><B>License key:</B> XXXXX</P>" & vbCrLf &
    "<!--EndFragment -->" & vbCrLf &
    "</BODY></HTML>"
Clipboard.SetText(Text, TextDataFormat.Html)

我尝试在写字板中正确粘贴 RTF,但在简单的 Windows Live Mail 中粘贴什么也没做。

Dim Text As String =
    "{\rtf1\ansi " &
    "\b Licensed to:\b0  XXXXX\par " &
    "\b License key:\b0  XXXXX\par " &
    "}"
Clipboard.SetText(Text, TextDataFormat.Rtf)

有谁知道将有限格式复制到剪贴板的解决方案。

【问题讨论】:

    标签: .net html formatting clipboard rtf


    【解决方案1】:

    这确实是特定于格式的(在某些方面是特定于应用程序的)。您已经了解了如何在两种情况下执行此操作,但应该了解为什么它会按原样工作:

    当您尝试将剪贴板中的数据粘贴到应用程序(例如 Outlook)中时,该应用程序首先会查询剪贴板以查看可用的格式,然后会为其选择“最佳”可用格式(由 Outlook 的开发商)。如果没有适用于该应用程序的可用格式,则它就像剪贴板上没有数据一样。这就解释了为什么写字板可以处理 RTF 数据,而实时邮件却不能。

    您可以(并且应该)做的是将数据以多种格式放在剪贴板上,以允许其他应用进行选择。

    不要使用Clipboard.SetText(),而是使用Clipboard.SetDataObject(),并用多种格式填充DataObject

    Dim htmlText as String = ''your working html
    Dim rtfText as String = ''your working rtf
    
    Dim data As New DataObject()
    data.SetText(htmlText, TextDataFormat.Html)
    data.SetText(rtfText, TextDataFormat.Rtf)
    ''and possibly:
    data.SetText(plainText, TextDataFormat.Text)
    
    
    Clipboard.SetDataObject(data)
    

    【讨论】:

    • 谢谢,这是一个很大的帮助! Windows Live Mail 使用的短语“富文本 (HTML)”让我感到困惑。不幸的是,它并没有解决我的字体问题。 WLM 接受 HTML 格式,但选择与电子邮件的其余部分不同的字体。
    • @Hand-E-Food 这是非常特定于应用程序的——你可以乱用 HTML(也许从 &lt;p&gt;&lt;/p&gt; 删除除此之外的所有内容),但没有什么可以阻止任何其他内容应用程序(或升级到 WLM)以不同方式处理粘贴的 html。祝你好运!
    • 我明白你在说什么。在我看来,我在通过电子邮件发送网页时遇到了同样的问题。愚蠢的邮件应用程序认为它是如此聪明......感谢您的所有帮助!
    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多