converter

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Overview

Package converter 提供 OFD 文档到 PDF、HTML、文本、Markdown 和图像等格式的转换能力。

Index

Examples

Constants

This section is empty.

Variables

View Source
var ErrInvalidPage = errors.New("页码无效")

ErrInvalidPage 表示请求的全局页码无效。

View Source
var NamedPaperSizes = map[string][2]float64{
	"A4":     {210, 297},
	"A3":     {297, 420},
	"A5":     {148, 210},
	"Letter": {215.9, 279.4},
	"Legal":  {215.9, 355.6},
	"B5":     {176, 250},
	"16开":    {185, 260},
	"16K":    {185, 260},
}

NamedPaperSizes 是支持的命名纸张尺寸(毫米)。

Functions

func Convert added in v0.1.2

func Convert(from, to string, input any, output io.Writer, opts ...Option) error

Convert 在输入格式 from 与输出格式 to 之间转换。from 为空时按文件扩展名或 内容识别。to 为 "ofd" 时使用导入器(X→OFD);from 为 "ofd" 时使用导出器 (OFD→X);两者都不是时先导入为 OFD 再导出。

Example
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.Convert("ofd", "pdf", "../../test/testdata/helloworld.ofd", &output)
	fmt.Println(err == nil && bytes.HasPrefix(output.Bytes(), []byte("%PDF-")))
}
Output:
true
Example (MarkdownToOFD)
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.Convert("md", "ofd", "../../test/testdata/markdown/sample.md", &output)
	fmt.Println(err == nil && bytes.HasPrefix(output.Bytes(), []byte("PK")))
}
Output:
true
Example (PdfToOFD)
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.Convert("pdf", "ofd", "../../test/testdata/pdf/sample0.pdf", &output)
	fmt.Println(err == nil && bytes.HasPrefix(output.Bytes(), []byte("PK")))
}
Output:
true

func Encode added in v0.1.2

func Encode(format string, input any, output io.Writer, opts ...Option) error

Encode 解析 input 中的 OFD 文档,并按 format 选择注册的编码器写入 output。 format 可以是注册名("pdf"、"text"、"markdown"、"jpeg")、别名("txt"、"md"、 "jpg")或带点/不带点的文件扩展名(".png"、"svg")。

func EncodeDocuments added in v0.1.2

func EncodeDocuments(format string, documents []*render.Document, output io.Writer, opts ...Option) error

EncodeDocuments 按 format 选择注册的编码器,直接写入已解析的文档。 当 output 为 nil 时,逐页图像格式使用 Option 中通过 Writer 或 ImageWriter 提供的写入器。

func HTML added in v0.1.1

func HTML(input any, output io.Writer, opts ...Option) error

HTML 将 input 中的 OFD 文档转换为单个 HTML 文件。 默认每页使用内嵌 PNG 图片,也可以通过 HTMLJPG 或 HTMLSVG 选择 JPG 或 SVG。

Example
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.HTML("../../test/testdata/helloworld.ofd", &output, converter.Page(1), converter.DPI(72))
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("data:image/png;base64,")))
}
Output:
true

func HTMLDocuments added in v0.1.1

func HTMLDocuments(documents []*render.Document, output io.Writer, opts ...Option) error

HTMLDocuments 将多个已解析的 OFD 文档体按全局页码写入单个 HTML 文件。

func Image

func Image(input interface{}, opts ...Option) error

Image 渲染 OFD 文档。输出格式由 PNG、JPG、SVG、EPS、TeX 或 WithFormat 选项决定, 默认 PNG;输出目标由 Writer 或 ImageWriter 选项提供。

func ImageDocument added in v0.0.6

func ImageDocument(doc *render.Document, opts ...Option) error

ImageDocument 将已解析的 OFD 文档渲染为图像或矢量格式。

func ImageDocuments added in v0.0.6

func ImageDocuments(documents []*render.Document, opts ...Option) error

ImageDocuments 将多个已解析的 OFD 文档体按全局页码渲染为图像或矢量格式。

func ImportFormats added in v0.1.2

func ImportFormats() []string

ImportFormats 返回所有已注册输入格式的名称快照,按名称排序。

func IsImageFormat added in v0.1.2

func IsImageFormat(format string) bool

IsImageFormat 判断给定格式名、别名或扩展名是否逐页输出图像。

func Markdown added in v0.1.1

func Markdown(input any, output io.Writer, opts ...Option) error

Markdown 提取 input 中 OFD 文档的文字并写入 Markdown 文档。 “第 X 章”识别为二级标题,其他标题按字号和编号层级输出。

Example
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.Markdown("../../test/testdata/helloworld.ofd", &output, converter.Page(1))
	// 标题使用 OFD 文档的 DocInfo.Title,没有标题时回退为 “OFD 文档”。
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("# Hello World")))
}
Output:
true

func MarkdownDocument added in v0.1.1

func MarkdownDocument(doc *parser.Document, output io.Writer, opts ...Option) error

MarkdownDocument 提取已解析 OFD 文档中的文字并写入 Markdown 文档。

func MarkdownDocuments added in v0.1.1

func MarkdownDocuments(documents []*parser.Document, output io.Writer, opts ...Option) error

MarkdownDocuments 按全局页码提取多个已解析 OFD 文档体中的文字并写入 Markdown 文档。

func PDF

func PDF(input any, output io.Writer, opts ...Option) error

PDF 解析 input 中的 OFD 文档并按全局页码写入一个 PDF。

Example
package main

import (
	"fmt"
	"os"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	output, err := os.CreateTemp("", "ofd-example-*.pdf")
	if err == nil {
		defer os.Remove(output.Name())
		err = converter.PDF("../../test/testdata/intro.ofd", output)
		if closeErr := output.Close(); err == nil {
			err = closeErr
		}
	}
	fmt.Println(err == nil)
}
Output:
true

func PDFDocuments added in v0.0.6

func PDFDocuments(documents []*render.Document, output io.Writer, opts ...Option) error

PDFDocuments 将多个已解析的 OFD 文档体按全局页码写入同一个 PDF。

func Register added in v0.1.2

func Register(enc Encoder)

Register 注册一个编码器。通常在 init() 中调用。

func RegisterImporter added in v0.1.2

func RegisterImporter(imp Importer)

RegisterImporter 注册一个导入器。通常在 init() 中调用。

func RegisterTransformer added in v0.1.2

func RegisterTransformer(transformer Transformer)

RegisterTransformer 注册一个直接转换器。通常在 init() 中调用。

func Text added in v0.0.6

func Text(input any, output io.Writer, opts ...Option) error

Text 提取 input 中 OFD 文档的文字并写入 output。 不会保留字体、颜色和布局信息;不同文字对象按行输出,不同页面使用分页符分隔。

func TextDocument added in v0.0.6

func TextDocument(doc *parser.Document, output io.Writer, opts ...Option) error

TextDocument 提取已解析 OFD 文档中的文字并写入 output。

func TextDocuments added in v0.0.6

func TextDocuments(documents []*parser.Document, output io.Writer, opts ...Option) error

TextDocuments 按全局页码提取多个已解析 OFD 文档体中的文字并写入 output。

Types

type Converter

type Converter struct {
	// contains filtered or unexported fields
}

Converter 配置转换器

func (*Converter) AllowRemoteResources added in v0.1.2

func (c *Converter) AllowRemoteResources() bool

AllowRemoteResources 返回是否允许加载外部资源。

func (*Converter) ChromePath added in v0.1.2

func (c *Converter) ChromePath() string

ChromePath 返回配置的 Chrome/Chromium 可执行文件路径;为空表示自动查找。

func (*Converter) MarkdownTables added in v0.1.3

func (c *Converter) MarkdownTables() bool

MarkdownTables 返回 OFD 转 Markdown 时是否识别并输出表格,默认关闭。

func (*Converter) NoSandbox added in v0.1.2

func (c *Converter) NoSandbox() bool

NoSandbox 返回是否禁用 Chrome 沙箱。

func (*Converter) OfficeTimeout added in v0.1.2

func (c *Converter) OfficeTimeout() time.Duration

OfficeTimeout 返回 Office 文档转换超时时间;为 0 表示使用默认值。

func (*Converter) Paper added in v0.1.2

func (c *Converter) Paper() Paper

Paper 返回输出纸张设置。

func (*Converter) PrintBackground added in v0.1.2

func (c *Converter) PrintBackground() bool

PrintBackground 返回是否打印背景。

func (*Converter) SofficePath added in v0.1.2

func (c *Converter) SofficePath() string

SofficePath 返回配置的 LibreOffice 可执行文件路径;为空表示自动查找。

func (*Converter) TempDir added in v0.1.2

func (c *Converter) TempDir() string

TempDir 返回外部工具(LibreOffice/Chrome)转换使用的临时文件根目录; 为空表示使用系统临时目录。

type Encoder added in v0.1.2

type Encoder interface {
	// Name 返回格式名称,如 "pdf"、"png"、"html"。
	Name() string

	// Kind 返回格式类别,调用方据此区分文档输出和逐页图像输出。
	Kind() Kind

	// Extensions 返回支持的文件扩展名,如 [".pdf"]、[".png", ".jpg"]。
	Extensions() []string

	// MIME 返回 MIME 类型,如 "application/pdf"。
	MIME() string

	// Encode 把 input 写入 output。input 可以是原始 OFD 输入(路径、[]byte、
	// io.Reader),也可以是已解析的 []*render.Document。
	// 需要解析 OFD 的编码器应通过 encodeOFD 复用统一的解析逻辑。
	Encode(input any, output io.Writer, conv *Converter) error
}

Encoder 是所有输出格式编码器必须实现的接口。 各格式文件在 init() 中调用 Register 注册。

type Format added in v0.1.2

type Format struct {
	Name       string
	Kind       Kind
	Extensions []string
	MIME       string
	// contains filtered or unexported fields
}

Format 是已注册格式的元信息。

func FormatByExtension added in v0.1.2

func FormatByExtension(ext string) (*Format, bool)

FormatByExtension 根据文件扩展名查找格式,如 ".pdf" → Format。

func FormatByName added in v0.1.2

func FormatByName(name string) (*Format, bool)

FormatByName 根据格式名(或别名)查找格式。

func Formats added in v0.1.2

func Formats() []*Format

Formats 返回所有已注册格式的快照,按名称排序。

type Importer added in v0.1.2

type Importer interface {
	// Name 返回输入格式名,如 "pdf"、"docx"、"pptx"。
	Name() string
	// Extensions 返回支持的文件扩展名,如 [".pdf"]。
	Extensions() []string
	// MIME 返回 MIME 类型,如 "application/pdf"。
	MIME() string
	// Import 把 input 读取为 OFD 并写入 output。
	Import(input any, output io.Writer, conv *Converter) error
}

Importer 是非 OFD 输入(如 PDF、DOCX、PPTX)到 OFD 的导入器。 各输入格式包在 init() 中调用 RegisterImporter 注册,并按需空白导入, 使不使用的导入依赖不进最终二进制。

func ImporterByExtension added in v0.1.2

func ImporterByExtension(ext string) (Importer, bool)

ImporterByExtension 按文件扩展名查找导入器。

func ImporterByName added in v0.1.2

func ImporterByName(name string) (Importer, bool)

ImporterByName 按输入格式名(含别名或扩展名)查找导入器。

type Kind added in v0.1.2

type Kind int

Kind 表示输出格式的类别,用于调用方按类别分发转换行为。

const (
	// KindDocument 输出单个文档,例如 PDF、HTML、文本和 Markdown。
	KindDocument Kind = iota
	// KindImage 逐页输出图像或矢量,例如 PNG、JPEG、SVG、EPS 和 TeX。
	KindImage
)

type Option

type Option func(*Converter)

Option 配置选项类型

func BgColor

func BgColor(bg color.Color) Option

BgColor 设置背景颜色

func DPI

func DPI(dpi float64) Option

DPI 设置DPI

func EPS added in v0.0.6

func EPS() Option

EPS 设置为 Encapsulated PostScript 格式

Example
package main

import (
	"bytes"
	"fmt"
	"io"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

type exampleBufferWriteCloser struct {
	*bytes.Buffer
}

func (exampleBufferWriteCloser) Close() error { return nil }

func main() {
	var output bytes.Buffer
	err := converter.Image("../../test/testdata/helloworld.ofd",
		converter.Writer(func(int) (io.WriteCloser, error) {
			return exampleBufferWriteCloser{Buffer: &output}, nil
		}),
		converter.EPS(),
		converter.Page(1),
	)
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("%!PS-Adobe-3.0 EPSF-3.0")))
}
Output:
true

func HTMLJPG added in v0.1.1

func HTMLJPG() Option

HTMLJPG 设置 HTML 页面使用内嵌 JPG 图片。

Example
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.HTML("../../test/testdata/helloworld.ofd", &output, converter.HTMLJPG(), converter.Page(1))
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("data:image/jpeg;base64,")))
}
Output:
true

func HTMLPNG added in v0.1.1

func HTMLPNG() Option

HTMLPNG 设置 HTML 页面使用内嵌 PNG 图片。

func HTMLSVG added in v0.1.1

func HTMLSVG() Option

HTMLSVG 设置 HTML 页面使用内嵌 SVG 内容。

Example
package main

import (
	"bytes"
	"fmt"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	var output bytes.Buffer
	err := converter.HTML("../../test/testdata/helloworld.ofd", &output, converter.HTMLSVG(), converter.Page(1))
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("<svg")))
}
Output:
true

func ImageWriter

func ImageWriter(f func(page int, img image.Image) error) Option

ImageWriter 设置图像写入器

func JPG

func JPG() Option

JPG 设置为JPEG格式

Example
package main

import (
	"fmt"
	"image/color"
	"io"
	"os"
	"path/filepath"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	dir, err := os.MkdirTemp("", "ofd-example-")
	if err == nil {
		defer os.RemoveAll(dir)
		err = converter.Image("../../test/testdata/intro.ofd",
			converter.Writer(func(page int) (io.WriteCloser, error) {
				return os.Create(filepath.Join(dir, fmt.Sprintf("intro_%d.jpg", page)))
			}),
			converter.BgColor(color.White),
			converter.JPG(),
			converter.Page(40),
			converter.DPI(300),
		)
	}
	fmt.Println(err == nil)
}
Output:
true

func PDFParallel added in v0.1.1

func PDFParallel(enabled bool) Option

PDFParallel 控制 PDF 页面是否并行渲染;默认关闭。

func PNG

func PNG() Option

PNG 设置为PNG格式

Example
package main

import (
	"fmt"
	"image/color"
	"io"
	"os"
	"path/filepath"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

func main() {
	dir, err := os.MkdirTemp("", "ofd-example-")
	if err == nil {
		defer os.RemoveAll(dir)
		err = converter.Image("../../test/testdata/ano.ofd",
			converter.Writer(func(page int) (io.WriteCloser, error) {
				return os.Create(filepath.Join(dir, fmt.Sprintf("ano_%d.png", page)))
			}),
			converter.BgColor(color.White),
			converter.PNG(),
		)
	}
	fmt.Println(err == nil)
}
Output:
true

func Page

func Page(page int) Option

Page 设置全局页码,从 1 开始;0 表示处理全部页面。

func PageCache added in v0.1.1

func PageCache(capacity int, maxBytes int64) Option

PageCache 设置页面缓存的最大页数和估算最大字节数;0 表示使用解析器默认值。

func RasterBackend added in v0.1.3

func RasterBackend(name string) Option

RasterBackend 指定 PNG/JPG 输出使用的栅格后端名(如 "canvas"、"gg"、 "ftgg"、"tinyskia")。仅对 PNG/JPEG 生效;空字符串表示使用 canvas 矢量 表面光栅化(默认)。使用 canvas 之外的后端需在程序中空白导入对应插件包, 例如 import _ "github.com/zc310/ofd/internal/render/backends/gg"。

func SVG added in v0.0.6

func SVG() Option

SVG 设置为 SVG 格式

Example
package main

import (
	"bytes"
	"fmt"
	"io"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

type exampleBufferWriteCloser struct {
	*bytes.Buffer
}

func (exampleBufferWriteCloser) Close() error { return nil }

func main() {
	var output bytes.Buffer
	err := converter.Image("../../test/testdata/helloworld.ofd",
		converter.Writer(func(int) (io.WriteCloser, error) {
			return exampleBufferWriteCloser{Buffer: &output}, nil
		}),
		converter.SVG(),
		converter.Page(1),
	)
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("<svg")))
}
Output:
true

func TeX added in v0.0.6

func TeX() Option

TeX 设置为 TeX/PGF 格式

Example
package main

import (
	"bytes"
	"fmt"
	"io"

	"github.com/zc310/ofd/pkg/converter"
	_ "github.com/zc310/ofd/pkg/converter/mdimport"
	_ "github.com/zc310/ofd/pkg/converter/pdfimport"
)

type exampleBufferWriteCloser struct {
	*bytes.Buffer
}

func (exampleBufferWriteCloser) Close() error { return nil }

func main() {
	var output bytes.Buffer
	err := converter.Image("../../test/testdata/helloworld.ofd",
		converter.Writer(func(int) (io.WriteCloser, error) {
			return exampleBufferWriteCloser{Buffer: &output}, nil
		}),
		converter.TeX(),
		converter.Page(1),
	)
	fmt.Println(err == nil && bytes.Contains(output.Bytes(), []byte("\\begin{pgfpicture}")))
}
Output:
true

func Thumbnail

func Thumbnail(s int) Option

Thumbnail 设置缩略图大小

func WithAllowRemoteResources added in v0.1.2

func WithAllowRemoteResources(enabled bool) Option

WithAllowRemoteResources 设置是否允许加载外部资源(默认禁止,仅允许本地与 data: 资源)。仅在 HTML/MHTML 转 PDF 时生效。

func WithChrome added in v0.1.2

func WithChrome(path string) Option

WithChrome 设置 Chrome/Chromium 可执行文件路径,供 HTML/MHTML 导入使用; 为空时按 OFD_CHROME、PATH 和常见安装路径自动查找。

func WithChromeNoSandbox added in v0.1.2

func WithChromeNoSandbox(enabled bool) Option

WithChromeNoSandbox 设置是否禁用 Chrome 沙箱。容器或 root 环境下可能需要, 但会降低安全性,默认关闭。

func WithFormat added in v0.1.2

func WithFormat(format string) Option

WithFormat 按注册的格式名(或别名)设置输出格式。

func WithLandscape added in v0.1.2

func WithLandscape(landscape bool) Option

WithLandscape 设置横向打印。

func WithMarkdownTables added in v0.1.3

func WithMarkdownTables(enabled bool) Option

WithMarkdownTables 设置 OFD 转 Markdown 时是否识别并输出表格,默认关闭。 表格识别基于文字位置(X 对齐与空白间隔),对无边框表格有效,但双栏正文、 公式排版等也可能被误判,因此默认关闭,按需开启。

func WithOfficeTimeout added in v0.1.2

func WithOfficeTimeout(timeout time.Duration) Option

WithOfficeTimeout 设置 Office 文档转换超时时间;0 表示使用默认值。

func WithPaperDimensions added in v0.1.2

func WithPaperDimensions(width, height float64) Option

WithPaperDimensions 以毫米设置自定义纸张尺寸。

func WithPaperSize added in v0.1.2

func WithPaperSize(name string) Option

WithPaperSize 按名称设置输出纸张尺寸,支持 A4、A3、A5、Letter、Legal、B5、16开。

func WithPrintBackground added in v0.1.2

func WithPrintBackground(enabled bool) Option

WithPrintBackground 设置是否打印背景颜色和图片(默认开启)。

func WithSoffice added in v0.1.2

func WithSoffice(path string) Option

WithSoffice 设置 LibreOffice 可执行文件路径,供 Office 文档导入使用; 为空时按 OFD_SOFFICE、PATH 和常见安装路径自动查找。

func WithTempDir added in v0.1.2

func WithTempDir(dir string) Option

WithTempDir 设置外部工具(LibreOffice/Chrome)转换使用的临时文件根目录; 为空表示使用系统临时目录。目录不存在时会按需创建子目录。

func Writer

func Writer(f func(page int) (io.WriteCloser, error)) Option

Writer 设置文件写入器

type Paper added in v0.1.2

type Paper struct {
	// Width 是纸张宽度(毫米)。
	Width float64
	// Height 是纸张高度(毫米)。
	Height float64
	// Landscape 为真时交换宽高。
	Landscape bool
}

Paper 描述输出纸张尺寸(毫米)与方向。

func DefaultPaper added in v0.1.2

func DefaultPaper() Paper

DefaultPaper 返回默认纸张 A4。

func PaperByName added in v0.1.2

func PaperByName(name string) (Paper, error)

PaperByName 按名称(大小写不敏感,支持 A4/A3/A5/Letter/Legal/B5/16开)返回纸张。

func (Paper) EffectiveDimensions added in v0.1.2

func (p Paper) EffectiveDimensions() (float64, float64)

EffectiveDimensions 返回考虑方向后的实际宽高(毫米)。

type Transformer added in v0.1.2

type Transformer interface {
	// From 返回支持的输入格式名,如 "docx"、"doc"。
	From() []string
	// To 返回输出格式名,如 "pdf"。
	To() string
	// Transform 把 input 直接转换为 output。
	Transform(input any, output io.Writer, conv *Converter) error
}

Transformer 是某类输入到某个输出格式的直接转换器,用于避免"先导入 OFD 再导出"的中间损失(例如 docx→pdf 直接由 LibreOffice 完成)。各格式包在 init() 中调用 RegisterTransformer 注册。

func TransformerFor added in v0.1.2

func TransformerFor(from, to string) (Transformer, bool)

TransformerFor 查找 from→to 的直接转换器。

Directories

Path Synopsis
Package htmlimport 为 converter 注册 HTML/MHTML 导入器,以及到 PDF 的直接 转换器。
Package htmlimport 为 converter 注册 HTML/MHTML 导入器,以及到 PDF 的直接 转换器。
Package mdimport 为 converter 注册 Markdown→OFD 导入器(输入格式 "markdown")。
Package mdimport 为 converter 注册 Markdown→OFD 导入器(输入格式 "markdown")。
Package officeimport 为 converter 注册 Office 文档(doc/docx/odt/rtf/wps/ pptx/xlsx 等)的导入器,以及到 PDF 的直接转换器。
Package officeimport 为 converter 注册 Office 文档(doc/docx/odt/rtf/wps/ pptx/xlsx 等)的导入器,以及到 PDF 的直接转换器。
Package pdfimport 为 converter 注册 PDF→OFD 导入器(输入格式 "pdf")。
Package pdfimport 为 converter 注册 PDF→OFD 导入器(输入格式 "pdf")。

Jump to

Keyboard shortcuts

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