使用MigraDoc生成DOC或DOCX

时间:2015-06-16 05:39:19

标签: c# pdfsharp migradoc

我正在开发一个需要创建Word文件的项目。为此,我使用MigraDoc库进行C#。

使用这个库,我可以通过编写:

轻松生成RTF文件
Document document = CreateDocument();
RtfDocumentRenderer rtf = new RtfDocumentRenderer();
rtf.Render(document, "test.rtf", null);
Process.Start("test.rtf");

但现在要求我要求获取DOC或DOCX文件而不是RTF文件。有没有办法使用MigraDoc生成DOC或DOCX文件?如果是这样,我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:2)

MigraDoc无法生成DOC或DOCX文件。由于MigraDoc是开源的,如果您有知识和时间,可以为DOCX添加渲染器。

MigraDoc因为它无法生成DOC / DOCX,但也许您可以在生成RTF文件后调用外部转换工具。
我不知道任何这样的工具。 Word可以快速打开RTF,到目前为止,我们的客户从不抱怨获得RTF,而不是DOC或DOCX。

答案 1 :(得分:1)

似乎没有任何支持 DOC DOCX 格式的 MigraDoc 渲染器。

在文档页面上,我们可以看到一项 MigraDoc 功能:

  

支持不同的输出格式(PDF,Word,HTML,Windows支持的任何打印机)

但是似乎文档说明了与Word完美配合的 RTF 格式。我已经审查过MigraDoc repository,但没有看到任何 DOC 渲染图。我们只能将 RTF 转换器用于Word支持。因此,我们无法直接使用此软件包直接生成 DOC 文件。

但是我们可以使用FreeSpire.Doc nuget软件包轻松地(免费)将 RTF 转换为 DOC DOCX

完整的代码示例在这里:

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 );
            }
        }
    }
}

答案 2 :(得分:0)

您可以使用Microsoft的具有NuGet包的DocumentFormat.OpenXML库。