mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 17:27:08 +08:00
1 parent
f6d0600be2
commit
84a67d17df
5 files changed
+11
-5
No files matched your search
@@ -10,7 +10,7 @@ require (
|
|||||||
github.com/tdewolff/canvas v0.0.0-20260923214215-09804640d00c
|
github.com/tdewolff/canvas v0.0.0-20260923214215-09804640d00c
|
||||||
github.com/tdewolff/font v0.0.0-20260913163313-54f98bb59ee6
|
github.com/tdewolff/font v0.0.0-20260913163313-54f98bb59ee6
|
||||||
github.com/xiaoqidun/jbig2 v1.1.1
|
github.com/xiaoqidun/jbig2 v1.1.1
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261003152411-fd6d20ac0470
|
github.com/xiaoqidun/pdfgo v0.0.0-20261003171053-bd8834324b6d
|
||||||
golang.org/x/crypto v0.57.0
|
golang.org/x/crypto v0.57.0
|
||||||
golang.org/x/image v0.46.0
|
golang.org/x/image v0.46.0
|
||||||
golang.org/x/text v0.42.0
|
golang.org/x/text v0.42.0
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk=
|
|||||||
github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
|
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 h1:SjliS9ZO0e9HX5oYUfBuXrfFsXhWricrSz+XY4zORDI=
|
||||||
github.com/xiaoqidun/jbig2 v1.1.1/go.mod h1:8QonVWtENmh2kc6l+leqeGl7psb79DWlHDkCpdChjfQ=
|
github.com/xiaoqidun/jbig2 v1.1.1/go.mod h1:8QonVWtENmh2kc6l+leqeGl7psb79DWlHDkCpdChjfQ=
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261003152411-fd6d20ac0470 h1:jH4WLMpcFUYwpu9TzYYgqYiv1NTEMBsEzaO2qpiEc6w=
|
github.com/xiaoqidun/pdfgo v0.0.0-20261003171053-bd8834324b6d h1:8JS9LgB+i9n9/g997JaWObw4aVDPGLrRQASHdWSusGE=
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261003152411-fd6d20ac0470/go.mod h1:4Pf0JO0BEf1uzRY+uZjlMjN/OPn3PYa0YMi6cqPPTLQ=
|
github.com/xiaoqidun/pdfgo v0.0.0-20261003171053-bd8834324b6d/go.mod h1:4Pf0JO0BEf1uzRY+uZjlMjN/OPn3PYa0YMi6cqPPTLQ=
|
||||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
github.com/yuin/goldmark v1.8.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA=
|
github.com/yuin/goldmark v1.8.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA=
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ var ErrPDFPassword = pdfgo.ErrPassword
|
|||||||
// OnProgress按open、pages、convert及write.*阶段报告进度,total为0表示总量未知
|
// OnProgress按open、pages、convert及write.*阶段报告进度,total为0表示总量未知
|
||||||
// ResolveFile读取PDF引用的外部媒体、附件和页面,默认不访问网络或本地路径
|
// ResolveFile读取PDF引用的外部媒体、附件和页面,默认不访问网络或本地路径
|
||||||
// ResolveReference可提供已解密的引用页面,目标阅读器由调用方维护
|
// ResolveReference可提供已解密的引用页面,目标阅读器由调用方维护
|
||||||
|
// Halftones提供只读设备命名网屏,所属阅读器由调用方维护,连续色调输出不网屏化
|
||||||
type PDFImportOptions struct {
|
type PDFImportOptions struct {
|
||||||
Password []byte
|
Password []byte
|
||||||
PasswordUTF8 bool
|
PasswordUTF8 bool
|
||||||
@@ -48,6 +49,7 @@ type PDFImportOptions struct {
|
|||||||
RasterDPI float64
|
RasterDPI float64
|
||||||
ResolveFile pdfgo.FileResolver
|
ResolveFile pdfgo.FileResolver
|
||||||
ResolveReference pdfgo.ReferenceResolver
|
ResolveReference pdfgo.ReferenceResolver
|
||||||
|
Halftones map[string]*pdfgo.Halftone
|
||||||
}
|
}
|
||||||
|
|
||||||
// PDFImportReport 汇总转换页数、对象数、链接数和转换警告
|
// PDFImportReport 汇总转换页数、对象数、链接数和转换警告
|
||||||
@@ -98,6 +100,7 @@ type pdfImporter struct {
|
|||||||
referenceStreams map[*pdfgo.Stream]*pdfgo.Reader
|
referenceStreams map[*pdfgo.Stream]*pdfgo.Reader
|
||||||
referencePages map[pdfReferencePageKey]*pdfgo.Page
|
referencePages map[pdfReferencePageKey]*pdfgo.Page
|
||||||
halftoneWarnings map[*pdfgo.Halftone]bool
|
halftoneWarnings map[*pdfgo.Halftone]bool
|
||||||
|
halftones map[string]*pdfgo.Halftone
|
||||||
transferBackdrop bool
|
transferBackdrop bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,6 +147,7 @@ func ImportPDF(ctx context.Context, source io.ReaderAt, size int64, options PDFI
|
|||||||
importer.pageIndexes = make(map[pdfgo.Reference]int)
|
importer.pageIndexes = make(map[pdfgo.Reference]int)
|
||||||
importer.resolveFile = options.ResolveFile
|
importer.resolveFile = options.ResolveFile
|
||||||
importer.resolveReference = options.ResolveReference
|
importer.resolveReference = options.ResolveReference
|
||||||
|
importer.halftones = options.Halftones
|
||||||
importer.referenceReaders = make(map[[32]byte]*pdfgo.Reader)
|
importer.referenceReaders = make(map[[32]byte]*pdfgo.Reader)
|
||||||
importer.referenceStreams = make(map[*pdfgo.Stream]*pdfgo.Reader)
|
importer.referenceStreams = make(map[*pdfgo.Stream]*pdfgo.Reader)
|
||||||
importer.referencePages = make(map[pdfReferencePageKey]*pdfgo.Page)
|
importer.referencePages = make(map[pdfReferencePageKey]*pdfgo.Page)
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ func (p *pdfImporter) collectCompositeNodes(walk func(pdfgo.Visitor) error) ([]p
|
|||||||
var collect func(func(pdfgo.Visitor) error) ([]pdfCompositeNode, error)
|
var collect func(func(pdfgo.Visitor) error) ([]pdfCompositeNode, error)
|
||||||
collect = func(walk func(pdfgo.Visitor) error) ([]pdfCompositeNode, error) {
|
collect = func(walk func(pdfgo.Visitor) error) ([]pdfCompositeNode, error) {
|
||||||
var nodes []pdfCompositeNode
|
var nodes []pdfCompositeNode
|
||||||
v := pdfgo.Visitor{Warning: p.warning, Reference: p.referencePage}
|
v := pdfgo.Visitor{Warning: p.warning, Reference: p.referencePage, Halftones: p.halftones}
|
||||||
v.Path = func(mark pdfgo.PathMark) error {
|
v.Path = func(mark pdfgo.PathMark) error {
|
||||||
if err := p.halftone(mark.Style); err != nil {
|
if err := p.halftone(mark.Style); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
+3
-1
@@ -95,6 +95,7 @@ func pdfOpaqueVisitor(visitor pdfgo.Visitor) pdfgo.Visitor {
|
|||||||
v := pdfgo.Visitor{
|
v := pdfgo.Visitor{
|
||||||
Reference: visitor.Reference,
|
Reference: visitor.Reference,
|
||||||
OptionalContent: visitor.OptionalContent,
|
OptionalContent: visitor.OptionalContent,
|
||||||
|
Halftones: visitor.Halftones,
|
||||||
Path: func(m pdfgo.PathMark) error { return check(m.Style, m.Fill, m.Stroke) },
|
Path: func(m pdfgo.PathMark) error { return check(m.Style, m.Fill, m.Stroke) },
|
||||||
Text: func(m pdfgo.TextMark) error {
|
Text: func(m pdfgo.TextMark) error {
|
||||||
return check(m.Style, m.Mode%4 == 0 || m.Mode%4 == 2, m.Mode%4 == 1 || m.Mode%4 == 2)
|
return check(m.Style, m.Mode%4 == 0 || m.Mode%4 == 2, m.Mode%4 == 1 || m.Mode%4 == 2)
|
||||||
@@ -138,6 +139,7 @@ func (p *pdfImporter) groupPaths(mark pdfgo.GroupMark, walk func(pdfgo.Visitor)
|
|||||||
collect := pdfgo.Visitor{
|
collect := pdfgo.Visitor{
|
||||||
Reference: visitor.Reference,
|
Reference: visitor.Reference,
|
||||||
OptionalContent: visitor.OptionalContent,
|
OptionalContent: visitor.OptionalContent,
|
||||||
|
Halftones: visitor.Halftones,
|
||||||
Warning: visitor.Warning,
|
Warning: visitor.Warning,
|
||||||
Text: func(pdfgo.TextMark) error { return errPDFGroupRaster },
|
Text: func(pdfgo.TextMark) error { return errPDFGroupRaster },
|
||||||
Image: func(pdfgo.ImageMark) error { return errPDFGroupRaster },
|
Image: func(pdfgo.ImageMark) error { return errPDFGroupRaster },
|
||||||
@@ -301,7 +303,7 @@ func (p *pdfImporter) rasterGroup(mark pdfgo.GroupMark, walk func(pdfgo.Visitor)
|
|||||||
// visitor 绑定当前导入器的图元与透明组访问函数
|
// visitor 绑定当前导入器的图元与透明组访问函数
|
||||||
// 返回: pdfgo.Visitor 页面访问器
|
// 返回: pdfgo.Visitor 页面访问器
|
||||||
func (p *pdfImporter) visitor() pdfgo.Visitor {
|
func (p *pdfImporter) visitor() pdfgo.Visitor {
|
||||||
v := pdfgo.Visitor{Path: p.path, Text: p.text, Image: p.image, Warning: p.warning, Reference: p.referencePage}
|
v := pdfgo.Visitor{Path: p.path, Text: p.text, Image: p.image, Warning: p.warning, Reference: p.referencePage, Halftones: p.halftones}
|
||||||
v.Group = func(mark pdfgo.GroupMark, walk func(pdfgo.Visitor) error) error { return p.group(mark, walk, v) }
|
v.Group = func(mark pdfgo.GroupMark, walk func(pdfgo.Visitor) error) error { return p.group(mark, walk, v) }
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user