diff --git a/picture.go b/picture.go index 27d6b7fe8c..49ad168bae 100644 --- a/picture.go +++ b/picture.go @@ -598,7 +598,8 @@ func (f *File) getPicture(row, col int, drawingXML, drawingRelationships string) cond2 := func(from *decodeFrom) bool { return from.Col == col && from.Row == row } cb := func(a *xdrCellAnchor, r *xlsxRelationship) { pic := Picture{Extension: filepath.Ext(r.Target), Format: &GraphicOptions{}, InsertType: PictureInsertTypePlaceOverCells} - if buffer, _ := f.Pkg.Load(strings.ReplaceAll(r.Target, "..", "xl")); buffer != nil { + target, _ := filepath.Abs("/xl/drawings/" + r.Target) + if buffer, _ := f.Pkg.Load(strings.TrimPrefix(target, "/")); buffer != nil { pic.File = buffer.([]byte) pic.Format.AltText = a.Pic.NvPicPr.CNvPr.Descr pics = append(pics, pic) @@ -606,7 +607,8 @@ func (f *File) getPicture(row, col int, drawingXML, drawingRelationships string) } cb2 := func(a *decodeCellAnchor, r *xlsxRelationship) { pic := Picture{Extension: filepath.Ext(r.Target), Format: &GraphicOptions{}, InsertType: PictureInsertTypePlaceOverCells} - if buffer, _ := f.Pkg.Load(strings.ReplaceAll(r.Target, "..", "xl")); buffer != nil { + target, _ := filepath.Abs("/xl/drawings/" + r.Target) + if buffer, _ := f.Pkg.Load(strings.TrimPrefix(target, "/")); buffer != nil { pic.File = buffer.([]byte) pic.Format.AltText = a.Pic.NvPicPr.CNvPr.Descr pics = append(pics, pic) @@ -756,14 +758,16 @@ func (f *File) getPictureCells(drawingXML, drawingRelationships string) ([]strin cond := func(from *xlsxFrom) bool { return true } cond2 := func(from *decodeFrom) bool { return true } cb := func(a *xdrCellAnchor, r *xlsxRelationship) { - if _, ok := f.Pkg.Load(strings.ReplaceAll(r.Target, "..", "xl")); ok { + target, _ := filepath.Abs("/xl/drawings/" + r.Target) + if _, ok := f.Pkg.Load(strings.TrimPrefix(target, "/")); ok { if cell, err := CoordinatesToCellName(a.From.Col+1, a.From.Row+1); err == nil && inStrSlice(cells, cell, true) == -1 { cells = append(cells, cell) } } } cb2 := func(a *decodeCellAnchor, r *xlsxRelationship) { - if _, ok := f.Pkg.Load(strings.ReplaceAll(r.Target, "..", "xl")); ok { + target, _ := filepath.Abs("/xl/drawings/" + r.Target) + if _, ok := f.Pkg.Load(strings.TrimPrefix(target, "/")); ok { if cell, err := CoordinatesToCellName(a.From.Col+1, a.From.Row+1); err == nil && inStrSlice(cells, cell, true) == -1 { cells = append(cells, cell) }