当前位置:首页 > 数码 >

rtf什么格式可以复制(rtf格式可以打印出来吗)

来源:原点资讯(www.yd166.com)时间:2024-04-30 10:44:23作者:YD166手机阅读>>

上一节我们完成了基本的设置,应该说,至少目前对我来说,现在的功能已经基本够用了。

于是我计划从这篇文章开始,我就不再使用Word进行编辑了,用我这个私人日记软件来编辑,实际验证下是否实用。

如下图,这是我之前教程的编写模式:

rtf什么格式可以复制,rtf格式可以打印出来吗(1)

之前也交待过,在word文档中编辑,只要是包含了图片的,复制后再粘贴到头条都没办法成功,还需要把图片一个个另外粘贴过去才行。如果是遇到gif动图,从word复制只能复制静态的截图,还得再次复制原文件才能粘贴到头条的编辑器中,操作起来比较麻烦。

于是我就在我的程序中尝试复制粘贴,发现跟word是一样的效果。这对我来说是不实用的,需要对它进行改造。

要解决这个问题,首先要分析下为什么会造成这种情况。我们使用的文本编辑控件是RichTextBox,这个默认是rtf格式的,跟word是一样的。我们把带图文的内容粘贴到word文档中,图片就是可以正常显示的。这就说明我们Ctrl C的内容是rtf格式的,而不是通过浏览器粘贴能够识别出来的格式。那么浏览器能够识别的格式是不是每个浏览器特有的呢?于是我尝试在FireFox中复制图片和文字,粘贴到用Chrome打开的头条编辑器,发现图片是可以显示的,上述的猜测可以排除了。那么这个格式究竟是怎样的呢?我需要在程序中截获一下粘贴的内容。在ContentManagerForm.cs文件中,添加键盘截获事件,截获Ctrl V时的内容:

rtf什么格式可以复制,rtf格式可以打印出来吗(2)

我们发现,如果从浏览器上按Ctrl C,到我们的软件中按Ctrl V,用DataFormats.Html做参数可以取到值,值的内容大概是这样:

rtf什么格式可以复制,rtf格式可以打印出来吗(3)

前面红线部分相当于信息头,定义了一些参数,后面从<div>开始就是我们刚刚复制的内容了。我原封不动地将这些内容再写回到剪贴板中,然后在浏览器中按Ctrl V,浏览器也能够正常显示了。

这样我们基本上就明白了,想要跟浏览器正常通讯,需要两步:第一步是要将rtf格式转换为html格式,第二步是要将html再转换成浏览器能够识别的格式到剪贴板。

一、rtf格式转html格式

一般这种格式转换需要的工作量都比较大,自己从头开发不大现实,需要网上找找看是否有现成的类库。对比了几家,找到了一个rftpipe的,而且是mit授权的。于是从Nuget获取安装,使用起来很容易:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

string html = RtfPipe.Rtf.ToHtml(tbxMainBody.Rtf);

如此两行代码就实现了第一步的转换。

二、从html到剪贴板

同样也是先网上查资料,找到了一个ClipboardHelper的类,同样也是mit授权的。把代码加入到工程,然后在ContentManagerForm中增加一个专门用于复制成html格式到剪贴板的按钮:

rtf什么格式可以复制,rtf格式可以打印出来吗(4)

按钮处理代码:

private void btnCopyAsHtml_Click(object sender, EventArgs e) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); string html = RtfPipe.Rtf.ToHtml(tbxMainBody.Rtf); ClipboardHelper.CopyToClipboard(html, ""); }

在使用了类库的基础上,三行代码就完成了我想要的功能。

功能演示:

rtf什么格式可以复制,rtf格式可以打印出来吗(5)

以上解决了从软件复制到头条的问题。

还有一种场景,就是把浏览器当成来源,从浏览器复制到软件的功能。如果是纯文本RichEdit编辑器自带就支持,如果是图文混排的,就需要从html到rtf的转换,我找了一下相关的类库,貌似没有类似rftpipe这种免费且直接支持字符转换的库,很多都是通过文档来转换,而且还是收费的。好不容易找到一个符合要求的,结果这个项目比较老,是在Framework下开发的,不支持.netcore。

鉴于找到合适的库有点困难,随后仔细分析了下需求,其实这种从浏览器图文混排复制到软件的场景对我来说意义不大,通篇复制是不大可能的,关键位置复制文字做摘抄,真的有特别需要的图片,单张截图就好,所以这个功能暂时搁置吧。

这个小项目伴着教程做到了24节,终于有了一点实际作用了:)

----------------------------------------------------

本教程尽量保证2天一更,项目源码已作为开源项目加入到Gitee,代码内容会随教程实时更新,大家有兴趣的话可以关注我,以获得最及时的更新。私信:

私人日记 可以获取Gitee的链接;

sqlitestudio 可以获取sqlitestudio的链接;

菜鸟 可以获取菜鸟教程链接;

QQ群 可以获取教程交流Q群号;

大家阅读过程中有哪些看不懂或未尽兴的地方,可以在评论区留言,我会先记下来在后续的教程中找机会再说。

教程有帮助的话请大家帮忙关注、转发、扩散,能不能开专栏还需要你们的支持!

,

栏目热文

为什么会出现rtf格式(为什么文件突然变成rtf)

为什么会出现rtf格式(为什么文件突然变成rtf)

“剪贴板”的大部分功能我们都聊过了,看过上篇文章的你一定发现还少一部分没有说呢?那就是如下界面了,出现这个界面的有两种情...

2024-04-30 11:16:18查看全文 >>

全国防灾减灾宣传活动形式(防灾减灾知识宣传方案)

全国防灾减灾宣传活动形式(防灾减灾知识宣传方案)

来源:【湖南日报】5月11日上午,津市市应急管理局(市地震局)联合团市委、市教育局、市消防救援大队等部门在毛里湖镇开展5...

2024-04-30 11:02:00查看全文 >>

防灾减灾常识宣传(防灾减灾知识宣传来啦赶紧学起来)

防灾减灾常识宣传(防灾减灾知识宣传来啦赶紧学起来)

地震、火灾、洪水,当我们遇到这些自然灾害时,应该如何正确躲避?懂得正确的防灾常识,才能让我们在紧急情况下逃过一劫。下面大...

2024-04-30 10:46:15查看全文 >>

防灾减灾系列宣传信息(防灾减灾主题宣传教育活动方案)

防灾减灾系列宣传信息(防灾减灾主题宣传教育活动方案)

中新网新疆新闻4月15日电(熊春鹏)4月15日,新疆克州黑牙克恰提边境派出所针对辖区近期出现的沙尘天气,开展恶劣天气防灾...

2024-04-30 11:16:10查看全文 >>

防灾减灾宣传页内容(防灾减灾内容简短)

防灾减灾宣传页内容(防灾减灾内容简短)

今年5月12日是我国第15个全国防灾减灾日,主题是“防范灾害风险 护航高质量发展”,5月6日至12日为防灾减灾宣传周。地...

2024-04-30 10:48:52查看全文 >>

打印机维修图文教程(打印机维修方法和视频教程)

打印机维修图文教程(打印机维修方法和视频教程)

平板uv打印机这台uv机13年入手,几乎是闲置没用,今年启用,结果喷头堵,舍不得换喷头,想自己洗喷头,结果白墨的喷头一直...

2024-04-30 11:08:43查看全文 >>

打印机维修详细教程(打印机维修教程初学者)

打印机维修详细教程(打印机维修教程初学者)

打印机作为现代办公和生活中不可或缺的设备,其在日常使用中难免会遇到各种故障。针对这些常见的故障,我们需要了解并掌握相应的...

2024-04-30 10:43:15查看全文 >>

维修打印机需要的工具(维修打印机)

维修打印机需要的工具(维修打印机)

今天我们做一期,如何用3D打印机来修复家庭中损坏的工具或者零件。这个损坏的零件是保温壶上的一个按钮,这种壶相信很多家庭都...

2024-04-30 11:03:34查看全文 >>

徐锦江早期所有电影(徐锦江的所有电影)

徐锦江早期所有电影(徐锦江的所有电影)

重归初心:婚姻迷航者的自我救赎生活如戏,戏如人生。老徐,这位曾被婚姻束缚的大内密探,因为一个离奇的任务,走进了迎春阁的迷...

2024-04-30 11:22:33查看全文 >>

徐锦江演过所有的电影(徐锦江演的所有的电影)

徐锦江演过所有的电影(徐锦江演的所有的电影)

徐锦江,这位香港影坛的传奇人物,在我们的记忆中留下了独特的印记。尽管他因风月片而广为人知,但他的魅力和影响力远不止于此。...

2024-04-30 11:18:07查看全文 >>

文档排行