Bezpłatna biblioteka Go do konwertowania dokumentów HTML na tekst
HTML2Text to bardzo prosta otwarto‑źródłowa biblioteka Go, która może przekształcić znacznik HTML w czytelny dla człowieka zwykły tekst w aplikacjach Go.
W dzisiejszym cyfrowym krajobrazie treść musi być dostępna w wielu formatach i na różnych platformach. HTML2Text to potężna biblioteka Go stworzona przez Jaya Taylora, która rozwiązuje podstawowe wyzwanie: konwersję treści HTML na czytelny, dobrze sformatowany tekst zwykły. Pierwotnie opracowana, aby zapewnić czytelność e‑maili HTML dla wszystkich odbiorców — w tym tych z wyłączonymi klientami HTML lub potrzebami dostępności — biblioteka ta rozwinęła się w wszechstronne narzędzie dla programistów pracujących nad transformacją treści.
Biblioteka przekształca złożone struktury HTML, w tym tabele, listy i linki, w czysty, w stylu markdown, tekst zwykły, zachowując logiczną strukturę i czytelność. Biblioteka zawiera kilka ważnych funkcji, takich jak inteligentna konwersja HTML‑do‑tekstu, renderowanie tabel z ładnym formatowaniem, konfigurowalne opcje konwersji, interfejs wiersza poleceń i inne. HTML2Text jest napisany w czystym Go bez zewnętrznych zależności, co sprawia, że jest szybki dla typowych dokumentów HTML, oszczędny w pamięci dzięki projektowi przyjaznemu strumieniowaniu oraz bezpieczny wątkowo dla równoczesnego użycia w serwerach webowych. Dzięki prostemu API, elastycznym opcjom i sprawdzonej historii w tysiącach projektów, HTML2Text zasługuje na miejsce w Twoim zestawie narzędzi Go.
Rozpoczęcie pracy z HTML2Text
Zalecanym i najprostszym sposobem instalacji HTML2Text jest użycie GitHub. Proszę użyć poniższego polecenia, aby przeprowadzić płynną instalację.
Zainstaluj bibliotekę HTML2Text za pośrednictwem GitHub
go get jaytaylor.com/html2textBiblioteka wymaga Go 1.x lub nowszej i nie ma żadnych zewnętrznych zależności, co utrzymuje Twój projekt lekki. Możesz także zainstalować ją ręcznie; pobierz najnowsze pliki wydania bezpośrednio z repozytorium GitHub.
Podstawowa konwersja HTML do tekstu przy użyciu Go
Biblioteka open source HTML2Text ułatwia programistom ładowanie i konwertowanie plików HTML do formatu tekstowego w ich aplikacjach Go. HTML2Text nie tylko usuwa tagi — inteligentnie interpretuje strukturę HTML, aby wygenerować czytelny dla człowieka wynik z semantycznym rozumieniem nagłówków, akapitów i list, zachowaniem linków z adresami URL wyświetlanymi w nawiasach po tekście linku, normalizacją białych znaków, która utrzymuje czytelność bez nadmiernych podziałów linii, wsparciem kodowania znaków, w tym UTF-8 z BOM (Byte Order Mark). Oto pełny przykład użycia biblioteki, który pozwala ładować i konwertować HTML do formatu tekstowego w aplikacjach Go.
Jak przekonwertować prostą treść HTML do formatu tekstowego za pomocą biblioteki Go?
package main
import (
"fmt"
"jaytaylor.com/html2text"
)
func main() {
html := `
Witamy w naszej usłudze
Sprawdź naszą strona funkcji
aby uzyskać więcej informacji o tym, co oferujemy.
- Wsparcie 24/7
- Bezpłatna wersja próbna
- Plany firmowe
`
text, err := html2text.FromString(html, html2text.Options{})
if err != nil {
panic(err)
}
fmt.Println(text)
}
Renderowanie tabeli z ładnym formatowaniem
Jedną z wyróżniających się funkcji HTML2Text jest jego zdolność do renderowania tabel HTML jako tekstowych tabel opartych na ASCII. Tabele w zwykłym tekście zazwyczaj zamieniają się w chaotyczną zupę danych. Funkcja PrettyTables zachowuje strukturę tabelaryczną przy użyciu sztuki ASCII, dzięki czemu dane liczbowe, tabele cenowe lub wykresy porównawcze są czytelne w każdym kontekście. Są one idealne do automatycznych raportów wysyłanych e‑mailem, wyjścia narzędzi wiersza poleceń lub powiadomień SMS, gdzie struktura danych ma znaczenie. Poniższy przykład kodu pokazuje, jak programiści mogą przekształcić tabelę HTML w sformatowaną tabelę ASCII przy użyciu poleceń Go.
Jak przekonwertować tabelę HTML na sformatowaną tabelę ASCII za pomocą 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)
}
Generowanie awaryjnego e‑maila przy użyciu biblioteki Go
Jednym z najczęstszych zastosowań HTML2Text jest konwertowanie szablonów e‑maili HTML na ich odpowiedniki w formacie tekstowym. Klienci poczty e‑mail różnią się znacznie pod względem możliwości renderowania HTML. Niektórzy użytkownicy dbający o bezpieczeństwo wyłączają HTML całkowicie, podczas gdy starsze klienty lub czytniki ekranu dla osób niedowidzących często lepiej działają z tekstem prostym. Dostarczenie alternatywy tekstowej nie jest jedynie dobrą praktyką — jest niezbędne dla dostępności i dostarczalności. Automatycznie generując zsynchronizowane wersje tekstowe, zapewniasz, że każdy odbiorca może przeczytać Twoją treść, zmniejszasz wyzwalacze filtrów spamu i spełniasz standardy dostępności, takie jak WCAG.
Jak wygenerować tekstowy awaryjny format wiadomości e-mail za pomocą biblioteki 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)
}
Praca z linkami podczas konwersji HTML do tekstu
Biblioteka HTML2Text zawiera pełne wsparcie dla obsługi linków podczas konwersji HTML na tekst. Linki są szczególnie ważne w treściach HTML, a html2text zapewnia zachowanie zarówno tekstu linku, jak i adresu URL. Tekst linku jest wyświetlany normalnie, podczas gdy rzeczywisty URL jest dodawany w nawiasach, co pozwala czytelnikom wersji tekstowej nadal uzyskać dostęp do powiązanych zasobów. Poniższy przykład pokazuje, jak to osiągnąć.
Jak zarządzać linkami podczas konwertowania HTML na tekst w aplikacjach Go?
package main
import (
"fmt"
"log"
"jaytaylor.com/html2text"
)
func main() {
htmlContent := `
Check out our katalog produktów
or visit our stronę pomocy.
`
text, err := html2text.FromString(htmlContent)
if err != nil {
log.Fatal(err)
}
fmt.Println(text)
}