guide支持的内容格式功能

导出至 Word 能够将 HTML 内容转换为 Word 文档,同时保留内容的原始格式。转换器支持各种 HTML 元素和 CSS 属性,允许转换复杂的内容结构。

本文档概述了支持的内容格式功能,包括文本样式、内联元素、块级元素和常见的 CSS 属性类型。

您可以使用内联样式、在 <style> 元素内定义的样式或通过 css 配置选项 提供的样式来设置 HTML 内容的样式。转换器支持样式继承,因此在父元素上设置的任何属性也适用于子元素,只要给定属性在 CSS 中是可继承的。

# 文本

转换器支持许多具有默认样式的内联 HTML 元素

元素名称 默认样式
abbr
b font-weight: bold
br
cite font-style: italic
code font-family: monospace
del text-decoration: line-through solid black
dfn font-style: italic;
em font-style: italic;
i font-style: italic;
ins text-decoration: underline solid black
kbd font-family: monospace
mark background-color: yellow
s text-decoration: line-through solid black
samp font-family: monospace
small font-size: smaller
span
strong font-weight: bold
sub vertical-alignment: sub; font-size: smaller
sup vertical-alignment: sup; font-size: smaller
u text-decoration: underline solid black
var font-style: italic

此外,所有元素都支持 idclassstyle 属性,这些属性可用于使用各种 CSS 属性来格式化文档内容。以下部分概述了支持的 CSS 属性。

# 字体大小

可以使用 font-size 属性控制字体的尺寸。

# 字体系列

可以使用 font-family 属性设置字体系列。当指定多个字体系列名称时,只使用第一个。例如,以下 HTML 将生成一个使用 Courier New 字体的文档

<span style="font-family: 'Courier New', Courier, monospace">
    Example text
</span>

Text with Courier New font

通用 CSS 字体系列将转换为以下知名字体

通用 CSS 字体系列 Word 等效项
serif Times New Roman
sans-serif Arial
cursive Times New Roman
fantasy Impact
monospace Courier New
system-ui Verdana
math Times New Roman
fangsong Times New Roman
kai Times New Roman
nastaliq Times New Roman
ui-serif Times New Roman
ui-sans-serif Arial
ui-monospace Courier New
ui-rounded Times New Roman

# 已知限制

  • 文档中使用的所有字体可能在 Word 中都不可用。

# 字体样式

可以使用 font-style 属性设置字体的样式

  • normal:既不是斜体也不是倾斜的字体
  • italic:斜体字体
  • oblique:与 italic 相同

不支持倾斜字体中的自定义倾斜角。

# 字体粗细

要使文本变为粗体,可以使用 font-weight 属性。以下值将导致粗体文本

  • bold
  • 大于或等于 700 的值

不支持其他值。

# 前景色和背景色

可以使用 colorbackground-color 属性分别指定前景色和背景色。转换器只支持 sRGB 色彩空间中的颜色

  • 命名颜色,如 redgreenblue
  • 十六进制颜色表示法,如 #FF000#00FF00#0000FF
  • sRGB 颜色函数:hsl()hwb()rgb()

不支持其他色彩空间(如 CIELAB 或 Oklab)和自定义色彩空间。

# 已知限制

  • 对半透明背景色的支持有限。不会将重叠的半透明颜色混合在一起。

# 文本装饰

文本装饰的转换根据 text-decoration-line 属性的值在不同程度上得到支持。只支持 underlineline-through 线类型。

# 下划线

text-decoration-line 属性设置为 underline 时,转换器将在文本下方添加下划线。以下其他属性也适用于下划线

  • text-decoration-style:支持 soliddoubledotteddashedwavy 值。
  • text-decoration-color:支持与 前景色和背景色 相同的值。

# 删除线

text-decoration-line 属性设置为 line-through 时,转换器将生成带删除线的文本。

  • text-decoration-style:支持 soliddouble 值。

# 下标和上标

要使文本显示为下标或上标,可以将 vertical-align 属性分别设置为 subsuper

转换器将具有 href 属性的 <a> 元素转换为超链接。

href 属性允许的 URL 方案

  • http
  • https
  • file
  • ftp
  • mailto
  • sms
  • tel

可以使用 base_url 配置选项更改超链接的基准 URL。该选项将所有相对链接更改为绝对链接。有关此选项的更多信息,请参阅 API 文档

具有 href:##top<a> 元素将转换为 Word 文档顶部的链接。如果文档包含 id 等于 #top<a> 元素,则所有 href 为 #top<a> 元素将指向该元素。

# 书签

转换器将具有 id 属性的 <a> 元素转换为书签。这允许保留链接 HTML 文本片段的行为。

id 属性的最大长度为 40 个 Unicode 字符,因为这是 Word 允许的书签名称的最大长度,任何超过此长度的 id 将被截断。

# 图片

转换器支持 <img> 元素的转换。支持以下属性

  • src
  • width
  • height
  • alt

alt 属性 (alt="") 与缺少 alt 属性的属性相同。

src 属性允许的 URL 方案

  • http
  • https
  • data

可以使用 base_url 配置选项更改图片的基准 URL。该选项将所有相对图片源更改为绝对链接。有关此选项的更多信息,请参阅 API 文档

支持的图片格式包括

  • apng
  • avif
  • bmp
  • gif
  • heic*
  • jpg
  • png
  • svg
  • tiff*
  • webp

* 图片宽度和高度的转换可能无法正常工作。

转换器会将所有图片下载并嵌入到文档本身。这意味着在转换时必须能够通过 Internet 访问所有图片。如果无法访问图片,转换器会生成一个链接到其源的图片。但是,只有当用户在线并且可以访问图片时,Word 才会显示这些图片。

Word 使用占位符图片替换缺少的图片。除非源图片明确定义了 widthheight 属性,否则该占位符的大小不会设置。

# 图片标题

您可以使用 <figcaption> 元素创建图片标题。要使此功能正常工作,<figcaption><img> 必须都放置在 <figure> 元素内。

带有标题的图片转换示例

<figure>
    <img src="https://placeholder.com/200"/>
    <figcaption>This is caption of example image.</figcaption>
</figure>

Captioned image

# 已知限制

  • 要使带标题的图片正确转换,<figure> 元素内不能包含除必需元素以外的其他元素。
  • 标题始终位于图片下方。

# 图片定位

<figure> 元素中的图像可以进行额外的定位。下表列出了定位类型以及必须应用于 <figure> 元素的样式,以便转换器正确生成定位图像。

定位 应用于 <figure> 元素的样式
图像水平对齐到左侧 margin-left: 0; margin-right: auto
图像水平居中 margin-left: auto; margin-right: auto
图像水平对齐到右侧 margin-left: auto; margin-right: 0
文本从左侧环绕的图像 float: right
文本从右侧环绕的图像 float: left

# 段落

转换器将 <p> 元素转换为段落。此外,放置在任何块元素之外的内联内容会自动包装在段落中。多个后续的内联元素放置在块元素之外,会包装在同一个段落中。

This is text content outside of any block element.<br />
<strong>That can be additionally styled.</strong>
<p>This is a paragraph</p>

Text content outside of any block element and a paragraph

此外,段落支持以下部分描述的格式属性。

# 文本对齐

可以通过 text-align 属性在段落内对齐内联内容。支持以下值

  • left
  • center
  • right
  • justify

# 行高

可以通过 line-height 属性更改行的高度。转换器支持无单位值和指定单位的值。normal 值与 1.2 相同。

# 间距和缩进

可以通过应用 margin 属性来更改间距和缩进

  • 缩进由 margin-leftmargin-right 属性控制。
  • 段落上方和下方的间距分别由 margin-topmargin-bottom 属性控制。

例如,考虑以下设置默认段落间距为 1 cm,并将中间段落的左侧缩进设置为 4 cm 的 HTML 代码

<style>
p {
    margin-top: 1cm;
    margin-bottom: 1cm;
}
</style>

<p>First paragraph with the default indentation and 1cm spacing.</p>
<p style="margin-left: 4cm">Second paragraph with 4cm left indentation.</p>
<p>Third paragraph with the default indentation and 1cm spacing.</p>

Margins

# 背景颜色

可以通过 background-color 属性以与 文本的背景颜色 相同的方式设置段落的背景颜色。

# 标题

转换器支持所有级别的 HTML 标题 <h1><h6>。标题根据其级别转换为相应的 Word 样式。有关更多信息,请参见 Word 样式 部分。

标题支持与段落相同的文本格式。

# 列表

转换器支持有序 <ol> 和无序 <ul> 列表。

支持嵌套列表,最多支持 9 级嵌套,大于 9 级的嵌套会强制转换为 9 级,这是 Word 支持的最大级别。

可以使用 start 属性更改有序列表的起始值。负值会强制转换为 0,因为 Word 不支持负值。

示例

<ul>
    <li>First item</li>
    <li>
        Second item
        <ul>
            <li>Third item</li>
        </ul>
    </li>
</ul>
<ol start="4">
    <li>Fourth item</li>
    <li>Fifth item</li>
</ol>

Unordered and ordered lists

# 标记类型

可以通过将 list-style-type 属性应用于 <ol><ul> 元素来更改列表项标记的样式。

仅支持以下类型

  • decimal
  • decimal-leading-zero
  • lower-alpha
  • lower-latin
  • upper-alpha
  • upper-latin
  • lower-roman
  • upper-roman
  • disc
  • circle
  • square
  • none

不支持的列表类型将被视为 disc

# 已知限制

  • 目前不支持 多级列表
  • 不支持列表项标记的格式。同样,list-style-type 也不能应用于 <li> 元素。
  • 不支持列表及其内容的缩进。
  • 由于 Word 的限制,不支持反转列表。

# 表格

转换器将任何 <table> 元素转换为表格。<table> 元素可以放置在 <figure> 元素中,在表格单元格中(允许嵌套表格),或者直接放置在文档正文中。

<style>
    table {
        border-collapse: collapse;
    }
    th,
    td {
        border: 1px solid black;
        padding: 10px;
    }
</style>
<figure>
    <table>
        <thead>
            <tr>
                <th>Cell 1</th>
                <th>Cell 2</th>
                <th>Cell 3</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Cell 1</td>
                <td>Cell 2</td>
                <td>Cell 3</td>
            </tr>
            <tr>
                <td>Cell 4</td>
                <td>Cell 5</td>
                <td>Cell 6</td>
            </tr>
        </tbody>
    </table>
</figure>

Table

此外,转换器还支持以下过时的表格属性

  • align
  • bgcolor
  • border
  • cellpadding
  • cellspacing
  • frame
  • rules
  • width

# 表格列

可以使用 <colgroup><col> 元素定义表格的列。转换器支持这两个元素。转换器还支持这两个元素上的 span 属性。

# 表格行

转换器支持 <thead><tbody><tfoot> 行组元素以及 <tr> 元素。仅第一个 <thead><tfoot> 元素被识别为表格标题和页脚,如果它们放置在错误的顺序中,转换器会将它们移动,以便分别放置在表格开头或结尾。

第一个 <thead> 元素中的所有行都被视为标题行,并在 Word 中的每个新页面上重复。

这些元素支持以下过时的属性

  • bgcolor
  • valign

# 表格单元格

表格单元格由 <th><td> 元素定义。由于 Word 不支持标题单元格,因此 <th> 元素与 <td> 元素相同。

表格单元格可以通过将 colspanrowspan 属性应用于它们来跨越多个列或行。但是,rowspan 不能超过当前行组中的行数,否则它会被强制转换为该行数。

表格单元格支持以下过时的属性

  • bgcolor
  • height
  • valign
  • width

此外,scope 属性可以应用于 <th> 元素,尽管转换器会忽略它。

# 表格定位

表格可以像图像一样进行定位,但所需的样式可以应用于 <table> 元素本身或父 <figure> 元素。可以使用左右边距来水平对齐表格。

定位 应用于 <table><figure> 元素的样式
表格水平对齐到左侧 margin-left: 0; margin-right: auto
表格水平居中 margin-left: auto; margin-right: auto
表格水平对齐到右侧 margin-left: auto; margin-right: 0

float 属性可以将表格对齐到左侧或右侧,文本在另一侧环绕。

定位 应用于 <table><figure> 元素的样式
文本从左侧环绕的表格 float: right
文本从右侧环绕的表格 float: left

# 表格边框

所有表格元素都可以使用以下属性来设置表格边框的样式

  • border-color
  • border-style
  • border-width

ridgegroove 线样式分别转换为 insetoutset,Word 对它们的渲染方式与浏览器不同。此外,如果 double 边框的宽度小于或等于 1 px,它们将转换为 solid 边框。

边框颜色支持与 文本的前景和背景颜色 相同的值。Word 支持的最小和最大边框宽度分别为 0.333… px 和 16 px。超出此范围的值会被强制转换为边界值。

此外,<table> 元素支持另外两个与边框相关的属性

  • border-collapse
  • border-spacing

它们可以用来控制表格的边框是否应该合并或分开。Word 不支持没有间距的分开边框,因此在这些情况下,转换器会将间距设置为最小值 0.05 pt。

# 背景颜色

可以通过 background-color 属性以与 文本的背景颜色 相同的方式设置任何表格元素的背景颜色。

# 表格和表格单元格宽度

<table><th><td> 元素支持 width 属性,该属性可以用来设置整个表格或单个表格单元格的宽度。百分比不受完全支持,它们始终会被转换为绝对单位。

# 表格行高

<tr> 元素支持 height 属性,该属性用于定义表格行的高度。转换器始终将此值视为最小表格行高。

# 表格单元格边距

表格单元格的边距由 <th><td> 元素上的 padding 属性指定。

# 垂直内容对齐

可以将 vertical-align 属性设置为 <th><td> 元素,以定义单元格中的内容应如何垂直对齐。支持的值为 topmiddlebottom

# 已知限制

  • 目前不支持表格标题。
  • Word 不支持列表项中的表格,因此它们会被移出列表。

# 预格式化文本

转换器支持 <pre> 元素,允许以固定宽度字体显示文本。这通常用于显示代码片段。

<pre>
 ________________
/                \
| How about moo? |  ^__^
\________________/  (oo)\_______
                  \ (__)\       )\/\
                        ||----w |
                        ||     ||
</pre>

Preformatted text

# 引文

转换器支持 <blockquote> 元素,允许将内容显示为引文。

示例

<blockquote>
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eu
 scelerisque tortor. Cras venenatis iaculis velit sit amet sollicitudin.
</blockquote>

Quotation

# 分页符

转换器支持 break-afterbreak-before 属性的 page 值。将此样式属性添加到任何内联或块 HTML 元素将导致在相应的元素之前或之后生成一个分页符。

不支持表格中的分页符。

# 水平线

转换器支持 <hr> 元素,允许在 Word 文档中插入水平线。

水平线不支持任何样式。

# 被忽略的元素

转换器会忽略任何 display 属性设置为 nonecontents,或 visibility 属性设置为 hiddencollapse 的元素。

# 语言

转换器支持所有支持的包含文本的 HTML 元素上的 lang 属性。在 Word 中,lang 属性指定用于对元素中的文本进行拼写检查的语言。