mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-08-30 12:12:40 +08:00
@@ -5,7 +5,7 @@ go 1.25.0
|
||||
require (
|
||||
github.com/tdewolff/canvas v0.0.0-20260708151538-b3beae08c578
|
||||
github.com/tdewolff/font v0.0.0-20260527091451-1663e68cb8a4
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260710074125-96fddd152f49
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260714021516-ffe617d6fbc8
|
||||
golang.org/x/image v0.44.0
|
||||
golang.org/x/text v0.40.0
|
||||
)
|
||||
|
||||
@@ -73,8 +73,8 @@ github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk=
|
||||
github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
|
||||
github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E=
|
||||
github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ=
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260710074125-96fddd152f49 h1:h/1lOG9/75eK4atpQFcm9oGXmxekMVfsPJowtYLXu5w=
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260710074125-96fddd152f49/go.mod h1:4ieZvd1EYR3zUzaAT4H8vLDb6XO+yjnxuh33So/5iC4=
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260714021516-ffe617d6fbc8 h1:HSruvQiN+t72xcn4VQyvB4GRCyX0dnu3+6k4DFnmPvM=
|
||||
github.com/xiaoqidun/jbig2 v0.0.0-20260714021516-ffe617d6fbc8/go.mod h1:4ieZvd1EYR3zUzaAT4H8vLDb6XO+yjnxuh33So/5iC4=
|
||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
|
||||
@@ -73,6 +73,7 @@ func NewRenderer(reader *Reader, opts ...RendererOption) *Renderer {
|
||||
FontMap: make(map[string]*canvas.FontFamily),
|
||||
fontFSCache: make(map[fontFSKey]*canvas.FontFamily),
|
||||
textGlyphPathCache: make(map[textGlyphPathCacheKey]textGlyphPathCacheValue),
|
||||
templatePageCache: make(map[string]*PageContent),
|
||||
}
|
||||
for _, opt := range opts {
|
||||
opt(r)
|
||||
|
||||
@@ -291,6 +291,7 @@ func (r *Renderer) fontUsage(doc *Document, pages []*PageContent) map[string]int
|
||||
for _, tpl := range doc.CommonData.TemplatePage {
|
||||
page, err := r.Reader.PageContent(Page{BaseLoc: tpl.BaseLoc})
|
||||
if err == nil {
|
||||
r.templatePageCache[tpl.ID] = page
|
||||
r.countPageFonts(page, usage)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ type Renderer struct {
|
||||
FontCIDMap map[string]map[uint16]rune
|
||||
fontFSCache map[fontFSKey]*canvas.FontFamily
|
||||
textGlyphPathCache map[textGlyphPathCacheKey]textGlyphPathCacheValue
|
||||
templatePageCache map[string]*PageContent
|
||||
fontDirs []string
|
||||
fontFS []fs.FS
|
||||
}
|
||||
|
||||
+17
-12
@@ -38,19 +38,24 @@ func (r *Renderer) renderAnnotations(ctx *canvas.Context, pageID string, pageH f
|
||||
// renderTemplate 渲染模板
|
||||
// 入参: ctx 画布上下文, templateID 模板ID, pageH 页面高度
|
||||
func (r *Renderer) renderTemplate(ctx *canvas.Context, templateID string, pageH float64) {
|
||||
var tplPage *TemplatePage
|
||||
for _, tp := range r.Reader.doc.CommonData.TemplatePage {
|
||||
if tp.ID == templateID {
|
||||
tplPage = &tp
|
||||
break
|
||||
tplContent := r.templatePageCache[templateID]
|
||||
if tplContent == nil {
|
||||
var tplPage *TemplatePage
|
||||
for i := range r.Reader.doc.CommonData.TemplatePage {
|
||||
if r.Reader.doc.CommonData.TemplatePage[i].ID == templateID {
|
||||
tplPage = &r.Reader.doc.CommonData.TemplatePage[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if tplPage == nil {
|
||||
return
|
||||
}
|
||||
tplContent, err := r.Reader.PageContent(Page{BaseLoc: tplPage.BaseLoc})
|
||||
if err != nil {
|
||||
return
|
||||
if tplPage == nil {
|
||||
return
|
||||
}
|
||||
var err error
|
||||
tplContent, err = r.Reader.PageContent(Page{BaseLoc: tplPage.BaseLoc})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
r.templatePageCache[templateID] = tplContent
|
||||
}
|
||||
if tplContent.Content.Layer != nil {
|
||||
for _, layer := range tplContent.Content.Layer {
|
||||
|
||||
Reference in New Issue
Block a user