html2text

package module
v0.0.0-...-ab33692 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2022 License: MIT Imports: 10 Imported by: 1

README

html2text

Documentation

html2text converts HTML to plain text.

This is useful for sending fancy HTML emails with an equivalently formatted text as a fallback (e.g. for people who don't allow HTML emails or have other display issues).

This package has been forked from the original html2text which removes some of its quirks, such as having unnecessary punctuations or not supporting CJK.

Install

go get github.com/diamondburned/html2text@latest

For usage, see the Go package documentation for an example.

Documentation

Overview

Example
inputHTML := `
<html>
	<head>
		<title>My Mega Service</title>
		<link rel=\"stylesheet\" href=\"main.css\">
		<style type=\"text/css\">body { color: #fff; }</style>
	</head>

	<body>
		<div class="logo">
			<a href="http://jaytaylor.com/"><img src="/logo-image.jpg" alt="Mega Service"/></a>
		</div>



		<h1>よおこそ! Welcome to your new account on my service!</h1>



		<p>
			Here is some more information:

			<ul>
				<li>Link 1: <a href="https://example.com">Example.com</a></li>
				<li>Link 2: <a href="https://example2.com">Example2.com</a></li>
				<li>Something else</li>
			</ul>

			Here's a really long paragraph:
			<br />
			Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nascetur ridiculus mus mauris vitae. Est ante in nibh mauris cursus mattis. Amet volutpat consequat mauris nunc. Eget egestas purus viverra accumsan in nisl nisi scelerisque. Id aliquet risus feugiat in ante metus. Sit amet commodo nulla facilisi nullam vehicula ipsum. Feugiat in ante metus dictum at tempor commodo. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu feugiat. Pharetra sit amet aliquam id.
		</p>



		<table>
			<thead>
				<tr><th>Header 1</th><th>Header 2</th></tr>
			</thead>
			<tfoot>
				<tr><td>Footer 1</td><td>Footer 2</td></tr>
			</tfoot>
			<tbody>
				<tr><td>Row 1 Col 1</td><td>Row 1 Col 2</td></tr>
				<tr><td>Row 2 Col 1</td><td>Row 2 Col 2</td></tr>
			</tbody>
		</table>
	</body>
</html>`

text, err := FromString(inputHTML, Options{PrettyTables: true})
if err != nil {
	panic(err)
}
fmt.Println(text)
Output:

Mega Service (http://jaytaylor.com/)

*****************************************************
よおこそ! Welcome to your new account on my service!
*****************************************************

Here is some more information:

- Link 1: Example.com (https://example.com)
- Link 2: Example2.com (https://example2.com)
- Something else

Here's a really long paragraph:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Nascetur ridiculus mus mauris
vitae. Est ante in nibh mauris cursus mattis. Amet volutpat consequat mauris
nunc. Eget egestas purus viverra accumsan in nisl nisi scelerisque. Id aliquet
risus feugiat in ante metus. Sit amet commodo nulla facilisi nullam vehicula
ipsum. Feugiat in ante metus dictum at tempor commodo. Tincidunt tortor
aliquam nulla facilisi cras fermentum odio eu feugiat. Pharetra sit amet
aliquam id.

+-------------+-------------+
|  HEADER 1   |  HEADER 2   |
+-------------+-------------+
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
+-------------+-------------+
|  FOOTER 1   |  FOOTER 2   |
+-------------+-------------+

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func FromHTMLNode

func FromHTMLNode(doc *html.Node, o ...Options) (string, error)

FromHTMLNode renders text output from a pre-parsed HTML document.

func FromReader

func FromReader(reader io.Reader, options ...Options) (string, error)

FromReader renders text output after parsing HTML for the specified io.Reader.

func FromString

func FromString(input string, options ...Options) (string, error)

FromString parses HTML from the input string, then renders the text form.

Types

type Options

type Options struct {
	PrettyTables        bool                 // Turns on pretty ASCII rendering for table elements.
	PrettyTablesOptions *PrettyTablesOptions // Configures pretty ASCII rendering for table elements.
	OmitLinks           bool                 // Turns on omitting links
	TextOnly            bool                 // Returns only plain text
}

Options provide toggles and overrides to control specific rendering behaviors.

type PrettyTablesOptions

type PrettyTablesOptions struct {
	AutoFormatHeader     bool
	AutoWrapText         bool
	ReflowDuringAutoWrap bool
	ColWidth             int
	ColumnSeparator      string
	RowSeparator         string
	CenterSeparator      string
	HeaderAlignment      int
	FooterAlignment      int
	Alignment            int
	ColumnAlignment      []int
	NewLine              string
	HeaderLine           bool
	RowLine              bool
	AutoMergeCells       bool
	Borders              tablewriter.Border
}

PrettyTablesOptions overrides tablewriter behaviors

func NewPrettyTablesOptions

func NewPrettyTablesOptions() *PrettyTablesOptions

NewPrettyTablesOptions creates PrettyTablesOptions with default settings

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL