mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 16:25:49 +08:00
1 parent
73472c5d4b
commit
77ffbe6a72
56 files changed
+2420
-1635
No files matched your search
+10
-9
@@ -29,6 +29,7 @@ import (
|
||||
"io"
|
||||
"math"
|
||||
"path"
|
||||
"reflect"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -374,8 +375,8 @@ func renderPage(args []js.Value) (any, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if currentEditor != nil {
|
||||
currentEditor.SetPageCompiler(currentSession.Renderer.Backends().Compiler)
|
||||
if currentEditor != nil && !reflect.DeepEqual(currentEditor.Backends(), currentSession.Renderer.Backends()) {
|
||||
currentEditor.SetRenderBackends(currentSession.Renderer.Backends())
|
||||
}
|
||||
text, err := currentSession.PageText(args[0].Int())
|
||||
if err != nil {
|
||||
@@ -844,7 +845,7 @@ func editorObjects(index int, text *ofdgo.PageText) ([]any, error) {
|
||||
if kind != "" && capability.Update {
|
||||
item["shape"] = string(kind)
|
||||
item["geometry"] = map[string]any{"x": geometry.X, "y": geometry.Y, "width": geometry.W, "height": geometry.H}
|
||||
} else if outline, err := path.Outline(); err == nil {
|
||||
} else if outline, err := currentSession.Renderer.PathOutline(path); err == nil {
|
||||
item["outline"] = outline
|
||||
}
|
||||
if kind == "" && capability.Update {
|
||||
@@ -1162,7 +1163,7 @@ func writeAnnotation(args []js.Value) (any, error) {
|
||||
}
|
||||
if options.Kind == "watermark" {
|
||||
if watermarkBounds.W == 0 {
|
||||
watermarkBounds, err = measureWatermark(annotation.Appearance.Objects[0], fontData)
|
||||
watermarkBounds, err = measureWatermark(annotation.Appearance.Objects[0], fontData, currentEditor.Backends())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1195,9 +1196,9 @@ func writeAnnotation(args []js.Value) (any, error) {
|
||||
}
|
||||
|
||||
// measureWatermark 复用标准渲染度量水印,临时文档保留尚未提交的字体引用
|
||||
// 入参: object 水印图元, fontData 字体字节
|
||||
// 入参: object 水印图元, fontData 字体字节, backends 当前后端配置
|
||||
// 返回: ofdgo.Box 实际绘制范围, error 错误信息
|
||||
func measureWatermark(object ofdgo.GraphicObject, fontData []byte) (ofdgo.Box, error) {
|
||||
func measureWatermark(object ofdgo.GraphicObject, fontData []byte, backends ofdgo.RenderBackends) (ofdgo.Box, error) {
|
||||
if object.Type == "ImageObject" {
|
||||
return ofdgo.NewMatrix(object.ImageObject.CTM).TransformBox(ofdgo.Box{W: 1, H: 1}), nil
|
||||
}
|
||||
@@ -1221,7 +1222,7 @@ func measureWatermark(object ofdgo.GraphicObject, fontData []byte) (ofdgo.Box, e
|
||||
if _, err := reader.PageContentByIndex(0); err != nil {
|
||||
return ofdgo.Box{}, err
|
||||
}
|
||||
bounds, err := ofdgo.NewRenderer(reader).ObjectBounds(ofdgo.GraphicObject{Type: "CompositeObject", CompositeGraphicUnit: ofdgo.CompositeGraphicUnit{
|
||||
bounds, err := ofdgo.NewRenderer(reader, ofdgo.WithRenderBackends(backends)).ObjectBounds(ofdgo.GraphicObject{Type: "CompositeObject", CompositeGraphicUnit: ofdgo.CompositeGraphicUnit{
|
||||
Boundary: object.TextObject.Boundary, Objects: []ofdgo.GraphicObject{object},
|
||||
}}, "")
|
||||
if err != nil {
|
||||
@@ -2781,7 +2782,7 @@ func editDocument(args []js.Value) (any, error) {
|
||||
if currentSession.fontFS != nil {
|
||||
editor.SetFontFS(currentSession.fontFS)
|
||||
}
|
||||
editor.SetPageCompiler(currentSession.Renderer.Backends().Compiler)
|
||||
editor.SetRenderBackends(currentSession.Renderer.Backends())
|
||||
currentEditor = editor
|
||||
currentSession.editing = true
|
||||
copiedObjects = nil
|
||||
@@ -2811,7 +2812,7 @@ func previewEditor(editor *ofdgo.Editor, annotations bool) (editorInfo, error) {
|
||||
}
|
||||
_ = currentSession.Close()
|
||||
}
|
||||
editor.SetPageCompiler(session.Renderer.Backends().Compiler)
|
||||
editor.SetRenderBackends(session.Renderer.Backends())
|
||||
currentSession = session
|
||||
session.editing = true
|
||||
if currentEditor != editor {
|
||||
|
||||
@@ -19,6 +19,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"path"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -536,7 +537,11 @@ func (s *Session) SetRenderBackend(name string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if s.Renderer.Backends().Info().Compiler != backends.Info().Compiler {
|
||||
if reflect.DeepEqual(s.Renderer.Backends(), backends) {
|
||||
return nil
|
||||
}
|
||||
previous, next := s.Renderer.Backends().Info(), backends.Info()
|
||||
if previous.Compiler != next.Compiler || previous.Fonts != next.Fonts || previous.Geometry != next.Geometry {
|
||||
clear(s.textCache)
|
||||
}
|
||||
ofdgo.WithRenderBackends(backends)(s.Renderer)
|
||||
|
||||
Reference in new issue
Block a user