mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 16:44:23 +08:00
1 parent
95dea33a95
commit
056d7c3979
6 files changed
+22
-9
No files matched your search
@@ -9,7 +9,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-20260928085418-08275755d188
|
github.com/xiaoqidun/pdfgo v0.0.0-20260928094736-cdc5f892445c
|
||||||
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-20260928085418-08275755d188 h1:XMOU0kQii0LW3BcFxPQLA7tgVfDmZ6zQcpZuU+eP+fk=
|
github.com/xiaoqidun/pdfgo v0.0.0-20260928094736-cdc5f892445c h1:6idDj210CT1eyGK/fHDw0hD90GSrLqeRV7ECaP9dfyI=
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20260928085418-08275755d188/go.mod h1:4Pf0JO0BEf1uzRY+uZjlMjN/OPn3PYa0YMi6cqPPTLQ=
|
github.com/xiaoqidun/pdfgo v0.0.0-20260928094736-cdc5f892445c/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=
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ type pdfImporter struct {
|
|||||||
objects []GraphicObject
|
objects []GraphicObject
|
||||||
pages map[pdfgo.Reference]*pdfgo.Page
|
pages map[pdfgo.Reference]*pdfgo.Page
|
||||||
pageIDs map[pdfgo.Reference]string
|
pageIDs map[pdfgo.Reference]string
|
||||||
imageIDs map[*pdfgo.Stream]string
|
imageIDs map[pdfImageKey]string
|
||||||
maskClips map[*pdfgo.SoftMask]pdfgo.Path
|
maskClips map[*pdfgo.SoftMask]pdfgo.Path
|
||||||
pageBox pdfgo.Rectangle
|
pageBox pdfgo.Rectangle
|
||||||
pageWidth float64
|
pageWidth float64
|
||||||
|
|||||||
@@ -390,7 +390,10 @@ func (c *pdfCompositor) mask(mask *pdfgo.SoftMask, inherited *pdfgo.ColorSpace)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result[i] = mask.Transfer(v)
|
result[i], err = mask.Transfer(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
c.masks[mask] = result
|
c.masks[mask] = result
|
||||||
return result, nil
|
return result, nil
|
||||||
|
|||||||
+4
-1
@@ -522,7 +522,10 @@ func (p *pdfImporter) maskClip(mask *pdfgo.SoftMask) (pdfgo.Path, error) {
|
|||||||
return pdfgo.Path{}, err
|
return pdfgo.Path{}, err
|
||||||
}
|
}
|
||||||
opacity := func(v float64) (bool, error) {
|
opacity := func(v float64) (bool, error) {
|
||||||
v = mask.Transfer(v)
|
v, err := mask.Transfer(v)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
if v != 0 && v != 1 {
|
if v != 0 && v != 1 {
|
||||||
return false, &pdfgo.UnsupportedError{Feature: "nonbinary luminosity mask"}
|
return false, &pdfgo.UnsupportedError{Feature: "nonbinary luminosity mask"}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -32,6 +32,12 @@ import (
|
|||||||
"github.com/xiaoqidun/pdfgo"
|
"github.com/xiaoqidun/pdfgo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// pdfImageKey 区分同一图像流在不同渲染意图下的资源
|
||||||
|
type pdfImageKey struct {
|
||||||
|
stream *pdfgo.Stream
|
||||||
|
intent pdfgo.Name
|
||||||
|
}
|
||||||
|
|
||||||
// image 转换图像样本,不将整页或其他对象栅格化
|
// image 转换图像样本,不将整页或其他对象栅格化
|
||||||
// 入参: mark PDF图像绘制信息
|
// 入参: mark PDF图像绘制信息
|
||||||
// 返回: error 错误信息
|
// 返回: error 错误信息
|
||||||
@@ -59,7 +65,8 @@ func (p *pdfImporter) image(mark pdfgo.ImageMark) error {
|
|||||||
return &pdfgo.UnsupportedError{Feature: "image color separation overprint"}
|
return &pdfgo.UnsupportedError{Feature: "image color separation overprint"}
|
||||||
}
|
}
|
||||||
source := mark.Image
|
source := mark.Image
|
||||||
id := p.imageIDs[source.Stream]
|
key := pdfImageKey{stream: source.Stream, intent: source.Intent}
|
||||||
|
id := p.imageIDs[key]
|
||||||
if source.ImageMask {
|
if source.ImageMask {
|
||||||
id = ""
|
id = ""
|
||||||
}
|
}
|
||||||
@@ -125,9 +132,9 @@ func (p *pdfImporter) image(mark pdfgo.ImageMark) error {
|
|||||||
}
|
}
|
||||||
if !source.ImageMask {
|
if !source.ImageMask {
|
||||||
if p.imageIDs == nil {
|
if p.imageIDs == nil {
|
||||||
p.imageIDs = map[*pdfgo.Stream]string{}
|
p.imageIDs = map[pdfImageKey]string{}
|
||||||
}
|
}
|
||||||
p.imageIDs[source.Stream] = id
|
p.imageIDs[key] = id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return p.appendImage(mark, id)
|
return p.appendImage(mark, id)
|
||||||
|
|||||||
Reference in new issue
Block a user