1. 제품
  2.   HTML
  3.   GO
  4.   HTML2Text
 
  

HTML 문서를 텍스트로 변환하는 무료 Go 라이브러리

HTML2Text는 Go 앱 내에서 HTML 마크업을 사람이 읽을 수 있는 일반 텍스트로 변환할 수 있는 매우 간단한 오픈소스 Go 라이브러리입니다.

오늘날 디지털 환경에서는 콘텐츠가 여러 형식과 플랫폼에서 접근 가능해야 합니다. HTML2Text는 Jay Taylor가 만든 강력한 Go 라이브러리로, HTML 콘텐츠를 읽기 쉽고 잘 포맷된 평문 텍스트로 변환하는 근본적인 문제를 해결합니다. 원래는 HTML 이메일이 모든 수신자—HTML를 비활성화한 클라이언트나 접근성 요구가 있는 경우에도—에게 읽히도록 보장하기 위해 개발되었으며, 이제 이 라이브러리는 콘텐츠 변환 작업을 수행하는 개발자들을 위한 다목적 도구로 발전했습니다.

이 라이브러리는 표, 목록, 링크 등을 포함한 복잡한 HTML 구조를 깔끔하고 마크다운 스타일의 일반 텍스트로 변환하면서 논리 구조와 가독성을 유지합니다. 라이브러리에는 지능형 HTML-to-Text 변환, 예쁜 형식의 테이블 렌더링, 사용자 정의 변환 옵션, 명령줄 인터페이스 등 여러 중요한 기능이 포함되어 있습니다. HTML2Text는 외부 의존성이 없는 순수 Go로 작성되어 일반 HTML 문서에 대해 빠르고, 스트리밍 친화적인 설계와 스레드 안전성을 갖추어 웹 서버에서 동시 사용에 적합합니다. 간단한 API, 유연한 옵션, 수천 개 프로젝트에서 입증된 실적을 바탕으로 HTML2Text는 Go 툴킷에 꼭 필요한 존재입니다.

Previous Next

HTML2Text 시작하기

HTML2Text를 설치하는 권장되고 가장 쉬운 방법은 GitHub을 이용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.

GitHub를 통해 HTML2Text 라이브러리 설치

go get jaytaylor.com/html2text

이 라이브러리는 Go 1.x 이상을 필요로 하며 외부 의존성이 전혀 없어 프로젝트를 가볍게 유지합니다. 수동으로 설치할 수도 있습니다; 최신 릴리스 파일을 GitHub 저장소에서 직접 다운로드하세요.

Go를 이용한 기본 HTML 텍스트 변환

오픈 소스 HTML2Text 라이브러리는 소프트웨어 개발자가 Go 애플리케이션 내에서 HTML 파일을 로드하고 텍스트 형식으로 변환하는 작업을 쉽게 해줍니다. HTML2Text는 단순히 태그를 제거하는 것이 아니라, HTML 구조를 지능적으로 해석하여 제목, 단락, 목록에 대한 의미적 이해와 함께 인간이 읽기 쉬운 출력을 생성합니다. 링크 텍스트 뒤에 괄호로 URL을 표시하여 링크를 보존하고, 과도한 줄바꿈 없이 가독성을 유지하는 공백 정규화, UTF-8 BOM(바이트 순서 표시) 등을 포함한 문자 인코딩 지원을 제공합니다. 아래는 Go 애플리케이션에서 HTML을 로드하고 텍스트 형식으로 변환하는 전체 예제입니다.

Go 라이브러리를 사용하여 간단한 HTML 콘텐츠를 텍스트 형식으로 변환하는 방법은?

package main

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

func main() {
    html := `
        

우리 서비스에 오신 것을 환영합니다

우리의 기능 페이지 에서 제공하는 내용에 대한 자세한 정보를 확인하세요.

  • 24시간 연중무휴 지원
  • 무료 체험
  • 기업 플랜
` text, err := html2text.FromString(html, html2text.Options{}) if err != nil { panic(err) } fmt.Println(text) }

예쁜 포맷팅을 통한 테이블 렌더링

HTML2Text의 눈에 띄는 기능 중 하나는 HTML 테이블을 ASCII 기반 텍스트 테이블로 렌더링하는 능력입니다. 일반 텍스트의 테이블은 보통 뒤섞인 데이터 스프가 됩니다. PrettyTables 기능은 ASCII 아트를 사용하여 표 구조를 보존하므로 숫자 데이터, 가격표, 비교 차트를 어떤 상황에서도 읽기 쉽게 만듭니다. 이는 데이터 구조가 중요한 이메일 자동 보고서, 명령줄 도구 출력, 또는 SMS 알림에 완벽합니다. 다음 코드 예제는 소프트웨어 개발자가 Go 명령을 사용하여 HTML 테이블을 형식화된 ASCII 테이블로 변환하는 방법을 보여줍니다.

Go를 사용하여 HTML 테이블을 포맷된 ASCII 테이블로 변환하는 방법은?

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은 괄호 안에 추가되어 평문 텍스트 버전의 독자도 연결된 리소스에 접근할 수 있도록 합니다. 다음 예제는 이를 구현하는 방법을 보여줍니다.

Go 애플리케이션에서 HTML을 텍스트로 변환할 때 링크를 관리하는 방법은?

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) }
 한국인