feat(转换能力): 增强PDF字体与裁剪转换
build.yaml / build (push) Successful in 41s

This commit is contained in:
xiaoqidun committed 2026-09-26 08:59:54 +08:00
1 parent c64bc9d594
commit 35631cdf98
13 files changed
+1188 -76

No files matched your search

+19 -1
View File
@@ -302,23 +302,41 @@ func collectPaintReferences(paint *FillColor, used map[string]bool) {
// collectObjectReferences 收集对象和嵌套绘制内容引用的资源
// 入参: object 图形对象, used 引用集合
func collectObjectReferences(object GraphicObject, used map[string]bool) {
var clips *Clips
switch object.Type {
case "TextObject":
case "TextObject", "Text":
used[object.TextObject.Font], used[object.TextObject.DrawParam] = true, true
collectPaintReferences(object.TextObject.FillColor, used)
collectPaintReferences((*FillColor)(object.TextObject.StrokeColor), used)
clips = object.TextObject.Clips
case "PathObject", "Path":
used[object.PathObject.DrawParam] = true
collectPaintReferences(object.PathObject.FillColor, used)
collectPaintReferences((*FillColor)(object.PathObject.StrokeColor), used)
clips = object.PathObject.Clips
case "ImageObject":
used[object.ImageObject.ResourceID], used[object.ImageObject.ImageMask] = true, true
if object.ImageObject.Border != nil {
collectPaintReferences((*FillColor)(object.ImageObject.Border.BorderColor), used)
}
clips = object.ImageObject.Clips
case "CompositeObject", "CompositeGraphicUnit":
collectCompositeReferences(object.CompositeGraphicUnit, used)
}
if clips == nil {
return
}
for _, clip := range clips.Clip {
for _, area := range clip.Area {
used[area.DrawParam] = true
for _, path := range area.Path {
collectObjectReferences(GraphicObject{Type: "Path", PathObject: path}, used)
}
for _, text := range area.Text {
collectObjectReferences(GraphicObject{Type: "Text", TextObject: text}, used)
}
}
}
}
// editorColor 校验当前文档的纯色和渐变