[英]Generating a DOC or DOCX using 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文件的方法? 如果是这样,我该如何实现?
MigraDoc无法生成DOC或DOCX文件。 由于MigraDoc是开源的,因此如果您有足够的知识和时间,则可以为DOCX添加渲染器。
MigraDoc本身不能生成DOC / DOCX,但是也许您可以在生成RTF文件后调用外部转换工具。
我不知道任何这样的工具。 Word可以快速打开RTF,到目前为止,我们的客户从未抱怨过要获得RTF,而不是DOC或DOCX。
更新(2019-07-29):该网站提到了“单词”,但这仅指RTF。 从来没有.DOC或.DOCX的实现。
似乎没有任何支持DOC或DOCX格式的MigraDoc渲染器。
在文档页面上,我们可以看到一项MigraDoc功能:
支持不同的输出格式(PDF,Word,HTML,Windows支持的任何打印机)
但是似乎文档说明了与Word完美配合的RTF格式。 我已经审查了MigraDoc存储库 ,但没有看到任何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 );
}
}
}
}
您可以使用具有NuGet包的Microsoft的DocumentFormat.OpenXML库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.