如何将 RTF 格式转换为字符串 C#

Posted

技术标签:

【中文标题】如何将 RTF 格式转换为字符串 C#【英文标题】:How to convert RTF format to String C# 【发布时间】:2021-11-17 18:01:00 【问题描述】:

如何将 Word 提取的文本转换为字符串。 数据存储在数据库中是这样的:

  2,2 kW, 1500/1800, 400-440V, 50/60Hz, IP55, Iso.F
 \rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031\fonttbl\f0\fswiss\fprq2\fcharset0 Arial;\f1\fswiss\fprq2\fcharset0 Calibri;\f2\fnil\fcharset0 Arial;
\viewkind4\uc1\pard\ltrpar\f0\fs20 8APE100L-4K-IE3\par
2,2 KW,   4-polig,    230/400V,   50Hz,   B5/A250,   IP55\par
\f1\fs22  \f0\fs20\par
Neutrales Zusatztypenschild mit folgenden Angaben:\par
2,2 kW, 400-440V/Y, 50 Hz,   1465min-1\par
2,2 kW, 400-440V/Y, 60 Hz,   1760min-1\f2\fs20\par


我想把它改成这样:

【问题讨论】:

您必须了解 Word 使用的是什么特定标准,它是否是专有的,以及是否有开源 C# 库可以帮助您。真的有必要吗?您不能将文本从 word 文件中复制并粘贴出来,或者将其保存为其他格式,例如 .txt? 那不是 Word,那是 RTF。 Word 是一个 ZIP 包,其中包含众所周知的 XML 格式。您发布的既不是 ZIP 文件也不是 XML\ @ThomasBonini Word 格式定义明确(ZIP 包含 XML 文件),带有 SDK 和几个开源库。不需要复制粘贴。至于文本,它会丢失所有格式。这就像要求人们用纯文本替换 html。无论如何,那不是 Word WinForms 和 WPF 从第一个版本开始就有一个 RichText 控件。您没有解释要对该 RTF 文档执行什么操作(显示?编辑?提取文本?),因此您可能需要 RTF 控件。最坏的情况,你可以使用 RTF 控件来加载文档并读取纯文本 你想做什么?您正在构建什么样的应用程序?在 WPF 中,您可以使用 FlowDocumentTextRange 类加载 RTF,而不显示任何内容。 【参考方案1】:
            var application = new Microsoft.Office.Interop.Word.Application();
            var document = new Microsoft.Office.Interop.Word.Document();

            document = application.Documents.Add(Template: @"C:\path");
            Console.WriteLine(document.Range().Text);

您需要在您的项目中添加对COMMicrosoft Word 16.0 Object Library 的引用(16.0 是应该与您的 Microsoft Word 版本相同的版本)。

如果您已经有其他读取 Word 文件的方法,那就试试.Range().Text

【讨论】:

这就像用榴弹炮杀死一只蚊子。此外,这是 RTF,不是 Word 它用于.docx 文档,库名称中包含单词Word。此外,我在本地尝试了代码 sn-p,它在读取 Word 文件并以可读格式打印它们时效果很好。 这要求实际安装了确切的 Word 版本,并且应用程序(OP 未指定)可以使用它(例如,明确不支持 Web 应用程序) 问题是关于 RTF,而不是 Word。 WinForms 和 WPF 都有 RtfTextBox 控件,因此它们不需要安装任何额外的东西。即使对于docx,使用Word 也是最后的手段。 Open XML SDK 可用于打开此类文件,即使它不是最友好的库 最后,在 NuGet 中搜索 docx 会返回 275 个结果。其中一些库是商业的,有些不是那么好,但它们都不需要安装 Word

以上是关于如何将 RTF 格式转换为字符串 C#的主要内容,如果未能解决你的问题,请参考以下文章

python模块将doc/pdf/docx/rtf格式转换为文本[重复]

在Java中使用格式将rtf转换为html

如何在 C# 中将 rtf 字符串转换为文本

C#/VB.NET 将RTF转为PDF

如何在 .Net / C# 中将日期转换为 HTTP 格式的日期

如何将格式为 2018-12-27T02:23:29 的字符串转换为 C# 中的 Unix 时间戳