HTML Belgelerini Metne Dönüştürmek İçin Ücretsiz Go Kütüphanesi
HTML2Text, Go uygulamaları içinde HTML işaretlemesini insan tarafından okunabilir düz metne dönüştürebilen çok basit bir açık kaynaklı Go kütüphanesidir.
Günümüz dijital ortamında, içerik birden fazla format ve platformda erişilebilir olmalıdır. HTML2Text, Jay Taylor tarafından oluşturulan güçlü bir Go kütüphanesidir ve temel bir sorunu çözer: HTML içeriğini okunabilir, iyi biçimlendirilmiş düz metne dönüştürmek. Başlangıçta, HTML e-postalarının tüm alıcılar tarafından—HTML'i devre dışı bırakmış istemciler veya erişilebilirlik ihtiyaçları olanlar dahil—okunabilir olmasını sağlamak için geliştirilmiş olan bu kütüphane, içerik dönüşümüyle çalışan geliştiriciler için çok yönlü bir araç haline gelmiştir.
Kütüphane, tablolar, listeler ve bağlantılar dahil olmak üzere karmaşık HTML yapılarını, mantıksal yapıyı ve okunabilirliği koruyarak temiz, markdown-tarzı düz metne dönüştürür. Kütüphanenin bir parçası olan birkaç önemli özellik vardır; Akıllı HTML'den Metne dönüşüm, güzel biçimlendirmeli tablo render'ı, özelleştirilebilir dönüşüm seçenekleri, komut satırı arayüzü vb. HTML2Text, harici bağımlılıkları olmayan saf Go ile yazılmıştır, bu da tipik HTML belgeleri için hızlı, akış dostu tasarımıyla bellek verimli ve web sunucularında eşzamanlı kullanım için thread-safe (iş parçacığı güvenli) olmasını sağlar. Basit API'si, esnek seçenekleri ve binlerce projedeki kanıtlanmış performans geçmişiyle HTML2Text, Go araç setinizde bir yere sahip olmayı hak ediyor.
HTML2Text ile Başlarken
HTML2Text'i kurmanın önerilen ve en kolay yolu GitHub kullanmaktır. Lütfen sorunsuz bir kurulum için aşağıdaki komutu kullanın.
HTML2Text Kütüphanesini GitHub üzerinden Kurun
go get jaytaylor.com/html2textKütüphane Go 1.x veya daha yenisini gerektirir ve dış bağımlılıkları sıfırdır, projenizi hafif tutar. Ayrıca manuel olarak da kurabilirsiniz; en son sürüm dosyalarını doğrudan GitHub deposundan indirin.
Go ile Temel HTML'den Metne Dönüştürme
Açık kaynaklı HTML2Text kütüphanesi, yazılım geliştiricilerin Go uygulamaları içinde HTML dosyasını yükleyip metin formatına dönüştürmesini kolaylaştırır. HTML2Text sadece etiketleri kaldırmakla kalmaz—HTML yapısını akıllıca yorumlayarak başlıklar, paragraflar ve listeler hakkında anlamsal anlayışa sahip, insan tarafından okunabilir bir çıktı üretir; bağlantı metninin ardından parantez içinde URL'leri göstererek bağlantı koruması sağlar, aşırı satır sonu olmadan okunabilirliği koruyan boşluk normalizasyonu yapar, UTF-8 BOM (Byte Order Mark) dahil karakter kodlaması desteği sunar. İşte kütüphaneyi kullanarak Go uygulamaları içinde HTML'yi metin formatına yükleyip dönüştüren tam bir örnek.
Go Kütüphanesi ile Basit HTML İçeriğini Metin Formatına Nasıl Dönüştürürsünüz?
package main
import (
"fmt"
"jaytaylor.com/html2text"
)
func main() {
html := `
Hizmetimize Hoş Geldiniz
Ne sunduğumuz hakkında daha fazla bilgi için özellikler sayfasına
göz atın.
- 7/24 Destek
- Free Trial
- Enterprise Plans
`
text, err := html2text.FromString(html, html2text.Options{})
if err != nil {
panic(err)
}
fmt.Println(text)
}
Güzel Biçimlendirme ile Tablo Oluşturma
HTML2Text'in öne çıkan özelliklerinden biri, HTML tablolarını ASCII tabanlı metin tablolarına dönüştürme yeteneğidir. Düz metin tabloları genellikle karışık veri çorbasına dönüşür. PrettyTables özelliği, ASCII sanatı kullanarak tablo yapısını korur ve sayısal verileri, fiyat tablolarını veya karşılaştırma grafiklerini her bağlamda okunabilir hâle getirir. Bunlar, veri yapısının önemli olduğu e-posta ile gönderilen otomatik raporlar, komut satırı aracı çıktıları veya SMS bildirimleri için mükemmeldir. Aşağıdaki kod örneği, yazılım geliştiricilerin Go komutlarıyla HTML tablosunu biçimlendirilmiş ASCII tabloya nasıl dönüştürebileceğini gösterir.
Go ile HTML Tablosunu Biçimlendirilmiş ASCII Tablosuna Nasıl Dönüştürürsünüz?
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 Kütüphanesi ile E-posta Yedek Oluşturma
HTML2Text'in en yaygın kullanım senaryolarından biri, HTML e-posta şablonlarını düz metin eşdeğerlerine dönüştürmektir. E-posta istemcileri, HTML renderleme yetenekleri açısından büyük ölçüde farklılık gösterir. Güvenlik odaklı bazı kullanıcılar HTML'yi tamamen devre dışı bırakırken, eski istemciler veya görme engelli kullanıcılar için ekran okuyucular genellikle düz metinle daha iyi çalışır. Metin alternatifi sağlamak sadece iyi bir uygulama değil—erişilebilirlik ve teslim edilebilirlik için esastır. Otomatik olarak senkronize düz metin sürümleri oluşturarak, her alıcının içeriğinizi okuyabilmesini, spam filtre tetiklemelerini azaltmasını ve WCAG gibi erişilebilirlik standartlarına uymasını sağlarsınız.
Go Kütüphanesi ile Bir E-posta Mesajının Düz Metin Yedek Versiyonunu Nasıl Oluşturursunuz?
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'den Metne Dönüştürürken Bağlantılarla Çalışma
HTML2Text kütüphanesi, HTML'den metne dönüşüm sırasında bağlantıların işlenmesi için tam destek eklemiştir. Bağlantılar, HTML içeriğinde özellikle önemlidir ve html2text, hem bağlantı metninin hem de URL'nin korunmasını sağlar. Bağlantı metni normal olarak görüntülenirken, gerçek URL parantez içinde eklenir; bu sayede düz metin sürümünün okuyucuları hâlâ bağlantılı kaynaklara erişebilir. Aşağıdaki örnek, bunun nasıl yapılacağını gösterir.
Go Uygulamalarında HTML'yi Metne Dönüştürürken Bağlantıları Nasıl Yönetirsiniz?
package main
import (
"fmt"
"log"
"jaytaylor.com/html2text"
)
func main() {
htmlContent := `
Ürün kataloğumuza göz atın ürün kataloğu
veya destek sayfamızı ziyaret edin destek sayfası.
`
text, err := html2text.FromString(htmlContent)
if err != nil {
log.Fatal(err)
}
fmt.Println(text)
}