feat(转换能力): 修复透明合成与遮罩识别
build.yaml / build (push) Successful in 45s

This commit is contained in:
xiaoqidun committed 2026-10-08 15:53:50 +08:00
1 parent ee873443e0
commit 28175723e6
5 files changed
+28 -19

No files matched your search

+6 -2
View File
@@ -228,7 +228,7 @@ func (p *pdfImporter) compositePattern(paint pdfgo.Paint) (*pdfCompositePattern,
// directCompositeNode 检查图元、透明组和图案单元能否独立保留,逐层核对背景混合
// 入参: node 图元, space 混合空间
// 返回: bool 是否可直接转换, error 图案解析错误
// 返回: bool 是否可直接转换, error 图案或遮罩解析错误
func (p *pdfImporter) directCompositeNode(node pdfCompositeNode, space *pdfgo.ColorSpace) (bool, error) {
if node.group == nil && space.Device() {
style, fill, stroke := node.style()
@@ -290,7 +290,11 @@ func (p *pdfImporter) directCompositeNode(node pdfCompositeNode, space *pdfgo.Co
if group := node.group; group != nil && !group.Knockout && group.Alpha == 1 && group.SoftMask == nil && pdfNormalBlend(group.BlendMode) && (group.ColorSpace == nil || group.ColorSpace.SRGBEquivalent()) {
directGroup = true
}
if !node.opaque(space) && !(space.SRGBEquivalent() && (directGroup || node.direct())) {
opaque, err := node.opaque(space)
if err != nil {
return false, err
}
if !opaque && !(space.SRGBEquivalent() && (directGroup || node.direct())) {
if node.textObject != nil && space.SRGBEquivalent() {
for _, child := range node.children {
if direct, err := p.directCompositeNode(child, space); err != nil || !direct {