feat(前端界面): OFDGo WebUI支持单页输出
build.yaml / build (push) Successful in 33s

This commit is contained in:
2026-07-07 10:45:17 +08:00
parent 2fc360e048
commit db860a22f1
5 changed files with 343 additions and 54 deletions
+38 -2
View File
@@ -42,6 +42,8 @@ type apiResult struct {
func RunWASM() {
registerCallback("ofdgoOpen", openDocument)
registerCallback("ofdgoRenderPage", renderPage)
registerCallback("ofdgoExportFormats", exportFormats)
registerCallback("ofdgoExportPage", exportPage)
registerCallback("ofdgoExportPDF", exportPDF)
registerCallback("ofdgoFontCandidates", fontCandidates)
select {}
@@ -113,7 +115,38 @@ func renderPage(args []js.Value) (any, error) {
return currentSession.RenderPageSVG(args[0].Int())
}
// exportPDF 导出OFD为PDF
// exportFormats 获取导出格式
// 入参: args 浏览器参数
// 返回: any 导出格式, error 错误信息
func exportFormats(args []js.Value) (any, error) {
return ExportFormats(), nil
}
// exportPage 导出OFD单页
// 入参: args 浏览器参数
// 返回: any 导出结果, error 错误信息
func exportPage(args []js.Value) (any, error) {
if currentSession == nil {
return nil, fmt.Errorf("ofd document is not opened")
}
if len(args) < 2 {
return nil, fmt.Errorf("missing export page arguments")
}
data, format, err := currentSession.ExportPage(args[0].Int(), args[1].String())
if err != nil {
return nil, err
}
return map[string]any{
"base64": base64.StdEncoding.EncodeToString(data),
"size": len(data),
"format": format.Value,
"label": format.Label,
"extension": format.Extension,
"mime": format.MIME,
}, nil
}
// exportPDF 导出OFD文档为PDF
// 入参: args 浏览器参数
// 返回: any PDF结果, error 错误信息
func exportPDF(args []js.Value) (any, error) {
@@ -124,7 +157,10 @@ func exportPDF(args []js.Value) (any, error) {
if err != nil {
return nil, err
}
return map[string]any{"base64": base64.StdEncoding.EncodeToString(data), "size": len(data)}, nil
return map[string]any{
"base64": base64.StdEncoding.EncodeToString(data),
"size": len(data),
}, nil
}
// fontCandidates 获取字体候选名称