горизонтально расположенные полосы: белая, синяя, красная

Конвертирование HTML в DOCX

Представьте, что через 15 минут после прочтения этого текста Вы сможете предоставить своему приложению API для преобразования HTML-документов в формат DOCX с помощью C#, VB.NET или другого языка .NET. Это решение может быть использовано как в .NET Core, так и в .NET Framework.

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string htmlString = "Hello World!";
h.OpenHtml(htmlString);
byte[] docxBytes = h.ToDocx();

string outputFile = @"c:\Test\result.docx";
if (docxBytes != null)
{
  File.WriteAllBytes(outputFile, docxBytes);
  System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outputFile) {
  UseShellExecute = true });
}

Несмотря на названия компонента SautinSoft.HtmlToRtf, он может одновременно конвертировать и в формат DOCX, полностью поддерживая спецификацию Office Open XML. Мы решили не менять название компонента.

Теперь Вы можете работать с классом HtmlToRtf, который предоставляет различные методы и свойства для преобразования HTML в DOCX:

скриншот всплывающего окна выбора класса конвентирования

Загрузка

DEMO-версия бесплатна.

Используя оба метода в паре OpenHtml() и ToDocx() Вы можете преобразовать HTML-документы в формат DOCX в виде MemoryStream, Files, URI или Bytes Array.

Некоторые примеры преобразования HTML в DOCX на C# и VB.NET

1. Простое преобразование HTML в DOCX на C#:

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string inputFile = @"d:\sample.html";
string outputFile = Path.ChangeExtension(inputFile, ".docx");

if (h.OpenHtml(inputFile))
{
  bool ok = h.ToDocx(outputFile);
}

2. Преобразование потока HTML в поток DOCX на C#:

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string inputFile = @"d:\utf-8.html";
string outputFile = Path.ChangeExtension(inputFile, ".docx");

// Specify the 'BaseURL' property that component can find the full path to images, like a: <img src="..\pict.png"> and
// to external css, like a: <link rel="stylesheet" href="/css/style.css">.
h.BaseURL = Path.GetFullPath(inputFile);
using (FileStream htmlFileStream = new FileStream(inputFile, FileMode.Open))
{
  if (h.OpenHtml(htmlFileStream))
  {
    using (MemoryStream docxMemoryStream = new MemoryStream())
    {
      bool ok = h.ToDocx(docxMemoryStream);
    }
  }
}

3. Преобразование HTML в DOCX в памяти с помощью VB.NET:

Dim h As New SautinSoft.HtmlToRtf()
Dim inputFile As String = "d:\pic.html"
Dim outputFile As String = Path.ChangeExtension(inputFile, ".docx")

' Read our HTML file a bytes.
Dim htmlBytes() As Byte = File.ReadAllBytes(inputFile)

' Specify the 'BaseURL' property that component can find the full path to images, like a: <img src="..\pict.png"> and
' to external css, like a: <link rel="stylesheet" href="/css/style.css">.
h.BaseURL = Path.GetFullPath(inputFile)

If h.OpenHtml(htmlBytes) Then
  Dim docxBytes() As Byte = h.ToDocx()
  ' Open the result for demonstation purposes.
  If docxBytes IsNot Nothing Then
    File.WriteAllBytes(outputFile, docxBytes)
    System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(outputFile)
    With {.UseShellExecute = True})
  End If
End If

4. Добавление пользовательского заголовка страницы из HTML и нижнего колонтитула из другого RTF в DOCX на C#:

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string inputFile = @"d:\document.html";
string outputFile = Path.ChangeExtension(inputFile, ".docx");

// Set page header and footer.
string headerFromHtml = File.ReadAllText(@"d:\header.html");
string footerFromRtf = File.ReadAllText(@"d:\footer.rtf");

// Add page header.
h.PageStyle.PageHeader.Html(headerFromHtml);

// Add extra space between header and page contents.
h.PageStyle.PageHeader.MarginBottom.Mm(10);

// Add page footer.
h.PageStyle.PageFooter.Rtf(footerFromRtf);

if (h.OpenHtml(inputFile))
{
  bool ok = h.ToDocx(outputFile);
}

5. Добавление нумерации страниц во время преобразования HTML в DOCX C#:

SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
string inputFile = @"..\..\sample.html";
string outputFile = Path.ChangeExtension(inputFile, ".docx");

// Add page numbering.
// Let's set page numbers from 1st page
h.PageStyle.PageNumbers.Appearance = SautinSoft.HtmlToRtf.ePageNumberingAppearence.PageNumFirst;

// Lest's align page numbers by top-center
h.PageStyle.PageNumbers.AlignV = SautinSoft.HtmlToRtf.eAlign.Top;
h.PageStyle.PageNumbers.AlignH = SautinSoft.HtmlToRtf.eAlign.Center;

// Lest's set page numbers format as "Page 1 of 20".
h.PageStyle.PageNumbers.Format = "Page {page} of {numpages}";

// Set page numbers font: Calibry, 19.
h.PageStyle.PageNumbers.Font.Face = SautinSoft.HtmlToRtf.eFontFace.f_Calibri;
h.PageStyle.PageNumbers.Font.Size = 19;

if (h.OpenHtml(inputFile))
{
    bool ok = h.ToDocx(outputFile);
}

Больше примеров кода смотрите здесь.

Есть вопрос?

стоящий в позе задумчивости человечек у красного знака вопроса выше его роста
  • Если у вас есть вопросы,
  • нужна помощь
  • или пример кода,

обращайтесь в нашу службу поддержки по адресу: [email protected] или спросите в онлайн-чате (правый нижний угол этой страницы). Мы Вам обязательно поможем!

Другие функции SautinSoft.HtmlToRtf

HTML →RTF ✦ HTML в DOCX HTML в Text Слияние/Замена RTF
 ВВЕРХ