mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-08-30 12:12:40 +08:00
@@ -71,6 +71,8 @@ func NewRenderer(reader *Reader, opts ...RendererOption) *Renderer {
|
||||
DrawParams: reader.drawParamCache,
|
||||
CompositeGraphicUnits: reader.compositeGraphicUnitCache,
|
||||
FontMap: make(map[string]*canvas.FontFamily),
|
||||
FontGIDMap: make(map[string]map[uint16]rune),
|
||||
FontCIDMap: make(map[string]map[uint16]rune),
|
||||
fontFSCache: make(map[fontFSKey]*canvas.FontFamily),
|
||||
textGlyphPathCache: make(map[textGlyphPathCacheKey]textGlyphPathCacheValue),
|
||||
templatePageCache: make(map[string]*PageContent),
|
||||
|
||||
@@ -20,10 +20,12 @@ import (
|
||||
"fmt"
|
||||
"image"
|
||||
"image/color"
|
||||
_ "image/gif"
|
||||
|
||||
canvasimage "github.com/tdewolff/canvas/image"
|
||||
_ "github.com/xiaoqidun/jbig2"
|
||||
_ "golang.org/x/image/bmp"
|
||||
_ "golang.org/x/image/tiff"
|
||||
)
|
||||
|
||||
// decodeImageData 解码图片数据
|
||||
|
||||
+13
-2
@@ -48,6 +48,15 @@ type RendererOption func(*Renderer)
|
||||
// 入参: page 页面内容
|
||||
// 返回: *canvas.Canvas 画布实例, error 错误信息
|
||||
func (r *Renderer) RenderPage(page *PageContent) (*canvas.Canvas, error) {
|
||||
renderer := *r
|
||||
renderer.decodeImages = true
|
||||
return renderer.renderPage(page)
|
||||
}
|
||||
|
||||
// renderPage 渲染特定页面内容
|
||||
// 入参: page 页面内容
|
||||
// 返回: *canvas.Canvas 画布实例, error 错误信息
|
||||
func (r *Renderer) renderPage(page *PageContent) (*canvas.Canvas, error) {
|
||||
box, err := r.GetPageBox(page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -55,7 +64,7 @@ func (r *Renderer) RenderPage(page *PageContent) (*canvas.Canvas, error) {
|
||||
width, height := box.W, box.H
|
||||
c := canvas.New(width, height)
|
||||
ctx := canvas.NewContext(c)
|
||||
if err := r.RenderPageToContext(ctx, page); err != nil {
|
||||
if err := r.renderPageToContext(ctx, page, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c, nil
|
||||
@@ -85,7 +94,9 @@ func (r *Renderer) GetPageBox(page *PageContent) (Box, error) {
|
||||
// 入参: ctx 画布上下文, page 页面内容
|
||||
// 返回: error 错误信息
|
||||
func (r *Renderer) RenderPageToContext(ctx *canvas.Context, page *PageContent) error {
|
||||
return r.renderPageToContext(ctx, page, true)
|
||||
renderer := *r
|
||||
renderer.decodeImages = true
|
||||
return renderer.renderPageToContext(ctx, page, true)
|
||||
}
|
||||
|
||||
// renderPageToContext 渲染页面到指定上下文
|
||||
|
||||
@@ -30,9 +30,7 @@ import (
|
||||
// 入参: page 页面内容
|
||||
// 返回: image.Image 图像对象, error 错误信息
|
||||
func (r *Renderer) RenderToImage(page *PageContent) (image.Image, error) {
|
||||
renderer := *r
|
||||
renderer.decodeImages = true
|
||||
c, err := renderer.RenderPage(page)
|
||||
c, err := r.RenderPage(page)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -44,7 +42,7 @@ func (r *Renderer) RenderToImage(page *PageContent) (image.Image, error) {
|
||||
// 入参: page 页面内容, writer 输出流
|
||||
// 返回: error 错误信息
|
||||
func (r *Renderer) RenderToSVG(page *PageContent, writer io.Writer) error {
|
||||
c, err := r.RenderPage(page)
|
||||
c, err := r.renderPage(page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -69,7 +67,7 @@ func replacePDFProducer(data []byte) []byte {
|
||||
// 入参: page 页面内容, writer 输出流
|
||||
// 返回: error 错误信息
|
||||
func (r *Renderer) RenderToPDF(page *PageContent, writer io.Writer) error {
|
||||
c, err := r.RenderPage(page)
|
||||
c, err := r.renderPage(page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -88,7 +86,7 @@ func (r *Renderer) RenderToPDF(page *PageContent, writer io.Writer) error {
|
||||
// 入参: page 页面内容, writer 输出流
|
||||
// 返回: error 错误信息
|
||||
func (r *Renderer) RenderToEPS(page *PageContent, writer io.Writer) error {
|
||||
c, err := r.RenderPage(page)
|
||||
c, err := r.renderPage(page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -113,7 +111,7 @@ func (r *Renderer) RenderToMultiPagePDF(writer io.Writer) error {
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
c, err := r.RenderPage(page)
|
||||
c, err := r.renderPage(page)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user