mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 14:31:12 +08:00
1 parent
b20f411f0d
commit
e6a8786f0c
6 files changed
+151
-17
No files matched your search
+33
-4
@@ -187,6 +187,7 @@ func RunWASM() {
|
||||
registerCallback("ofdgoOpen", openDocument)
|
||||
registerCallback("ofdgoSelectDocument", selectDocument)
|
||||
registerCallback("ofdgoDocumentVersions", documentVersions)
|
||||
registerCallback("ofdgoSelectVersion", selectDocumentVersion)
|
||||
registerCallback("ofdgoChangeVersion", changeDocumentVersion)
|
||||
registerCallback("ofdgoChangeDocument", changePackageDocument)
|
||||
registerCallback("ofdgoPackageDocuments", packageDocuments)
|
||||
@@ -3445,14 +3446,20 @@ func packageDocuments(args []js.Value) (any, error) {
|
||||
return entries, nil
|
||||
}
|
||||
|
||||
// documentVersions 读取当前编辑文档的版本列表,不切换版本或解析页面
|
||||
// documentVersions 读取当前文档的版本列表,包含尚未保存的编辑内容
|
||||
// 入参: args 保留参数
|
||||
// 返回: any 版本列表, error 读取错误
|
||||
func documentVersions(args []js.Value) (any, error) {
|
||||
if currentEditor == nil {
|
||||
return nil, fmt.Errorf("no document is being edited")
|
||||
if currentSession == nil {
|
||||
return nil, fmt.Errorf("ofd document is not opened")
|
||||
}
|
||||
var versions []ofdgo.DocumentVersionInfo
|
||||
var err error
|
||||
if currentEditor != nil {
|
||||
versions, err = currentEditor.DocumentVersions()
|
||||
} else {
|
||||
versions, err = currentSession.Reader.DocumentVersions()
|
||||
}
|
||||
versions, err := currentEditor.DocumentVersions()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -3467,6 +3474,28 @@ func documentVersions(args []js.Value) (any, error) {
|
||||
return entries, nil
|
||||
}
|
||||
|
||||
// selectDocumentVersion 切换阅读版本,已有编辑器时保留修改及历史,否则直接创建阅读视图
|
||||
// 入参: args 版本标识
|
||||
// 返回: any 文档信息, error 切换错误
|
||||
func selectDocumentVersion(args []js.Value) (any, error) {
|
||||
if currentSession == nil || len(args) != 1 || args[0].Type() != js.TypeString {
|
||||
return nil, fmt.Errorf("invalid version selection")
|
||||
}
|
||||
id := args[0].String()
|
||||
if currentEditor != nil {
|
||||
return changeAtomicObjects(func() error { return currentEditor.SelectVersion(id) })
|
||||
}
|
||||
session, err := currentSession.DocumentVersion(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_ = currentSession.Close()
|
||||
currentSession = session
|
||||
clearImport()
|
||||
copiedObjects, copiedStyle = nil, nil
|
||||
return session.Summary(), nil
|
||||
}
|
||||
|
||||
// changeDocumentVersion 调用库层版本操作,沿用编辑历史和预览更新流程
|
||||
// 入参: args 操作、版本标识及可选名称
|
||||
// 返回: any 文档信息, error 操作错误
|
||||
|
||||
@@ -74,6 +74,7 @@ type pageBoxInfo struct {
|
||||
type DocumentInfo struct {
|
||||
DocumentIndex int `json:"documentIndex"`
|
||||
DocumentVersion string `json:"documentVersion"`
|
||||
VersionCount int `json:"versionCount"`
|
||||
Documents []DocumentEntry `json:"documents,omitempty"`
|
||||
Encryption EncryptionInfo `json:"encryption"`
|
||||
Version string `json:"version"`
|
||||
@@ -349,6 +350,34 @@ func (s *Session) Document(index int) (*Session, error) {
|
||||
return next, nil
|
||||
}
|
||||
|
||||
// DocumentVersion 创建版本阅读会话,保留未保存内容和字体配置,不修改默认版本
|
||||
// 入参: id 版本标识,空字符串选择主入口
|
||||
// 返回: *Session 阅读会话, error 版本读取错误
|
||||
func (s *Session) DocumentVersion(id string) (*Session, error) {
|
||||
reader := s.Reader
|
||||
if s.editor != nil {
|
||||
var err error
|
||||
reader, err = s.editor.Reader()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
reader, err := reader.DocumentVersion(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
next, err := newSession(reader, OpenOptions{RenderAnnotations: s.Renderer.RenderAnnotations})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ofdgo.WithRenderBackends(s.Renderer.Backends())(next.Renderer)
|
||||
next.fontFS = s.fontFS
|
||||
if next.fontFS != nil {
|
||||
next.Renderer.SetFontFS(next.fontFS)
|
||||
}
|
||||
return next, nil
|
||||
}
|
||||
|
||||
// SetFonts 更新字体配置并保留文档、页面和验签结果
|
||||
// 入参: fonts 字体文件列表
|
||||
// 返回: error 错误信息
|
||||
@@ -451,6 +480,7 @@ func (s *Session) Summary() DocumentInfo {
|
||||
DetailsPending: true,
|
||||
}
|
||||
info.DocumentVersion, _ = s.Reader.DocumentVersionID()
|
||||
info.VersionCount, _ = s.Reader.DocumentVersionCount()
|
||||
for index, body := range s.Reader.OFD.DocBody {
|
||||
info.Documents = append(info.Documents, DocumentEntry{Index: index, Title: body.DocInfo.Title, Root: body.DocRoot, ID: body.DocInfo.DocID})
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user