mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 14:31:12 +08:00
This commit is contained in:
1 parent
89b8b183a0
commit
6f23085742
2 files changed
+31
-21
No files matched your search
+8
-4
@@ -16,6 +16,7 @@ package ofdgo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"path"
|
||||
"sort"
|
||||
)
|
||||
@@ -157,7 +158,12 @@ func (r *Renderer) fontInfo(font Font) FontInfo {
|
||||
Embedded: font.FontFile != "",
|
||||
}
|
||||
if info.Embedded {
|
||||
if _, err := r.Reader.ResData(font.FontFile); err == nil {
|
||||
file, err := r.Reader.openFile(r.Reader.ResPath(font.FontFile))
|
||||
if err == nil {
|
||||
_, err = io.Copy(io.Discard, file)
|
||||
file.Close()
|
||||
}
|
||||
if err == nil {
|
||||
info.Status = FontStatusEmbedded
|
||||
info.Matched = path.Base(font.FontFile)
|
||||
info.Detail = "使用内嵌字体文件"
|
||||
@@ -202,9 +208,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
|
||||
if page := r.loadTemplate(tpl.ID); page != nil {
|
||||
r.countPageFonts(page, usage)
|
||||
}
|
||||
}
|
||||
|
||||
+23
-17
@@ -34,30 +34,36 @@ 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) {
|
||||
tplContent := r.templatePageCache[templateID]
|
||||
tplContent := r.loadTemplate(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
|
||||
}
|
||||
var err error
|
||||
tplContent, err = r.Reader.PageContent(Page{BaseLoc: tplPage.BaseLoc})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
r.templatePageCache[templateID] = tplContent
|
||||
return
|
||||
}
|
||||
for order := range 3 {
|
||||
r.renderLayers(ctx, tplContent.Content.Layer, pageH, order)
|
||||
}
|
||||
}
|
||||
|
||||
// loadTemplate 加载模板页面并复用解析结果
|
||||
// 入参: templateID 模板ID
|
||||
// 返回: *PageContent 模板页面
|
||||
func (r *Renderer) loadTemplate(templateID string) *PageContent {
|
||||
if page := r.templatePageCache[templateID]; page != nil {
|
||||
return page
|
||||
}
|
||||
for _, tpl := range r.Reader.doc.CommonData.TemplatePage {
|
||||
if tpl.ID != templateID {
|
||||
continue
|
||||
}
|
||||
page, err := r.Reader.PageContent(Page{BaseLoc: tpl.BaseLoc})
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
r.templatePageCache[templateID] = page
|
||||
return page
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// layerOrder 获取图层类型的绘制顺序
|
||||
// 入参: kind 图层类型
|
||||
// 返回: int 绘制顺序
|
||||
|
||||
Reference in new issue
Block a user