mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 16:44:23 +08:00
1 parent
b06df462ea
commit
e222cddabb
20 files changed
+264
-230
No files matched your search
+32
-32
@@ -57,7 +57,7 @@ type FontInfo = ofdgo.FontInfo
|
||||
type Session struct {
|
||||
Reader *ofdgo.Reader
|
||||
Renderer *ofdgo.Renderer
|
||||
source *ofdgo.Source
|
||||
input *ofdgo.Input
|
||||
fontFS *ofdgo.FontFS
|
||||
doc *ofdgo.Document
|
||||
pageCache map[int]*ofdgo.PageContent
|
||||
@@ -425,7 +425,7 @@ type businessEngine struct {
|
||||
copiedObjects *editorClipboard
|
||||
copiedStyle *ofdgo.GraphicObject
|
||||
ctx context.Context
|
||||
resolveSource func(context.Context, any) (io.ReaderAt, int64, error)
|
||||
resolveInput func(context.Context, any) (io.ReaderAt, int64, error)
|
||||
conversionPool *ofdgo.ConversionPool
|
||||
}
|
||||
|
||||
@@ -436,21 +436,21 @@ func Open(data []byte, opts OpenOptions) (*Session, error) {
|
||||
if len(data) == 0 {
|
||||
return nil, fmt.Errorf("empty ofd data")
|
||||
}
|
||||
source, err := ofdgo.NewSource(bytes.NewReader(data), int64(len(data)))
|
||||
input, err := ofdgo.NewInput(bytes.NewReader(data), int64(len(data)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reader, err := ofdgo.NewReader(source, opts.ReaderOptions...)
|
||||
reader, err := ofdgo.NewReader(input, opts.ReaderOptions...)
|
||||
if err != nil {
|
||||
source.Close()
|
||||
input.Close()
|
||||
return nil, err
|
||||
}
|
||||
session, err := newSession(reader, opts)
|
||||
if err != nil {
|
||||
source.Close()
|
||||
input.Close()
|
||||
return nil, err
|
||||
}
|
||||
session.source = source
|
||||
session.input = input
|
||||
return session, nil
|
||||
}
|
||||
|
||||
@@ -461,7 +461,7 @@ func (s *Session) Close() error {
|
||||
return nil
|
||||
}
|
||||
reader := s.Reader
|
||||
source := s.source
|
||||
source := s.input
|
||||
*s = Session{}
|
||||
var err error
|
||||
if reader != nil {
|
||||
@@ -1336,12 +1336,12 @@ func (e *businessEngine) detectDocumentFormat(args []platformValue) (any, error)
|
||||
return nil, fmt.Errorf("missing detection arguments")
|
||||
}
|
||||
reader := &browserReaderAt{read: args[0], size: int64(args[1].Float()), checkpoint: args[2]}
|
||||
source, err := ofdgo.NewSource(reader, reader.size)
|
||||
input, err := ofdgo.NewInput(reader, reader.size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer source.Close()
|
||||
return ofdgo.DetectFormat(source)
|
||||
defer input.Close()
|
||||
return ofdgo.DetectFormat(input)
|
||||
}
|
||||
|
||||
// convertPDFDocument 通过库转换PDF,不替换当前文档会话
|
||||
@@ -1351,11 +1351,11 @@ func (e *businessEngine) convertPDFDocument(args []platformValue) (any, error) {
|
||||
if len(args) != 6 {
|
||||
return nil, fmt.Errorf("missing PDF data")
|
||||
}
|
||||
source, err := e.sourceFromValue(args[0])
|
||||
input, err := e.inputFromValue(args[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer source.Close()
|
||||
defer input.Close()
|
||||
fonts, err := e.fontsFromJS(args[1])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1376,7 +1376,7 @@ func (e *businessEngine) convertPDFDocument(args []platformValue) (any, error) {
|
||||
}))
|
||||
}
|
||||
options.RendererOptions = []ofdgo.RendererOption{ofdgo.WithFontFS(fontSources...)}
|
||||
editor, report, err := ofdgo.ImportPDF(e.operationContext(), source, options)
|
||||
editor, report, err := ofdgo.ImportPDF(e.operationContext(), input, options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1478,12 +1478,12 @@ func (e *businessEngine) convertFile(args []platformValue) (any, error) {
|
||||
return nil, err
|
||||
}
|
||||
reader := &browserReaderAt{read: args[0], checkpoint: args[6], size: int64(args[1].Float())}
|
||||
source, err := ofdgo.NewSource(reader, reader.size)
|
||||
input, err := ofdgo.NewInput(reader, reader.size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer source.Close()
|
||||
report, err := ofdgo.Convert(e.newOutputContext(args[6]), source, writer, options)
|
||||
defer input.Close()
|
||||
report, err := ofdgo.Convert(e.newOutputContext(args[6]), input, writer, options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1514,8 +1514,8 @@ func (e *businessEngine) packFiles(args []platformValue) (any, error) {
|
||||
inputs := make([]*browserReaderAt, files.Length())
|
||||
defer func() {
|
||||
for _, entry := range entries {
|
||||
if entry.Source != nil {
|
||||
entry.Source.Close()
|
||||
if entry.Input != nil {
|
||||
entry.Input.Close()
|
||||
}
|
||||
}
|
||||
}()
|
||||
@@ -1524,12 +1524,12 @@ func (e *businessEngine) packFiles(args []platformValue) (any, error) {
|
||||
name := file.Get("name").String()
|
||||
read := args[1].Invoke(i)
|
||||
reader := &browserReaderAt{read: read, checkpoint: args[4], size: int64(file.Get("size").Float())}
|
||||
source, err := ofdgo.NewSource(reader, reader.size)
|
||||
input, err := ofdgo.NewInput(reader, reader.size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
inputs[i] = reader
|
||||
entries[i] = ofdgo.ArchiveFile{Name: name, Source: source}
|
||||
entries[i] = ofdgo.ArchiveFile{Name: name, Input: input}
|
||||
}
|
||||
options := ofdgo.ArchiveOptions{OnProgress: func(completed, total int) error {
|
||||
if completed > 0 {
|
||||
@@ -1558,14 +1558,14 @@ func (e *businessEngine) openDocument(args []platformValue) (any, error) {
|
||||
if len(args) < 3 {
|
||||
return nil, fmt.Errorf("missing open arguments")
|
||||
}
|
||||
source, err := e.sourceFromValue(args[0])
|
||||
input, err := e.inputFromValue(args[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
keep := false
|
||||
defer func() {
|
||||
if !keep {
|
||||
source.Close()
|
||||
input.Close()
|
||||
}
|
||||
}()
|
||||
fonts, err := e.fontsFromJS(args[1])
|
||||
@@ -1582,7 +1582,7 @@ func (e *businessEngine) openDocument(args []platformValue) (any, error) {
|
||||
defer clear(credentials.Password)
|
||||
options.ReaderOptions = append(options.ReaderOptions, ofdgo.WithCredentials(credentials))
|
||||
}
|
||||
reader, err := ofdgo.NewReader(source, options.ReaderOptions...)
|
||||
reader, err := ofdgo.NewReader(input, options.ReaderOptions...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1599,7 +1599,7 @@ func (e *businessEngine) openDocument(args []platformValue) (any, error) {
|
||||
e.currentSession = nil
|
||||
}
|
||||
e.currentSession = session
|
||||
session.source = source
|
||||
session.input = input
|
||||
keep = true
|
||||
return e.currentSession.Summary(), nil
|
||||
}
|
||||
@@ -5505,14 +5505,14 @@ func (e *businessEngine) loadImport(args []platformValue) (any, error) {
|
||||
if args[0].IsNull() {
|
||||
return nil, nil
|
||||
}
|
||||
source, err := e.sourceFromValue(args[0])
|
||||
input, err := e.inputFromValue(args[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
keep := false
|
||||
defer func() {
|
||||
if !keep {
|
||||
source.Close()
|
||||
input.Close()
|
||||
}
|
||||
}()
|
||||
var options []ofdgo.ReaderOption
|
||||
@@ -5524,11 +5524,11 @@ func (e *businessEngine) loadImport(args []platformValue) (any, error) {
|
||||
defer clear(credentials.Password)
|
||||
options = append(options, ofdgo.WithCredentials(credentials))
|
||||
}
|
||||
reader, err := ofdgo.NewReader(source, options...)
|
||||
reader, err := ofdgo.NewReader(input, options...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reader.Closer = source
|
||||
reader.Closer = input
|
||||
doc, err := reader.Doc()
|
||||
if err != nil {
|
||||
reader.Close()
|
||||
@@ -6180,7 +6180,7 @@ func (e *businessEngine) selectDocumentVersion(args []platformValue) (any, error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
session.source, e.currentSession.source = e.currentSession.source, nil
|
||||
session.input, e.currentSession.input = e.currentSession.input, nil
|
||||
_ = e.currentSession.Close()
|
||||
e.currentSession = session
|
||||
e.clearImport()
|
||||
@@ -6338,7 +6338,7 @@ func (e *businessEngine) selectDocument(args []platformValue) (any, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
session.source, e.currentSession.source = e.currentSession.source, nil
|
||||
session.input, e.currentSession.input = e.currentSession.input, nil
|
||||
_ = e.currentSession.Close()
|
||||
e.currentSession, e.currentEditor = session, session.editor
|
||||
if e.pendingImport != nil {
|
||||
@@ -6440,7 +6440,7 @@ func (e *businessEngine) previewEditor(editor *ofdgo.Editor, annotations bool) (
|
||||
editor.SetFontFS(session.fontFS)
|
||||
}
|
||||
if editor == e.currentEditor {
|
||||
session.source, e.currentSession.source = e.currentSession.source, nil
|
||||
session.input, e.currentSession.input = e.currentSession.input, nil
|
||||
}
|
||||
_ = e.currentSession.Close()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user