使用 MigraDoc 生成 DOC 或 DOCX
Generating a DOC or DOCX using MigraDoc
我正在处理一个需要创建 Word 文件的项目。为此,我正在使用 C# 的 MigraDoc 库。
使用这个库,我可以很容易地通过编写来生成 RTF 文件:
Document document = CreateDocument();
RtfDocumentRenderer rtf = new RtfDocumentRenderer();
rtf.Render(document, "test.rtf", null);
Process.Start("test.rtf");
但现在要求我获取 DOC 或 DOCX 文件,而不是 RTF 文件。有没有办法使用 MigraDoc 生成 DOC 或 DOCX 文件?如果是这样,我怎样才能做到这一点?
MigraDoc 无法生成 DOC 或 DOCX 文件。由于 MigraDoc 是开源的,如果您有足够的知识和时间,可以为 DOCX 添加渲染器。
MigraDoc 本身无法生成 DOC/DOCX,但也许您可以在生成 RTF 文件后调用外部转换工具。
我不知道任何这样的工具。 Word 可以快速打开 RTF,到目前为止,我们的客户从未抱怨过获得 RTF,而不是 DOC 或 DOCX。
更新(2019-07-29):网站提到"Word",但这只是指RTF。从来没有 .DOC 或 .DOCX 的实现。
您可以使用 Microsoft 的 DocumentFormat.OpenXML 库,它有一个 NuGet 包。
似乎没有任何 MigraDoc 呈现器支持 DOC 或 DOCX 格式。
在文档页面上我们可以看到一个 MigraDoc 功能:
Supports different output formats (PDF, Word, HTML, any printer supported by Windows)
但文档似乎说 RTF 格式与 Word 完美配合。我查看了 MigraDoc repository,但没有看到任何 DOC 呈现。我们只能使用 RTF 转换器来支持 Word。所以我们不能直接使用这个包生成DOC文件。
但我们可以轻松地将 RTF 转换为 DOC 或 DOCX(并且免费)使用 FreeSpire.Doc nuget 包。
完整的代码示例在这里:
using MigraDoc.DocumentObjectModel;
using MigraDoc.RtfRendering;
using Spire.Doc;
using System.IO;
namespace MigraDocTest
{
class Program
{
static void Main(string[] args)
{
using (var stream = new MemoryStream())
{
// Generate RTF (using MigraDoc)
var migraDoc = new MigraDoc.DocumentObjectModel.Document();
var section = migraDoc.AddSection();
var paragraph = section.AddParagraph();
paragraph.AddFormattedText("Hello World!", TextFormat.Bold);
var rtfDocumentRenderer = new RtfDocumentRenderer();
rtfDocumentRenderer.Render(migraDoc, stream, false, null);
// Convert RTF to DOCX (using Spire.Doc)
var spireDoc = new Spire.Doc.Document();
spireDoc.LoadFromStream(stream, FileFormat.Auto);
spireDoc.SaveToFile("D:\example.docx", FileFormat.Docx );
}
}
}
}
我正在处理一个需要创建 Word 文件的项目。为此,我正在使用 C# 的 MigraDoc 库。
使用这个库,我可以很容易地通过编写来生成 RTF 文件:
Document document = CreateDocument();
RtfDocumentRenderer rtf = new RtfDocumentRenderer();
rtf.Render(document, "test.rtf", null);
Process.Start("test.rtf");
但现在要求我获取 DOC 或 DOCX 文件,而不是 RTF 文件。有没有办法使用 MigraDoc 生成 DOC 或 DOCX 文件?如果是这样,我怎样才能做到这一点?
MigraDoc 无法生成 DOC 或 DOCX 文件。由于 MigraDoc 是开源的,如果您有足够的知识和时间,可以为 DOCX 添加渲染器。
MigraDoc 本身无法生成 DOC/DOCX,但也许您可以在生成 RTF 文件后调用外部转换工具。
我不知道任何这样的工具。 Word 可以快速打开 RTF,到目前为止,我们的客户从未抱怨过获得 RTF,而不是 DOC 或 DOCX。
更新(2019-07-29):网站提到"Word",但这只是指RTF。从来没有 .DOC 或 .DOCX 的实现。
您可以使用 Microsoft 的 DocumentFormat.OpenXML 库,它有一个 NuGet 包。
似乎没有任何 MigraDoc 呈现器支持 DOC 或 DOCX 格式。
在文档页面上我们可以看到一个 MigraDoc 功能:
Supports different output formats (PDF, Word, HTML, any printer supported by Windows)
但文档似乎说 RTF 格式与 Word 完美配合。我查看了 MigraDoc repository,但没有看到任何 DOC 呈现。我们只能使用 RTF 转换器来支持 Word。所以我们不能直接使用这个包生成DOC文件。
但我们可以轻松地将 RTF 转换为 DOC 或 DOCX(并且免费)使用 FreeSpire.Doc nuget 包。
完整的代码示例在这里:
using MigraDoc.DocumentObjectModel;
using MigraDoc.RtfRendering;
using Spire.Doc;
using System.IO;
namespace MigraDocTest
{
class Program
{
static void Main(string[] args)
{
using (var stream = new MemoryStream())
{
// Generate RTF (using MigraDoc)
var migraDoc = new MigraDoc.DocumentObjectModel.Document();
var section = migraDoc.AddSection();
var paragraph = section.AddParagraph();
paragraph.AddFormattedText("Hello World!", TextFormat.Bold);
var rtfDocumentRenderer = new RtfDocumentRenderer();
rtfDocumentRenderer.Render(migraDoc, stream, false, null);
// Convert RTF to DOCX (using Spire.Doc)
var spireDoc = new Spire.Doc.Document();
spireDoc.LoadFromStream(stream, FileFormat.Auto);
spireDoc.SaveToFile("D:\example.docx", FileFormat.Docx );
}
}
}
}