我使用wxPython 2.8.12.1
和Python 2.7
创建了一个富文本编辑器(richtext.RichTextCtrl
)。通过使用PyRTFParser
,我实现了对一些RTF内容和图像的处理。它还支持RTF和图像的复制粘贴。在
问题是所有客户端数据库都包含使用VB 6 RichText control
存储的RTF数据。当我将这些数据加载到我的RichTextCtrl
中时,它不支持表,丢失了一些格式和项目符号,并显示图像错误(Windows元数据文件)。在
我必须提供一个工具,它可以将数据库中的旧数据(使用VB 6 RichText control
)显示到wxPython
中。在
wx.TextCtrl
提供TE_RICH
和{
考虑以下几点:
这是我从中复制内容的word文档。
这是VB 6 RichText control
中的粘贴结果。
这是wx.TextCtrl
与TE_RICH2
的粘贴结果。提供更好的图像。
这是richtext.RichTextCtrl
中的粘贴结果。表格数据混乱,格式丢失。
有没有什么解决方案可以支持wx.TextCtrl
中的图像以及从中获取RTF内容形式?
或者有什么方法可以直接在wxpython
中使用VB 6 RichText control
?在
RTF内容示例(存储在数据库中):
{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\froman\fprq2\fcharset2 Symbol;}{\f3\froman\fprq2\fcharset0 Cambria;}{\f4\fnil\fcharset0 MS Sans Serif;}}
{\colortbl ;\red0\green0\blue0;\red151\green72\blue7;\red54\green95\blue145;}
{\stylesheet{ Normal;}{\s1 heading 1;}}
\viewkind4\uc1\trowd\trgaph108\trleft-15\clbrdrt\brdrw15\brdrs\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\pard\intbl\ltrpar\sl276\slmult1\cf1\b\f0\fs24 Categor Limits\cell\cf0\b0\f1\fs20\row
\trowd\trgaph108\trleft-15\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx1335\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\pard\intbl\ltrpar\sl276\slmult1\cf2\b\f0\fs22 Lower Limit\cell Sales Category\cell\cf0\b0\f1\fs20\row
\cf1\f0\fs22\trowd\trgaph108\trleft-15\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx1335\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\intbl 0\cell Poor\cell\cf0\f1\fs20\row
\cf1\f0\fs22\trowd\trgaph108\trleft-15\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx1335\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\intbl 1000\cell Average\cell\cf0\f1\fs20\row
\cf1\f0\fs22\trowd\trgaph108\trleft-15\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx1335\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\intbl 5000\cell Good\cell\cf0\f1\fs20\row
\cf1\f0\fs22\trowd\trgaph108\trleft-15\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx1335\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs \cellx3005\intbl 7000\cell Excellent\cell\cf0\f1\fs20\row
\pard\ltrpar\sa200\sl276\slmult1\f0\fs22
\par \pard\ltrpar\fi-360\li720\sa200\sl276\slmult1\f2\'b7\tab\f0 Item 1
\par \f2\'b7\tab\f0 Item 2
\par \pard\ltrpar\keep\keepn\s1\sb480\sl276\slmult1\cf3\b\f3\fs28 Colorful Text here\'85
\par \pard\ltrpar\cf0\b0\f4\fs17
\par }
很多网页告诉你怎么做。搜索python COM
是从第一页开始的
对于API调用,您使用pywin32扩展。在
有点像
^{pr2}$但我不了解python,这是从google收集到的2分钟知识的极限。在
VB6是ANSI RTF。ie无UNICODE。它也很旧,许多新版本已经发布。
这是如何访问新版本的。它创建一个RTF窗口,发送一条消息以获得COM接口,然后通过TOM(文本对象模型)使用它。
实际上,使用控件来创建窗口的技术并不是必需的。这允许您在RTF的更高版本中使用该功能,同时仍然使用本机VB6 RTF控件。有关详细信息,请参见this。在
相关问题 更多 >
编程相关推荐