我有RTF格式的文档模板,它包含一些文本和一些图像(使用WordPad,Win 7创建)。我需要更改一些文本并保存。我正在尝试这样做(Delphi XE7,Win32平台,Windows 7 x64 SP1):
RichEdit1.Lines.LoadFromFile('1.rtf');
RichEdit1.Lines.SaveToFile('2.rtf');
因此,我尚未进行任何更改,但是2.rtf不再包含任何图像,并且其大小比1.rtf小得多。其他所有内容(表格/文本/字体/ ...)似乎都还可以。有什么想法如何保存所有图像(和其他对象)?
UPDATE1。刚刚找到解决方法。我有DevExpress组件,如果我使用TcxRichEdit而不是TRichEdit,则可以保留所有对象:
cxRichEdit1.Properties.AllowObjects := True;
cxRichEdit1.Lines.LoadFromFile('e:\Work\InvoiceGenerator\bin\Invoice2.rtf');
cxRichEdit1.Lines.SaveToFile('e:\Work\InvoiceGenerator\bin\Invoice3.rtf');
但是我在TRichEdit中找不到类似的功能。
该TRichEdit
控件将不会加载图像。因此,您将不会获得任何成功。无论如何,TRichEdit
用于显示和编辑RTF。它不适用于后台文档处理。视觉控制在这里根本是错误的。
实现目标的最简单方法是将RTF文件视为ASCII编码的文本文件并进行解析。寻找同意的占位符,并用所需的文本替换它们。这将要求您能够解析RTF。您需要的解析器究竟有多先进,在某种程度上取决于您的野心。您可能会产生一些有效的东西,而不仅仅是正则表达式类型处理,这似乎是有道理的。但是,这可能也有些脆弱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句