1. 产品
  2.   HTML
  3.   GO
  4.   HTML2Text
 
  

免费 Go 库,将 HTML 文档转换为文本

HTML2Text 是一个非常简易的开源 Go 库,能够在 Go 应用中将 HTML 标记转换为人类可读的纯文本。

在当今的数字环境中,内容需要在多种格式和平台上保持可访问性。HTML2Text 是由 Jay Taylor 创建的强大 Go 库,解决了一个根本性挑战:将 HTML 内容转换为可读且格式良好的纯文本。最初开发该库是为了确保 HTML 邮件对所有收件人都可读——包括使用禁用 HTML 的客户端或有可访问性需求的用户——该库已发展为开发者进行内容转换的多功能工具。

该库将复杂的 HTML 结构(包括表格、列表和链接)转换为干净、带有 Markdown 风格的纯文本,同时保留逻辑结构和可读性。库包含多个重要特性,例如智能 HTML 转文本转换、带有美观格式的表格渲染、可自定义的转换选项、命令行界面等。HTML2Text 使用纯 Go 编写,无外部依赖,对常见 HTML 文档速度快,采用流式友好设计,内存高效,并且对在 Web 服务器中并发使用是线程安全的。凭借其简洁的 API、灵活的选项以及在数千个项目中的验证记录,HTML2Text 值得在你的 Go 工具箱中占有一席之地。

Previous Next

HTML2Text 入门指南

推荐且最简便的安装 HTML2Text 方法是使用 GitHub。请使用以下命令进行顺畅安装。

通过 GitHub 安装 HTML2Text 库

go get jaytaylor.com/html2text

该库要求 Go 1.x 或更高版本,并且没有任何外部依赖,使您的项目保持轻量。您也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。

使用 Go 进行基本的 HTML 转文本转换

开源的 HTML2Text 库让软件开发者能够在 Go 应用程序中轻松加载并将 HTML 文件转换为文本格式。HTML2Text 不仅仅是去除标签——它智能地解析 HTML 结构,以生成具有语义理解的可读输出,包括对标题、段落和列表的识别,链接保留(在链接文本后以括号显示 URL),以及空白字符规范化,保持可读性而不会出现过多换行,还支持字符编码,包括带有 BOM(字节顺序标记)的 UTF-8。以下是使用该库的完整示例,演示如何在 Go 应用程序中加载并将 HTML 转换为文本格式。

如何使用 Go 库将简单的 HTML 内容转换为文本格式?

package main

import (
    "fmt"
    "jaytaylor.com/html2text"
)

func main() {
    html := `
        

欢迎使用我们的服务

查看我们的 功能页面 以获取有关我们提供内容的更多信息。

  • 24/7 支持
  • 免费试用
  • 企业计划
` text, err := html2text.FromString(html, html2text.Options{}) if err != nil { panic(err) } fmt.Println(text) }

表格渲染与美观格式化

HTML2Text 的突出功能之一是能够将 HTML 表格渲染为基于 ASCII 的文本表格。纯文本中的表格通常会变成杂乱的数据汤。PrettyTables 功能使用 ASCII 艺术保留表格结构,使数值数据、价格表或比较图表在任何场景下都易于阅读。这些非常适合通过电子邮件发送的自动化报告、命令行工具输出或数据结构重要的短信通知。下面的代码示例展示了软件开发人员如何使用 Go 命令将 HTML 表格转换为格式化的 ASCII 表格。

如何使用 Go 将 HTML 表格转换为格式化的 ASCII 表格?

func sendMonthlyReport(userEmail string, metricsHTML string) {
    // Convert HTML table to formatted ASCII table
    textReport, _ := html2text.FromString(metricsHTML, html2text.Options{
        PrettyTables: true, // Preserves table structure visually
    })
    
    // Even in plain text, the data remains organized:
    // +----------------+-----------+
    // | METRIC         | VALUE     |
    // +----------------+-----------+
    // | Page Views     | 24,589    |
    // | Conversion Rate| 2.4%      |
    // +----------------+-----------+
    
    sendEmail(userEmail, "Monthly Report", textReport)
}

使用 Go 库生成电子邮件回退内容

HTML2Text 最常见的用例之一是将 HTML 电子邮件模板转换为纯文本等价物。电子邮件客户端在 HTML 渲染能力上差异很大。一些注重安全的用户会完全禁用 HTML,而较旧的客户端或为视障用户提供的屏幕阅读器通常在纯文本下表现更好。提供文本替代不仅是良好实践——它对可访问性和可送达性至关重要。通过自动生成同步的纯文本版本,您可以确保每位收件人都能阅读您的内容,减少垃圾邮件过滤器的触发,并遵守诸如 WCAG 等可访问性标准。

如何使用 Go 库为电子邮件生成纯文本回退?

func sendTransactionalEmail(userEmail, htmlContent string) error {
    // Generate plain text fallback
    textContent, err := html2text.FromString(htmlContent, html2text.Options{})
    if err != nil {
        return fmt.Errorf("failed to create text alternative: %v", err)
    }
    
    // Send multipart email (both HTML and text)
    email := &Email{
        To: userEmail,
        HTMLBody: htmlContent,
        TextBody: textContent, // Critical for users with HTML disabled
    }
    
    return emailService.Send(email)
}

在 HTML 转文本过程中处理链接

HTML2Text 库已全面支持在 HTML 转文本的转换过程中处理链接。链接在 HTML 内容中尤为重要,html2text 确保链接文本和 URL 都得以保留。链接文本正常显示,而实际的 URL 则以括号形式附加,确保纯文本版本的读者仍能访问链接资源。以下示例演示了如何实现此功能。

在 Go 应用中转换 HTML 为文本时,如何管理链接?

package main

import (
    "fmt"
    "log"
    
    "jaytaylor.com/html2text"
)

func main() {
    htmlContent := `
    
        
            

查看我们的 产品目录 或访问我们的 支持页面

` text, err := html2text.FromString(htmlContent) if err != nil { log.Fatal(err) } fmt.Println(text) }
 中国人