mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-30 01:27:26 +08:00
This commit is contained in:
1 parent
0bc3f69df0
commit
fd32384091
4 files changed
+12
-7
No files matched your search
@@ -9,7 +9,7 @@ require (
|
||||
github.com/tdewolff/canvas v0.0.0-20260923214215-09804640d00c
|
||||
github.com/tdewolff/font v0.0.0-20260913163313-54f98bb59ee6
|
||||
github.com/xiaoqidun/jbig2 v1.1.1
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924121050-2d9bc5cc700d
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924125905-097a17bdf501
|
||||
golang.org/x/crypto v0.57.0
|
||||
golang.org/x/image v0.46.0
|
||||
golang.org/x/text v0.42.0
|
||||
|
||||
@@ -60,8 +60,8 @@ github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk=
|
||||
github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
|
||||
github.com/xiaoqidun/jbig2 v1.1.1 h1:SjliS9ZO0e9HX5oYUfBuXrfFsXhWricrSz+XY4zORDI=
|
||||
github.com/xiaoqidun/jbig2 v1.1.1/go.mod h1:8QonVWtENmh2kc6l+leqeGl7psb79DWlHDkCpdChjfQ=
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924121050-2d9bc5cc700d h1:ko1gZlKK5MvOjjTxr1tYyysVlWVIDvgVi+bogBi6pUw=
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924121050-2d9bc5cc700d/go.mod h1:/D0XHgfZ7xNhix95swpNaThpuqoJjVR5wIadogtR5pI=
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924125905-097a17bdf501 h1:6kzh25IgKXVcAbigV1i3AO3pfpzAniC0F4mXwPGRTrY=
|
||||
github.com/xiaoqidun/pdfgo v0.0.0-20260924125905-097a17bdf501/go.mod h1:/D0XHgfZ7xNhix95swpNaThpuqoJjVR5wIadogtR5pI=
|
||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||
github.com/yuin/goldmark v1.8.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA=
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ import (
|
||||
)
|
||||
|
||||
// PDFImportOptions 指定PDF转换的运行时后端、进度通知与源文件检查策略
|
||||
// Strict禁止恢复缺失的图形状态资源,默认恢复并在报告中记录警告
|
||||
// Strict禁止恢复缺失的图形状态资源和无目标链接,默认恢复并在报告中记录警告
|
||||
type PDFImportOptions struct {
|
||||
Backends *RenderBackends
|
||||
Progress func(int) error
|
||||
@@ -113,7 +113,7 @@ func ImportPDF(ctx context.Context, source io.ReaderAt, size int64, options PDFI
|
||||
if err := importer.flushPath(); err != nil {
|
||||
return fmt.Errorf("import PDF page %d: %w", index+1, err)
|
||||
}
|
||||
if err := importer.annotations(ctx, page); err != nil {
|
||||
if err := importer.annotations(ctx, page, options.Strict); err != nil {
|
||||
return fmt.Errorf("import PDF page %d: %w", index+1, err)
|
||||
}
|
||||
if err := importer.commitObjects(); err != nil {
|
||||
|
||||
+7
-2
@@ -16,15 +16,16 @@ package ofdgo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/xiaoqidun/pdfgo"
|
||||
)
|
||||
|
||||
// annotations 将链接和签名外观按页面顺序转换为OFD对象
|
||||
// 入参: ctx 取消上下文, page PDF页面
|
||||
// 入参: ctx取消上下文, page为PDF页面, strict严格检查开关
|
||||
// 返回: error 错误信息
|
||||
func (p *pdfImporter) annotations(ctx context.Context, page *pdfgo.Page) error {
|
||||
func (p *pdfImporter) annotations(ctx context.Context, page *pdfgo.Page, strict bool) error {
|
||||
annotations, err := page.Annotations()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -112,6 +113,10 @@ func (p *pdfImporter) annotations(ctx context.Context, page *pdfgo.Page) error {
|
||||
if action.URI == nil {
|
||||
destination, err := p.reader.ReadDestination(target)
|
||||
if err != nil {
|
||||
if !strict && errors.Is(err, pdfgo.ErrDestinationNotFound) {
|
||||
p.report.Warnings = append(p.report.Warnings, pdfgo.Diagnostic{Page: p.page + 1, Message: fmt.Sprintf("%v; link omitted", err)})
|
||||
continue
|
||||
}
|
||||
return err
|
||||
}
|
||||
targetPage := p.pages[destination.Page]
|
||||
|
||||
Reference in new issue
Block a user