1. Các sản phẩm
  2.   HTML
  3.   GO
  4.   HTML2Text
 
  

Thư viện Go miễn phí để chuyển đổi tài liệu HTML sang Văn bản

HTML2Text là một thư viện Go mã nguồn mở rất đơn giản có thể chuyển đổi mã HTML thành văn bản thuần dễ đọc cho con người trong các ứng dụng Go.

Trong bối cảnh kỹ thuật số hiện nay, nội dung cần phải có khả năng truy cập trên nhiều định dạng và nền tảng. HTML2Text là một thư viện Go mạnh mẽ do Jay Taylor tạo ra, giải quyết một thách thức cơ bản: chuyển đổi nội dung HTML thành văn bản thuần đọc được và được định dạng tốt. Ban đầu được phát triển để đảm bảo các email HTML vẫn có thể đọc được bởi mọi người nhận — bao gồm cả những người dùng có client không hỗ trợ HTML hoặc có nhu cầu truy cập — thư viện này đã phát triển thành một công cụ đa năng cho các nhà phát triển làm việc với việc chuyển đổi nội dung.

Thư viện chuyển đổi các cấu trúc HTML phức tạp, bao gồm bảng, danh sách và liên kết, thành văn bản thuần sạch, có hương vị markdown, đồng thời bảo tồn cấu trúc logic và khả năng đọc. Có một số tính năng quan trọng của thư viện, chẳng hạn như chuyển đổi HTML sang Văn bản thông minh, hiển thị bảng với định dạng đẹp, tùy chọn chuyển đổi có thể cấu hình, giao diện dòng lệnh, v.v. HTML2Text được viết bằng Go thuần, không có phụ thuộc bên ngoài, giúp nó nhanh cho các tài liệu HTML thông thường, tiết kiệm bộ nhớ với thiết kế thân thiện streaming và an toàn đa luồng cho việc sử dụng đồng thời trên máy chủ web. Với API đơn giản, các tùy chọn linh hoạt và hồ sơ thành công đã được chứng minh trong hàng ngàn dự án, HTML2Text xứng đáng có một vị trí trong bộ công cụ Go của bạn.

Previous Next

Bắt đầu với HTML2Text

Cách khuyến nghị và dễ nhất để cài đặt HTML2Text là sử dụng GitHub. Vui lòng sử dụng lệnh sau để cài đặt suôn sẻ.

Cài đặt Thư viện HTML2Text qua GitHub

go get jaytaylor.com/html2text

Thư viện yêu cầu Go 1.x hoặc mới hơn và không có phụ thuộc bên ngoài, giữ cho dự án của bạn nhẹ. Bạn cũng có thể cài đặt thủ công; tải xuống các tệp phát hành mới nhất trực tiếp từ GitHub kho lưu trữ.

Chuyển đổi HTML sang Văn bản cơ bản bằng Go

Thư viện mã nguồn mở HTML2Text giúp các nhà phát triển phần mềm dễ dàng tải và chuyển đổi tệp HTML sang định dạng văn bản trong các ứng dụng Go của họ. HTML2Text không chỉ loại bỏ thẻ—nó thông minh phân tích cấu trúc HTML để tạo ra đầu ra dễ đọc cho con người với hiểu biết ngữ nghĩa về tiêu đề, đoạn văn và danh sách, bảo tồn liên kết với URL được hiển thị trong ngoặc đơn sau văn bản liên kết, chuẩn hoá khoảng trắng để duy trì khả năng đọc mà không có quá nhiều ngắt dòng, hỗ trợ mã hoá ký tự bao gồm UTF-8 với BOM (Byte Order Mark). Dưới đây là một ví dụ đầy đủ về cách sử dụng thư viện cho phép tải và chuyển đổi HTML sang định dạng văn bản trong các ứng dụng Go.

Cách chuyển đổi nội dung HTML đơn giản sang định dạng văn bản bằng Thư viện Go?

package main

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

func main() {
    html := `
        

Chào mừng đến với dịch vụ của chúng tôi

Xem trang tính năng để biết thêm thông tin về những gì chúng tôi cung cấp.

  • Hỗ trợ 24/7
  • Dùng thử miễn phí
  • Gói doanh nghiệp
` text, err := html2text.FromString(html, html2text.Options{}) if err != nil { panic(err) } fmt.Println(text) }

Hiển thị bảng với Định dạng đẹp mắt

Một trong những tính năng nổi bật của HTML2Text là khả năng chuyển đổi các bảng HTML thành các bảng văn bản dựa trên ASCII. Các bảng trong văn bản thuần thường trở thành một hỗn độn dữ liệu. Tính năng PrettyTables bảo tồn cấu trúc bảng bằng nghệ thuật ASCII, giúp dữ liệu số, bảng giá hoặc biểu đồ so sánh dễ đọc trong bất kỳ ngữ cảnh nào. Chúng hoàn hảo cho các báo cáo tự động được gửi qua email, đầu ra của công cụ dòng lệnh, hoặc thông báo SMS nơi cấu trúc dữ liệu quan trọng. Ví dụ mã sau đây cho thấy cách các nhà phát triển phần mềm có thể chuyển đổi bảng HTML thành bảng ASCII được định dạng bằng các lệnh Go.

Cách chuyển đổi bảng HTML thành bảng ASCII định dạng bằng Go?

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)
}

Tạo bản dự phòng Email qua Thư viện Go

Một trong những trường hợp sử dụng phổ biến nhất của HTML2Text là chuyển đổi các mẫu email HTML thành phiên bản văn bản thuần tương đương. Các client email có khả năng hiển thị HTML rất khác nhau. Một số người dùng quan tâm đến bảo mật tắt hoàn toàn HTML, trong khi các client cũ hơn hoặc trình đọc màn hình cho người khiếm thị thường hoạt động tốt hơn với văn bản thuần. Cung cấp một lựa chọn văn bản không chỉ là thực hành tốt—mà còn thiết yếu cho khả năng truy cập và khả năng gửi đi. Bằng cách tự động tạo ra các phiên bản văn bản thuần đồng bộ, bạn đảm bảo mọi người nhận có thể đọc nội dung của bạn, giảm kích hoạt bộ lọc spam và tuân thủ các tiêu chuẩn khả năng truy cập như WCAG.

Cách tạo bản dự phòng văn bản thuần cho tin nhắn email bằng Thư viện 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)
}

Làm việc với Liên kết trong quá trình chuyển HTML sang Văn bản

Thư viện HTML2Text đã bao gồm hỗ trợ đầy đủ cho việc xử lý các liên kết trong quá trình chuyển đổi HTML sang văn bản. Các liên kết đặc biệt quan trọng trong nội dung HTML, và html2text đảm bảo cả văn bản liên kết và URL đều được giữ nguyên. Văn bản liên kết được hiển thị bình thường, trong khi URL thực tế được thêm vào trong dấu ngoặc đơn, đảm bảo rằng người đọc phiên bản văn bản thuần vẫn có thể truy cập các tài nguyên được liên kết. Ví dụ sau đây minh họa cách thực hiện điều này.

Cách quản lý liên kết khi chuyển đổi HTML sang văn bản trong các ứng dụng Go?

package main

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

func main() {
    htmlContent := `
    
        
            

Hãy xem danh mục sản phẩm hoặc truy cập trang hỗ trợ.

` text, err := html2text.FromString(htmlContent) if err != nil { log.Fatal(err) } fmt.Println(text) }
 Tiếng Việt