Skip to content

Commit

Permalink
This fixes #1888, read internal media files with absolute path
Browse files Browse the repository at this point in the history
  • Loading branch information
xuri committed May 3, 2024
1 parent 781c384 commit edd6a5d
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions picture.go
Original file line number Diff line number Diff line change
Expand Up @@ -598,15 +598,17 @@ 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)
}
}
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)
Expand Down Expand Up @@ -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)
}
Expand Down

0 comments on commit edd6a5d

Please sign in to comment.