کتابخانه رایگان Go برای تبدیل اسناد HTML به متن
HTML2Text یک کتابخانه بسیار ساده منبع باز Go است که میتواند نشانهگذاری HTML را به متن ساده قابل خواندن برای انسان درون برنامههای Go تبدیل کند.
در فضای دیجیتال امروز، محتوا باید در قالبها و پلتفرمهای مختلف قابل دسترسی باشد. HTML2Text یک کتابخانه قدرتمند Go است که توسط جِی تیلور ایجاد شده و یک چالش اساسی را حل میکند: تبدیل محتوای HTML به متن ساده، قابل خواندن و بهخوبی قالببندیشده. این کتابخانه در ابتدا برای اطمینان از قابل خواندن بودن ایمیلهای HTML برای تمام دریافتکنندگان—از جمله کسانی که کلاینتهای غیر فعال HTML دارند یا نیازهای دسترسی دارند—توسعه یافت و به ابزاری چندمنظوره برای توسعهدهندگانی که با تبدیل محتوا کار میکنند، تبدیل شده است.
این کتابخانه ساختارهای پیچیده HTML، از جمله جداول، فهرستها و لینکها را به متن سادهای با طعم مارکداون تبدیل میکند، در حالی که ساختار منطقی و خوانایی را حفظ مینماید. ویژگیهای مهمی در این کتابخانه وجود دارد، مانند تبدیل هوشمند HTML به متن، رندر جداول با قالببندی زیبا، گزینههای قابل تنظیم برای تبدیل، رابط خط فرمان و غیره. HTML2Text بهصورت خالص Go نوشته شده است و بدون وابستگیهای خارجی است، که باعث میشود برای اسناد HTML معمولی سریع باشد، با طراحی مناسب برای استریمینگ حافظهکارآمد باشد و برای استفاده همزمان در سرورهای وب ایمن از نظر رشتهها (thread‑safe) باشد. با 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 (علامت ترتیب بایت). در اینجا یک مثال کامل از استفاده از کتابخانه که امکان بارگذاری و تبدیل HTML به فرمت متنی را داخل برنامههای Go فراهم میکند، آورده شده است.
چگونه محتوای ساده HTML را به قالب متن با استفاده از کتابخانه Go تبدیل کنیم؟
package main
import (
"fmt"
"jaytaylor.com/html2text"
)
func main() {
html := `
به سرویس ما خوش آمدید
صفحه ویژگیها
ما را بررسی کنید برای اطلاعات بیشتر دربارهٔ آنچه ارائه میدهیم.
- پشتیبانی ۲۴/۷
- نسخه آزمایشی رایگان
- طرحهای سازمانی
`
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)
}