xiaoqidun ffd61d6412
build.yaml / build (push) Successful in 33s
feat(前端界面): 重置打开文件状态
2026-07-08 21:49:12 +08:00
2026-07-08 11:10:34 +08:00
2026-07-08 11:10:34 +08:00
2026-01-01 23:29:33 +08:00
2026-01-01 23:29:33 +08:00

OFDGo PkgGoDev

首个原生、全平台兼容的纯 Go 语言 OFD 渲染库

在线体验

OFDGo WebUI,将OFDGo编译为WASM提供服务

一键部署

docker run -d -p 80:80 ccr.ccs.tencentyun.com/xiaoqidun/ofdgo:latest

构建指南

:: 1. 编译OFDGo WASM
set GOOS=js
set GOARCH=wasm
go build -o assets/webui/ofdgo.wasm -trimpath -ldflags "-s -w -buildid=" ./cmd/webui/wasm.go
:: 2. 编译OFDGo WebUI
set GOOS=windows
set GOARCH=amd64
go build -o ofdgo_webui.exe -trimpath -ldflags "-s -w -buildid=" ./cmd/webui/webui.go

安装为库

go get -u github.com/xiaoqidun/ofdgo

渲染输出

package main

import (
	"log"
	"os"

	"github.com/xiaoqidun/ofdgo"
)

func main() {
	// 1. 打开OFD文件
	reader, err := ofdgo.Open("test.ofd")
	if err != nil {
		log.Fatal(err)
	}
	defer reader.Close()
	// 2. 创建PDF文件
	pdfFile, err := os.Create("test.pdf")
	if err != nil {
		log.Fatal(err)
	}
	defer pdfFile.Close()
	// 3. 渲染PDF文件
	renderer := ofdgo.NewRenderer(reader)
	if err := renderer.RenderToMultiPagePDF(pdfFile); err != nil {
		log.Fatal(err)
	}
}

签名验证

package main

import (
	"log"
	"os"

	"github.com/xiaoqidun/ofdgo"
)

func main() {
	// 1. 打开OFD文件
	data, err := os.ReadFile("test.ofd")
	if err != nil {
		log.Fatal(err)
	}
	// 2. 验证OFD签名
	reports, err := ofdgo.VerifySignaturesBytes(data)
	if err != nil {
		log.Fatal(err)
	}
	// 3. 判断验证结果
	if len(reports) == 0 {
		log.Println("文件未发现签名")
		return
	}
	valid := true
	for _, report := range reports {
		if report.Valid {
			log.Printf("签名%s验证通过", report.ID)
			continue
		}
		valid = false
		if report.Error == "" {
			log.Printf("签名%s验证失败", report.ID)
		} else {
			log.Printf("签名%s验证失败: %s", report.ID, report.Error)
		}
	}
	if !valid {
		os.Exit(1)
	}
}

授权协议

本项目使用 Apache License 2.0 授权协议

S
Description
No description provided
Readme Apache-2.0
1.9 MiB
Languages
Go 79.4%
JavaScript 15.9%
CSS 3.5%
HTML 1.1%