Безкоштовна бібліотека Go для конвертації HTML‑документів у текст
HTML2Text — дуже проста бібліотека Go з відкритим кодом, яка може перетворювати розмітку HTML у зрозумілий людині простий текст у застосунках Go.
У сучасному цифровому середовищі контент має бути доступним у різних форматах і на різних платформах. HTML2Text — потужна бібліотека Go, створена Джейем Тейлором, яка вирішує фундаментальну проблему: перетворення HTML‑контенту у читабельний, добре відформатований простий текст. Спочатку розроблена для забезпечення читабельності HTML‑листів для всіх одержувачів — включаючи тих, у кого вимкнено HTML‑клієнти, або з потребами доступності — ця бібліотека перетворилася на універсальний інструмент для розробників, які працюють з трансформацією контенту.
Бібліотека перетворює складні структури HTML, включаючи таблиці, списки та посилання, у чистий, markdown‑підтримуваний простий текст, зберігаючи логічну структуру та читабельність. У бібліотеці є кілька важливих функцій, таких як інтелектуальне перетворення HTML у текст, рендеринг таблиць з гарним форматуванням, налаштовувані параметри конвертації, інтерфейс командного рядка тощо. HTML2Text написаний на чистому Go без зовнішніх залежностей, що робить його швидким для типових HTML‑документів, енергоефективним завдяки потоково‑дружньому дизайну та потокобезпечним для одночасного використання у веб‑серверах. Завдяки простому API, гнучким параметрам та доведеній успішності у тисячах проєктів, HTML2Text заслуговує місце у вашому інструментарії Go.
Початок роботи з HTML2Text
Рекомендований і найпростіший спосіб встановити HTML2Text — використати GitHub. Будь ласка, скористайтеся наступною командою для плавної інсталяції.
Встановити HTML2Text бібліотеку через GitHub
go get jaytaylor.com/html2textБібліотека вимагає Go 1.x або новішу та не має зовнішніх залежностей, що робить ваш проєкт легким. Ви також можете встановити її вручну; завантажте останні файли релізу безпосередньо з репозиторію GitHub.
Базове перетворення HTML у текст за допомогою Go
Відкрита бібліотека HTML2Text спрощує розробникам програмного забезпечення завантаження та конвертацію HTML‑файлів у текстовий формат у їхніх Go‑додатках. HTML2Text не просто видаляє теги — вона інтелектуально інтерпретує структуру HTML, щоб створювати зрозумілий людині вивід з семантичним розумінням заголовків, абзаців і списків, збереженням посилань, де URL‑адреси відображаються в дужках після тексту посилання, нормалізацією пробілів, що підтримує читабельність без надмірних розривів рядків, підтримкою кодування символів, включаючи UTF-8 з BOM (Byte Order Mark). Ось повний приклад використання бібліотеки, який дозволяє завантажувати та конвертувати HTML у текстовий формат у Go‑додатках.
Як конвертувати простий HTML‑контент у текстовий формат за допомогою бібліотеки Go?
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‑мистецтва, роблячи числові дані, прайс‑таблиці або діаграми порівняння читабельними в будь‑якому контексті. Це ідеально підходить для автоматизованих звітів, що надсилаються електронною поштою, виводу інструментів командного рядка або SMS‑повідомлень, де важлива структура даних. Нижче наведено приклад коду, який показує, як розробники можуть перетворити HTML‑таблицю у відформатовану ASCII‑таблицю за допомогою команд Go.
Як конвертувати HTML‑таблицю у відформатовану ASCII‑таблицю за допомогою 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)
}
Генерація резервного електронного листа за допомогою бібліотеки 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 додається в дужках, що дозволяє читачам текстової версії все ще отримувати доступ до пов’язаних ресурсів. Наведений нижче приклад демонструє, як це досягти.
Як керувати посиланнями під час конвертації HTML у текст у додатках Go?
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)
}