用 C# 将 HTML 转换为 DOCX

DOCX 文件是一种 Microsoft Word 文档,通常包含文本,但也可以包含各种数据,包括表格、光栅和矢量图形、视频、声音和图表。DOCX 文件可编辑性强,易于使用,大小适中。这种格式之所以流行,是因为它为用户编写任何类型的文档提供了多种选择。这种文件格式是使用最广泛的文件格式之一,可通过许多程序使用。

使用 Converter.ConvertHTML 方法是将 HTML 代码转换为各种格式的最常用方法。使用 Aspose.HTML for .NET,您可以通过编程将 HTML 转换为 DOCX 格式,并完全控制各种转换参数。本文将介绍如何使用 Converter 类的 ConvertHTML() 方法将 HTML 转换为 DOCX,以及如何应用 DocSaveOptionsICreateStreamProvider 参数。

在线 HTML 转换器

您可以检查 Aspose.HTML for .NET API 的功能并实时转换 HTML。请从本地文件系统加载 HTML,选择输出格式并运行示例。在示例中,默认设置了保存选项。您将立即以单独文件的形式收到结果。

                
            

如果您想通过编程将 HTML 转换为 DOCX,请参阅以下 C# 代码示例。

用一行代码将 HTML 转换为 DOCX

Converter 类的静态方法主要用作将 HTML 代码转换为各种格式的最简单方法。只需一行代码,您就可以在 C# 应用程序中将 HTML 转换为 DOCX!

1// Convert HTML to DOCX in C#
2
3// Invoke the ConvertHTML() method to convert HTML to DOCX
4Converter.ConvertHTML(@"<h1>Convert HTML to DOCX!</h1>", ".", new DocSaveOptions(), Path.Combine(OutputDir, "convert-with-single-line.docx"));

将 HTML 转换为 DOCX

使用 ConvertHTML() 方法将文件转换为另一种格式是一系列操作,其中包括文件加载和保存:

  1. 使用 HTMLDocument 类加载 HTML 文件。
  2. 创建一个新的 DocSaveOptions 对象。
  3. 使用 Converter 类的 ConvertHTML() 方法将 HTML 保存为 DOCX 文件。您需要向 ConvertHTML() 方法传递 HTMLDocument、DocSaveOptions 和输出文件路径,以便将 HTML 转换为 DOCX。

请看下面的 C# 代码片段,它展示了使用 Aspose.HTML for .NET 将 HTML 转换为 DOCX 的过程。

 1// Convert HTML to DOCX using C#
 2
 3// Prepare a path to a source HTML file
 4string documentPath = Path.Combine(DataDir, "canvas.html");
 5
 6// Prepare a path to save the converted file
 7string savePath = Path.Combine(OutputDir, "canvas-output.docx");
 8
 9// Initialize an HTML document from the file
10using HTMLDocument document = new HTMLDocument(documentPath);
11
12// Initialize DocSaveOptions
13DocSaveOptions options = new DocSaveOptions();
14
15// Convert HTML to DOCX
16Converter.ConvertHTML(document, options, savePath);

DocSaveOptions

Aspose.HTML 允许使用默认或自定义保存选项将 HTML 转换为 DOCX。使用 DocSaveOptions 可以自定义渲染过程;可以指定页面大小、页边距、分辨率、CSS 等。

PropertyDescription
FontEmbeddingRuleThis property gets or sets the font embedding rule. Available values are Full and None. The default value is None.
CssGets a CssOptions object which is used for configuration of CSS properties processing.
DocumentFormatThis property gets or sets the file format of the output document. The default value is DOCX.
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.

要了解有关 DocSaveOptions 的更多信息,请阅读 微调转换器 一文。

使用 DocSaveOptions 将 HTML 转换为 DOCX

要使用指定的 DocSaveOptions 将 HTML 转换为 DOCX,应遵循以下几个步骤:

  1. 使用 HTMLDocument 类的 HTMLDocument() 构造函数之一加载 HTML 文件。
  2. 创建一个新的 DocSaveOptions 对象。
  3. 使用 Converter 类的 ConvertHTML() 方法将 HTML 保存为 DOCX 文件。您需要向 ConvertHTML() 方法传递 HTMLDocument、DocSaveOptions 和输出文件路径,以便将 HTML 转换为 DOCX。

下面的示例展示了如何使用 DocSaveOptions 创建带有自定义保存选项的 DOCX 文件:

 1// Convert HTML to DOCX in C# with custom settings
 2
 3string documentPath = Path.Combine(OutputDir, "save-options.html");
 4string savePath = Path.Combine(OutputDir, "save-options-output.docx");
 5
 6// Prepare HTML code and save it to a file
 7string code = "<h1>DocSaveOptions Class</h1>\r\n" +
 8              "<p>Using DocSaveOptions Class, you can programmatically apply a wide range of conversion parameters.</p>\r\n";
 9
10File.WriteAllText(documentPath, code);
11
12// Initialize an HTML Document from the html file
13using HTMLDocument document = new HTMLDocument(documentPath);
14
15// Initialize DocSaveOptions. Set A5 as a page-size 
16DocSaveOptions options = new DocSaveOptions();
17options.PageSetup.AnyPage = new Page(new Aspose.Html.Drawing.Size(Length.FromInches(8.3f), Length.FromInches(5.8f)));
18
19// Convert HTML to DOCX
20Converter.ConvertHTML(document, options, savePath);

DocSaveOptions() 构造函数初始化 DocSaveOptions 类的实例,并将其传递给 ConvertHTML() 方法。ConvertHTML() 方法接收 document, options, 输出文件路径 savePath 并执行转换操作。DocSaveOptions 类提供了大量属性,可让您全面控制各种参数,并改进 HTML 到 DOCX 格式的转换过程。在上例中,我们使用 PageSetup 属性指定 DOCX 文档的 page size

输出流提供商

如果需要将文件保存在远程存储器(如云、数据库等)中,可以实现 ICreateStreamProvider接口来手动控制文件创建过程。该接口被设计为一个回调对象,用于在文档/页面开始时创建一个流(取决于输出格式),并在渲染文档/页面后释放早期创建的流。

Aspose.HTML for .NET为渲染操作提供了多种输出格式。其中一些格式只生成一个输出文件(例如 PDFXPS),其他格式则生成多个文件(图像格式 JPGPNG等)。

下面的示例展示了如何在应用程序中实现和使用自己的MemoryStreamProvider

 1// Implement a custom MemoryStream provider for advanced control over HTML rendering output streams
 2
 3class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
 4{
 5    // List of MemoryStream objects created during the document rendering
 6    public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
 7
 8    public Stream GetStream(string name, string extension)
 9    {
10        // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats
11        MemoryStream result = new MemoryStream();
12        Streams.Add(result);
13        return result;
14    }
15
16    public Stream GetStream(string name, string extension, int page)
17    {
18        // This method is called when the creation of multiple output streams are required. For instance, during the rendering HTML to list of image files (JPG, PNG, etc.)
19        MemoryStream result = new MemoryStream();
20        Streams.Add(result);
21        return result;
22    }
23
24    public void ReleaseStream(Stream stream)
25    {
26        // Here you can release the stream filled with data and, for instance, flush it to the hard-drive
27    }
28
29    public void Dispose()
30    {
31        // Releasing resources
32        foreach (MemoryStream stream in Streams)
33            stream.Dispose();
34    }
35}

下面的代码片段演示了如何使用内存流将 HTML 文件转换为 DOCX 文件。

 1// Convert HTML to DOCX in C# using memory stream
 2
 3// Create an instance of MemoryStreamProvider
 4using MemoryStreamProvider streamProvider = new MemoryStreamProvider();
 5
 6// Initialize an HTML document
 7using HTMLDocument document = new HTMLDocument(@"<h1>Convert HTML to DOCX File Format!</h1>", ".");
 8
 9// Convert HTML to DOCX using the MemoryStreamProvider
10Converter.ConvertHTML(document, new DocSaveOptions(), streamProvider);
11
12// Get access to the memory stream that contains the result data
13MemoryStream memory = streamProvider.Streams.First();
14memory.Seek(0, SeekOrigin.Begin);
15
16// Flush the result data to the output file
17using (FileStream fs = File.Create(Path.Combine(OutputDir, "stream-provider.docx")))
18{
19    memory.CopyTo(fs);
20}

下载 Aspose.HTML for .NET库,它能让您成功、快速、轻松地将 HTML、MHTML、EPUB、SVG 和 Markdown 文档转换为最流行的格式。

Aspose.HTML 提供一款免费的在线 HTML 到 DOCX 转换器,可将 HTML 高质量、方便快捷地转换为 DOCX。只需上传、转换您的文件,几秒钟就能得到结果!

文本 “HTML 到 DOCX 转换器”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.