feat(清理代码): 精简快照与页面导出接口
build.yaml / build (push) Successful in 45s

This commit is contained in:
xiaoqidun committed 2026-10-19 09:36:17 +08:00
1 parent e222cddabb
commit aab5d40f93
24 files changed
+68 -74

No files matched your search

-6
View File
@@ -95,12 +95,6 @@ func NewTarget(name string) (*Target, error) {
return &Target{name: name, info: info}, nil return &Target{name: name, info: info}, nil
} }
// Name 返回目标绝对路径
// 返回: string 文件路径
func (t *Target) Name() string {
return t.name
}
// check 检查目标是否保持最近确认的状态 // check 检查目标是否保持最近确认的状态
// 返回: error 文件状态错误 // 返回: error 文件状态错误
func (t *Target) check() error { func (t *Target) check() error {
+10 -10
View File
@@ -481,7 +481,7 @@ func (s *Session) Document(index int) (*Session, error) {
reader := s.Reader reader := s.Reader
if s.editor != nil { if s.editor != nil {
var err error var err error
reader, err = s.editor.Reader() reader, err = s.editor.Reader(context.Background())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -519,7 +519,7 @@ func (s *Session) DocumentVersion(id string) (*Session, error) {
reader := s.Reader reader := s.Reader
if s.editor != nil { if s.editor != nil {
var err error var err error
reader, err = s.editor.Reader() reader, err = s.editor.Reader(context.Background())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1802,7 +1802,7 @@ func (e *businessEngine) documentInvoices(args []platformValue) (any, error) {
// 返回: *ofdgo.Reader 当前读取器, func() 快照释放函数, error 快照错误 // 返回: *ofdgo.Reader 当前读取器, func() 快照释放函数, error 快照错误
func (e *businessEngine) currentInvoiceReader() (*ofdgo.Reader, func(), error) { func (e *businessEngine) currentInvoiceReader() (*ofdgo.Reader, func(), error) {
if e.currentEditor != nil { if e.currentEditor != nil {
r, err := e.currentEditor.Reader() r, err := e.currentEditor.Reader(e.operationContext())
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@@ -2017,7 +2017,7 @@ func (e *businessEngine) validateInvoiceDraft(ctx context.Context, request invoi
if source.Kind == "" { if source.Kind == "" {
source = request.Source source = request.Source
} }
view, err := editor.ReaderContext(ctx) view, err := editor.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -2204,7 +2204,7 @@ func (e *businessEngine) applyInvoiceBatch(ctx context.Context, editor *ofdgo.Ed
} }
report, err := ofdgo.DecodeInvoices(ctx, data) report, err := ofdgo.DecodeInvoices(ctx, data)
if request.Source.Kind == "tag" && len(report.Invoices) == 0 { if request.Source.Kind == "tag" && len(report.Invoices) == 0 {
view, viewErr := editor.ReaderContext(ctx) view, viewErr := editor.Reader(ctx)
if viewErr != nil { if viewErr != nil {
return result, viewErr return result, viewErr
} }
@@ -5764,7 +5764,7 @@ func (e *businessEngine) documentVersions(args []platformValue) (any, error) {
reader := e.currentSession.Reader reader := e.currentSession.Reader
if e.currentEditor != nil { if e.currentEditor != nil {
var err error var err error
reader, err = e.currentEditor.Reader() reader, err = e.currentEditor.Reader(e.operationContext())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -6148,7 +6148,7 @@ func (e *businessEngine) exportVersion(args []platformValue) (any, error) {
reader := e.currentSession.Reader reader := e.currentSession.Reader
if e.currentEditor != nil { if e.currentEditor != nil {
var err error var err error
reader, err = e.currentEditor.ReaderContext(ctx) reader, err = e.currentEditor.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -6415,7 +6415,7 @@ func (e *businessEngine) syncEditorPageIDs(index int, content *ofdgo.PageContent
// 入参: editor 编辑文档, annotations 是否显示注解 // 入参: editor 编辑文档, annotations 是否显示注解
// 返回: editorInfo 文档信息, error 错误信息 // 返回: editorInfo 文档信息, error 错误信息
func (e *businessEngine) previewEditor(editor *ofdgo.Editor, annotations bool) (editorInfo, error) { func (e *businessEngine) previewEditor(editor *ofdgo.Editor, annotations bool) (editorInfo, error) {
reader, err := editor.Reader() reader, err := editor.Reader(e.operationContext())
if err != nil { if err != nil {
return editorInfo{}, err return editorInfo{}, err
} }
@@ -7075,7 +7075,7 @@ func (e *businessEngine) previewSignatureSeal(args []platformValue) (any, error)
if _, err := editor.AddPage(seal.Width, seal.Height); err != nil { if _, err := editor.AddPage(seal.Width, seal.Height); err != nil {
return nil, err return nil, err
} }
reader, err := editor.Reader() reader, err := editor.Reader(e.operationContext())
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -7314,7 +7314,7 @@ func (e *businessEngine) saveEditor(editor *ofdgo.Editor, args []platformValue)
ctx = e.newOutputContext(args[4]) ctx = e.newOutputContext(args[4])
} }
if len(args) > 2 && !args[2].IsNull() && !args[2].IsUndefined() { if len(args) > 2 && !args[2].IsNull() && !args[2].IsUndefined() {
_, err = editor.WritePagesToWithOptions(ctx, writer, e.indexesFromJS(args[2]), options) _, err = editor.WritePagesTo(ctx, writer, e.indexesFromJS(args[2]), options)
} else { } else {
_, err = editor.WriteToWithOptions(ctx, writer, options) _, err = editor.WriteToWithOptions(ctx, writer, options)
} }
+5 -3
View File
@@ -102,10 +102,12 @@ func (e *Editor) WriteToWithOptions(ctx context.Context, writer io.Writer, optio
return snapshot.WriteTo(convertWriter{ctx: ctx, writer: writer, count: &count}) return snapshot.WriteTo(convertWriter{ctx: ctx, writer: writer, count: &count})
} }
// WritePagesToWithOptions 按指定顺序另存页面,仅为所选页面准备资源和压缩计划 // WritePagesTo 按指定顺序另存页面,仅为所选页面准备资源和压缩计划
// 保留关联资源、目录、注释和签章外观,生成新文档标识,不改变原文档和撤销记录
// 签章外观不代表原签名在导出文档中仍有效,页码不可重复或为空
// 入参: ctx 取消上下文, writer 输出流, indexes 零基页码, options 输出配置 // 入参: ctx 取消上下文, writer 输出流, indexes 零基页码, options 输出配置
// 返回: int64 已写入字节数, error 错误信息 // 返回: int64 已写入字节数, error 错误信息
func (e *Editor) WritePagesToWithOptions(ctx context.Context, writer io.Writer, indexes []int, options WriteOptions) (int64, error) { func (e *Editor) WritePagesTo(ctx context.Context, writer io.Writer, indexes []int, options WriteOptions) (int64, error) {
if err := ctx.Err(); err != nil { if err := ctx.Err(); err != nil {
return 0, err return 0, err
} }
@@ -116,7 +118,7 @@ func (e *Editor) WritePagesToWithOptions(ctx context.Context, writer io.Writer,
snapshot.OnWriteProgress = editorProgress(e.OnWriteProgress).withContext(ctx) snapshot.OnWriteProgress = editorProgress(e.OnWriteProgress).withContext(ctx)
snapshot.output = &outputOptimization{ctx: ctx, options: options.Compression} snapshot.output = &outputOptimization{ctx: ctx, options: options.Compression}
var count int64 var count int64
return snapshot.WritePagesTo(convertWriter{ctx: ctx, writer: writer, count: &count}, indexes) return snapshot.writePagesTo(convertWriter{ctx: ctx, writer: writer, count: &count}, indexes)
} }
// outputSnapshot 创建只读输出配置,原签名存在时仅调整ZIP封装 // outputSnapshot 创建只读输出配置,原签名存在时仅调整ZIP封装
+1 -1
View File
@@ -310,7 +310,7 @@ func Convert(ctx context.Context, input *Input, output io.Writer, options Conver
if options.Pages == nil { if options.Pages == nil {
_, err = editor.WriteToWithOptions(ctx, writer, WriteOptions{Compression: options.Compression}) _, err = editor.WriteToWithOptions(ctx, writer, WriteOptions{Compression: options.Compression})
} else { } else {
_, err = editor.WritePagesToWithOptions(ctx, writer, indices, WriteOptions{Compression: options.Compression}) _, err = editor.WritePagesTo(ctx, writer, indices, WriteOptions{Compression: options.Compression})
} }
return report, err return report, err
} }
+2 -2
View File
@@ -163,7 +163,7 @@ func (e *Editor) AnnotationTexts(index int, id string) ([]string, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -548,7 +548,7 @@ func (e *Editor) annotationScope(page int, path ObjectPath) (*Reader, *Renderer,
return nil, nil, nil, nil, err return nil, nil, nil, nil, err
} }
root.setStates(e.source.annotationStates[e.pages[page].ID+"/"+editorResourceID(path.Annotation)]) root.setStates(e.source.annotationStates[e.pages[page].ID+"/"+editorResourceID(path.Annotation)])
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return nil, nil, nil, nil, err return nil, nil, nil, nil, err
} }
+1 -1
View File
@@ -947,7 +947,7 @@ func (e *Editor) objectBounds(page int, objects []GraphicObject) ([]Box, error)
return nil, fmt.Errorf("object %q cannot be arranged: %w", editorObjectID(object), capability.editError()) return nil, fmt.Errorf("object %q cannot be arranged: %w", editorObjectID(object), capability.editError())
} }
} }
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+1 -1
View File
@@ -419,7 +419,7 @@ func (e *Editor) compositeScope(page int, path ObjectPath) (*Reader, *Renderer,
return nil, nil, nil, nil, err return nil, nil, nil, nil, err
} }
root.setStates(object.CompositeGraphicUnit.states) root.setStates(object.CompositeGraphicUnit.states)
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return nil, nil, nil, nil, err return nil, nil, nil, nil, err
} }
+2 -1
View File
@@ -16,6 +16,7 @@ package ofdgo
import ( import (
"bytes" "bytes"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
basegeom "github.com/xiaoqidun/ofdgo/internal/base/geom" basegeom "github.com/xiaoqidun/ofdgo/internal/base/geom"
@@ -217,7 +218,7 @@ func (e *Editor) pasteCompositeSelection(selection *CompositeSelection, paste fu
if err := e.prepareSourceIDs(); err != nil { if err := e.prepareSourceIDs(); err != nil {
return err return err
} }
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return err return err
} }
+1 -1
View File
@@ -155,7 +155,7 @@ func (e *Editor) AddDocumentContext(ctx context.Context, title string, width, he
break break
} }
} }
createdReader, err := created.ReaderContext(ctx) createdReader, err := created.Reader(ctx)
if err != nil { if err != nil {
return 0, err return 0, err
} }
+2 -2
View File
@@ -102,7 +102,7 @@ func (e *Editor) changeFont(ctx context.Context, id string, mode FontMode, file
if err := ctx.Err(); err != nil { if err := ctx.Err(); err != nil {
return err return err
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -156,7 +156,7 @@ func (e *Editor) ProcessFontsWithOptions(ctx context.Context, options FontProces
if err := progress("prepare", 0, 0); err != nil { if err := progress("prepare", 0, 0); err != nil {
return nil, err return nil, err
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+2 -1
View File
@@ -16,6 +16,7 @@ package ofdgo
import ( import (
"bytes" "bytes"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
"maps" "maps"
@@ -48,7 +49,7 @@ func (e *Editor) GroupObjects(page int, ids []string) (id string, err error) {
return "", fmt.Errorf("grouping requires consecutive objects in the same container") return "", fmt.Errorf("grouping requires consecutive objects in the same container")
} }
} }
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return "", err return "", err
} }
+8 -8
View File
@@ -205,7 +205,7 @@ func (r *Reader) InvoiceCapabilities(ctx context.Context, source InvoiceSource,
func (e *Editor) GenerateInvoicePages(ctx context.Context, source InvoiceSource, index int, layout InvoiceLayout) error { func (e *Editor) GenerateInvoicePages(ctx context.Context, source InvoiceSource, index int, layout InvoiceLayout) error {
ctx = invoiceWriteContext(ctx) ctx = invoiceWriteContext(ctx)
return e.Transaction(func(next *Editor) error { return e.Transaction(func(next *Editor) error {
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -252,7 +252,7 @@ func (e *Editor) InvoicesContext(ctx context.Context) (InvoiceReport, error) {
if ctx == nil { if ctx == nil {
ctx = context.Background() ctx = context.Background()
} }
r, err := e.ReaderContext(ctx) r, err := e.Reader(ctx)
if err != nil { if err != nil {
return InvoiceReport{}, err return InvoiceReport{}, err
} }
@@ -374,7 +374,7 @@ func (e *Editor) UpdateInvoice(ctx context.Context, source InvoiceSource, digest
return err return err
} }
result = InvoiceUpdateResult{Source: updated, Digest: InvoiceDigest(actual), Synchronized: true} result = InvoiceUpdateResult{Source: updated, Digest: InvoiceDigest(actual), Synchronized: true}
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -411,7 +411,7 @@ func (e *Editor) UpdateInvoice(ctx context.Context, source InvoiceSource, digest
if err != nil { if err != nil {
return err return err
} }
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -611,7 +611,7 @@ func (e *Editor) DeleteInvoice(ctx context.Context, source InvoiceSource, digest
ctx = context.Background() ctx = context.Background()
} }
return e.Transaction(func(next *Editor) error { return e.Transaction(func(next *Editor) error {
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -830,7 +830,7 @@ func (e *Editor) SetInvoiceBindings(ctx context.Context, source InvoiceSource, i
ctx = context.Background() ctx = context.Background()
} }
return e.Transaction(func(next *Editor) error { return e.Transaction(func(next *Editor) error {
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -1190,7 +1190,7 @@ func invoiceBindingCoverage(before, after Invoice, bindings []InvoiceBinding) er
// 入参: ctx 取消上下文, ids 页面标识 // 入参: ctx 取消上下文, ids 页面标识
// 返回: []invoiceOwnedPage 按指定顺序排列的摘要, error 页面或读取错误 // 返回: []invoiceOwnedPage 按指定顺序排列的摘要, error 页面或读取错误
func (e *Editor) invoiceOwnedPages(ctx context.Context, ids []string) ([]invoiceOwnedPage, error) { func (e *Editor) invoiceOwnedPages(ctx context.Context, ids []string) ([]invoiceOwnedPage, error) {
r, err := e.ReaderContext(ctx) r, err := e.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1233,7 +1233,7 @@ func (e *Editor) invoiceOwnedPages(ctx context.Context, ids []string) ([]invoice
// 入参: ctx 取消上下文, source 来源, index 来源内发票索引, layout 排版选项 // 入参: ctx 取消上下文, source 来源, index 来源内发票索引, layout 排版选项
// 返回: error 关联或提交错误 // 返回: error 关联或提交错误
func (e *Editor) markInvoicePages(ctx context.Context, source InvoiceSource, index int, layout InvoiceLayout) error { func (e *Editor) markInvoicePages(ctx context.Context, source InvoiceSource, index int, layout InvoiceLayout) error {
r, err := e.ReaderContext(ctx) r, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
+1 -1
View File
@@ -331,7 +331,7 @@ func (e *Editor) editLayerPage(page int, edit func(*Reader, []byte, *editorXML)
if _, err := e.page(page); err != nil { if _, err := e.page(page); err != nil {
return err return err
} }
r, err := e.Reader() r, err := e.reader(nil)
if err != nil { if err != nil {
return err return err
} }
+4 -4
View File
@@ -53,7 +53,7 @@ type resourceImageMaskKey struct {
// 入参: ctx 取消上下文 // 入参: ctx 取消上下文
// 返回: []ResourceInfo 资源及引用位置, error 快照或结构错误 // 返回: []ResourceInfo 资源及引用位置, error 快照或结构错误
func (e *Editor) Resources(ctx context.Context) ([]ResourceInfo, error) { func (e *Editor) Resources(ctx context.Context) ([]ResourceInfo, error) {
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -108,7 +108,7 @@ func (e *Editor) ImportMedia(ctx context.Context, kind, format string, data []by
if kind != "Audio" && kind != "Video" || len(data) == 0 { if kind != "Audio" && kind != "Video" || len(data) == 0 {
return "", fmt.Errorf("nonempty Audio or Video resource required") return "", fmt.Errorf("nonempty Audio or Video resource required")
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -237,7 +237,7 @@ func (e *Editor) DeleteResource(ctx context.Context, kind, id string) error {
// 入参: ctx 取消上下文, kind 资源类型, id 标识, replace 替换操作,nil表示删除, data 附件替换数据 // 入参: ctx 取消上下文, kind 资源类型, id 标识, replace 替换操作,nil表示删除, data 附件替换数据
// 返回: error 引用、结构或提交错误 // 返回: error 引用、结构或提交错误
func (e *Editor) changeResource(ctx context.Context, kind, id string, replace func(*resourceCatalog, ResourceInfo, map[string][]byte) error, data []byte) error { func (e *Editor) changeResource(ctx context.Context, kind, id string, replace func(*resourceCatalog, ResourceInfo, map[string][]byte) error, data []byte) error {
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -272,7 +272,7 @@ func (e *Editor) changeResource(ctx context.Context, kind, id string, replace fu
if working.Revision() == revision { if working.Revision() == revision {
return ctx.Err() return ctx.Err()
} }
reader, err = working.ReaderContext(ctx) reader, err = working.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
+1 -1
View File
@@ -203,7 +203,7 @@ func (e *Editor) importResourceStyle(ctx context.Context, create func(*Editor) (
// 入参: ctx 取消上下文 // 入参: ctx 取消上下文
// 返回: *Reader 包含待注册字体、颜色空间及参数依赖的独立快照, error 读取或隔离错误 // 返回: *Reader 包含待注册字体、颜色空间及参数依赖的独立快照, error 读取或隔离错误
func (e *Editor) resourceStyleReader(ctx context.Context) (*Reader, error) { func (e *Editor) resourceStyleReader(ctx context.Context) (*Reader, error) {
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil || len(e.resources) == 0 { if err != nil || len(e.resources) == 0 {
return reader, err return reader, err
} }
+1 -1
View File
@@ -277,7 +277,7 @@ func (e *Editor) selectionGeometry(page int, objects, annotations []string) ([]B
if err != nil { if err != nil {
return nil, nil, Box{}, err return nil, nil, Box{}, err
} }
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return nil, nil, Box{}, err return nil, nil, Box{}, err
} }
+3 -3
View File
@@ -27,7 +27,7 @@ import (
// Structure 获取当前编辑状态的标引,包括页面和图元删除后的引用调整 // Structure 获取当前编辑状态的标引,包括页面和图元删除后的引用调整
// 返回: []Structure 标引结构, error 快照或解析错误 // 返回: []Structure 标引结构, error 快照或解析错误
func (e *Editor) Structure() ([]Structure, error) { func (e *Editor) Structure() ([]Structure, error) {
r, err := e.Reader() r, err := e.reader(nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -397,7 +397,7 @@ func (e *Editor) editStructureContext(ctx context.Context, index int, edit func(
} }
tag := tags[index] tag := tags[index]
name := e.source.reader.ResPath(tag.FileLoc) name := e.source.reader.ResPath(tag.FileLoc)
snapshot, err := e.ReaderContext(ctx) snapshot, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -532,7 +532,7 @@ func (e *Editor) validateStructureReferencesContext(ctx context.Context, root *S
} }
if r == nil { if r == nil {
var err error var err error
r, err = e.ReaderContext(ctx) r, err = e.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+4 -3
View File
@@ -16,6 +16,7 @@ package ofdgo
import ( import (
"bytes" "bytes"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
"path" "path"
@@ -201,7 +202,7 @@ func (e *Editor) CreateTemplateFromPage(page int, name, zOrder string) (string,
if err := e.prepareSourceIDs(); err != nil { if err := e.prepareSourceIDs(); err != nil {
return err return err
} }
r, err := e.Reader() r, err := e.reader(nil)
if err != nil { if err != nil {
return err return err
} }
@@ -351,7 +352,7 @@ func (e *Editor) ReplaceTemplateFromPage(id string, page int) error {
if err != nil { if err != nil {
return err return err
} }
r, err := e.Reader() r, err := e.reader(nil)
if err != nil { if err != nil {
return err return err
} }
@@ -451,7 +452,7 @@ func editorTemplateDefinition(reader *Reader, id string) (TemplatePage, error) {
// 返回: error 读取、修改或提交错误 // 返回: error 读取、修改或提交错误
func (e *Editor) editTemplateDefinition(id string, edit func(*Reader, []byte, *editorXML) ([]byte, error)) error { func (e *Editor) editTemplateDefinition(id string, edit func(*Reader, []byte, *editorXML) ([]byte, error)) error {
return e.Transaction(func(_ *Editor) error { return e.Transaction(func(_ *Editor) error {
r, err := e.Reader() r, err := e.reader(nil)
if err != nil { if err != nil {
return err return err
} }
+2 -1
View File
@@ -16,6 +16,7 @@ package ofdgo
import ( import (
"bytes" "bytes"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
basegeom "github.com/xiaoqidun/ofdgo/internal/base/geom" basegeom "github.com/xiaoqidun/ofdgo/internal/base/geom"
@@ -329,7 +330,7 @@ func (e *Editor) transformMatrix(object GraphicObject, matrix Matrix) (GraphicOb
return transformEditorMatrix(object, matrix), nil return transformEditorMatrix(object, matrix), nil
} }
origin := e.objectOrigin(object.ImageObject.ID) origin := e.objectOrigin(object.ImageObject.ID)
reader, err := e.Reader() reader, err := e.reader(nil)
if err != nil { if err != nil {
return GraphicObject{}, err return GraphicObject{}, err
} }
+3 -3
View File
@@ -42,7 +42,7 @@ func (e *Editor) DocumentVersionsContext(ctx context.Context) ([]DocumentVersion
if e.source == nil { if e.source == nil {
return nil, nil return nil, nil
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -257,7 +257,7 @@ func (e *Editor) SetDefaultVersionContext(ctx context.Context, id string) error
} }
return fmt.Errorf("document version not found: %s", id) return fmt.Errorf("document version not found: %s", id)
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -314,7 +314,7 @@ func (e *Editor) RenameVersionContext(ctx context.Context, id, name string) erro
if e.source == nil { if e.source == nil {
return fmt.Errorf("document version not found: %s", id) return fmt.Errorf("document version not found: %s", id)
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
+1 -1
View File
@@ -101,7 +101,7 @@ func (e *Editor) AddWatermarks(ctx context.Context, indexes []int, object Graphi
if err != nil { if err != nil {
return nil, err return nil, err
} }
reader, err := preview.Reader() reader, err := preview.reader(nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+2 -2
View File
@@ -650,7 +650,7 @@ func (e *Editor) layoutInvoiceReferenceSlots(ctx context.Context, bindings []Inv
if original.String() != before { if original.String() != before {
return fmt.Errorf("invoice slot text changed") return fmt.Errorf("invoice slot text changed")
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -857,7 +857,7 @@ func invoiceCheckReflowReferences(ctx context.Context, e *Editor, ownedPageIDs [
} }
owned[key] = true owned[key] = true
} }
reader, err := e.ReaderContext(ctx) reader, err := e.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
+7 -7
View File
@@ -242,7 +242,7 @@ func (e *Editor) ExportInvoice(ctx context.Context, source InvoiceSource) ([]byt
if len(e.pages) == 0 { if len(e.pages) == 0 {
return e.source.reader.ExportInvoice(invoiceWriteContext(ctx), source) return e.source.reader.ExportInvoice(invoiceWriteContext(ctx), source)
} }
r, err := e.ReaderContext(invoiceWriteContext(ctx)) r, err := e.Reader(invoiceWriteContext(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -297,7 +297,7 @@ func (e *Editor) changeInvoiceSource(ctx context.Context, source InvoiceSource,
return InvoiceSource{}, fmt.Errorf("invoice data limit exceeded") return InvoiceSource{}, fmt.Errorf("invoice data limit exceeded")
} }
if objectReference { if objectReference {
r, err := e.ReaderContext(ctx) r, err := e.Reader(ctx)
if err != nil { if err != nil {
return InvoiceSource{}, err return InvoiceSource{}, err
} }
@@ -526,7 +526,7 @@ func (e *Editor) importInvoiceReferences(ctx context.Context, data []byte, optio
} }
var source InvoiceSource var source InvoiceSource
err := e.Transaction(func(next *Editor) error { err := e.Transaction(func(next *Editor) error {
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -546,7 +546,7 @@ func (e *Editor) importInvoiceReferences(ctx context.Context, data []byte, optio
if err := next.editStructure(index, func(_ []byte, _ *editorXML, _ CustomTag) ([]byte, error) { return bytes.Clone(data), nil }); err != nil { if err := next.editStructure(index, func(_ []byte, _ *editorXML, _ CustomTag) ([]byte, error) { return bytes.Clone(data), nil }); err != nil {
return err return err
} }
r, err = next.ReaderContext(ctx) r, err = next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -631,7 +631,7 @@ func (e *Editor) editInvoiceReferences(ctx context.Context, source InvoiceSource
} }
var result InvoiceUpdateResult var result InvoiceUpdateResult
err := e.Transaction(func(next *Editor) error { err := e.Transaction(func(next *Editor) error {
r, err := next.ReaderContext(ctx) r, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -786,7 +786,7 @@ func (e *Editor) editInvoiceReferences(ctx context.Context, source InvoiceSource
if err := next.SyncInvoicePages(ctx, invoice, singles); err != nil { if err := next.SyncInvoicePages(ctx, invoice, singles); err != nil {
return err return err
} }
view, err := next.ReaderContext(ctx) view, err := next.Reader(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -865,7 +865,7 @@ func (e *Editor) setInvoiceReferences(ctx context.Context, source InvoiceSource,
if index != 0 { if index != 0 {
return InvoiceUpdateResult{}, fmt.Errorf("invoice index out of range") return InvoiceUpdateResult{}, fmt.Errorf("invoice index out of range")
} }
r, err := e.ReaderContext(ctx) r, err := e.Reader(ctx)
if err != nil { if err != nil {
return InvoiceUpdateResult{}, err return InvoiceUpdateResult{}, err
} }
+4 -10
View File
@@ -239,13 +239,13 @@ func (e *Editor) WriteTo(writer io.Writer) (int64, error) {
return e.writePlaintext(writer) return e.writePlaintext(writer)
} }
// WritePagesTo 按指定顺序将页面另存为独立OFD,不修改当前文档或撤销记录 // writePagesTo 按指定顺序将页面另存为独立OFD,不修改当前文档或撤销记录
// 保留描述信息并生成新文档标识,迁移相关资源、目录、注释和签章外观,移除指向未选页面的跳转 // 保留描述信息并生成新文档标识,迁移相关资源、目录、注释和签章外观,移除指向未选页面的跳转
// 快照只准备所选页面,关联引用由页面导入流程统一筛选,沿用当前后端及字体来源 // 快照只准备所选页面,关联引用由页面导入流程统一筛选,沿用当前后端及字体来源
// 签名凭据不代表另存文件验签有效;进度与取消复用OnWriteProgress,另含snapshot、ids和commit阶段 // 签名凭据不代表另存文件验签有效;进度与取消复用OnWriteProgress,另含snapshot、ids和commit阶段
// 入参: writer 输出流, indexes 从0开始的页面索引,不可重复或为空 // 入参: writer 输出流, indexes 从0开始的页面索引,不可重复或为空
// 返回: int64 已写入字节数, error 错误信息 // 返回: int64 已写入字节数, error 错误信息
func (e *Editor) WritePagesTo(writer io.Writer, indexes []int) (int64, error) { func (e *Editor) writePagesTo(writer io.Writer, indexes []int) (int64, error) {
ctx := context.Background() ctx := context.Background()
if e.output != nil { if e.output != nil {
ctx = e.output.ctx ctx = e.output.ctx
@@ -307,16 +307,10 @@ func (e *Editor) WritePagesTo(writer io.Writer, indexes []int) (int64, error) {
// Reader 获取当前文档的独立内存快照,不进行ZIP压缩,后续修改不影响已有快照 // Reader 获取当前文档的独立内存快照,不进行ZIP压缩,后续修改不影响已有快照
// 返回的Reader可用于现有渲染、搜索和导出接口,新增资源仅包含实际引用的部分,二进制数据内部共享只读 // 返回的Reader可用于现有渲染、搜索和导出接口,新增资源仅包含实际引用的部分,二进制数据内部共享只读
// 返回: *Reader 阅读器, error 错误信息 // 失败时不返回部分结果,不改变当前编辑状态或撤销记录
func (e *Editor) Reader() (*Reader, error) {
return e.reader(nil)
}
// ReaderContext 获取可取消的独立内存快照,失败时不返回部分结果
// 快照保持Reader的资源所有权规则,不改变当前编辑状态或撤销记录
// 入参: ctx 取消上下文 // 入参: ctx 取消上下文
// 返回: *Reader 阅读器, error 准备或取消错误 // 返回: *Reader 阅读器, error 准备或取消错误
func (e *Editor) ReaderContext(ctx context.Context) (*Reader, error) { func (e *Editor) Reader(ctx context.Context) (*Reader, error) {
return e.readerContext(ctx, nil) return e.readerContext(ctx, nil)
} }