mirror of
https://github.com/fumiama/go-docx.git
synced 2026-06-04 23:30:25 +08:00
优化 pic String
This commit is contained in:
120
structdrawing.go
120
structdrawing.go
@@ -21,6 +21,8 @@
|
||||
package docx
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"encoding/xml"
|
||||
"io"
|
||||
"strconv"
|
||||
@@ -215,6 +217,64 @@ func (r *WPInline) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err err
|
||||
return nil
|
||||
}
|
||||
|
||||
// String ...
|
||||
func (r *WPInline) String() string {
|
||||
sb := strings.Builder{}
|
||||
if r.Graphic.GraphicData.Pic != nil {
|
||||
sb.WriteString("
|
||||
if r.Graphic.GraphicData.Pic.BlipFill != nil {
|
||||
tgt, err := r.file.ReferTarget(r.Graphic.GraphicData.Pic.BlipFill.Blip.Embed)
|
||||
if err != nil {
|
||||
sb.WriteString(err.Error())
|
||||
} else {
|
||||
h := md5.Sum(r.file.Media(tgt[6:]).Data)
|
||||
sb.WriteString(hex.EncodeToString(h[:]))
|
||||
}
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
return sb.String()
|
||||
}
|
||||
if r.Graphic.GraphicData.Shape != nil {
|
||||
sb.WriteString("
|
||||
if r.Graphic.GraphicData.Shape.SpPr != nil {
|
||||
sb.WriteString(r.Graphic.GraphicData.Shape.SpPr.PrstGeom.Prst)
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
return sb.String()
|
||||
}
|
||||
if r.Graphic.GraphicData.Canvas != nil {
|
||||
sb.WriteString("![inlncv ")
|
||||
if r.DocPr != nil {
|
||||
sb.WriteString(r.DocPr.Name)
|
||||
} else {
|
||||
sb.WriteString("nil")
|
||||
}
|
||||
sb.WriteString("]()")
|
||||
return sb.String()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// WPExtent represents the extent of a drawing in a Word document.
|
||||
//
|
||||
// CX CY 's unit is English Metric Units, which is 1/914400 inch
|
||||
@@ -1230,6 +1290,66 @@ func (r *WPAnchor) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err err
|
||||
return nil
|
||||
}
|
||||
|
||||
// String ...
|
||||
func (r *WPAnchor) String() string {
|
||||
sb := strings.Builder{}
|
||||
if r.Graphic != nil && r.Graphic.GraphicData != nil {
|
||||
if r.Graphic.GraphicData.Pic != nil {
|
||||
sb.WriteString("
|
||||
if r.Graphic.GraphicData.Pic.BlipFill != nil {
|
||||
tgt, err := r.file.ReferTarget(r.Graphic.GraphicData.Pic.BlipFill.Blip.Embed)
|
||||
if err != nil {
|
||||
sb.WriteString(err.Error())
|
||||
} else {
|
||||
h := md5.Sum(r.file.Media(tgt[6:]).Data)
|
||||
sb.WriteString(hex.EncodeToString(h[:]))
|
||||
}
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
return sb.String()
|
||||
}
|
||||
if r.Graphic.GraphicData.Shape != nil {
|
||||
sb.WriteString("
|
||||
if r.Graphic.GraphicData.Shape.SpPr != nil {
|
||||
sb.WriteString(r.Graphic.GraphicData.Shape.SpPr.PrstGeom.Prst)
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
return sb.String()
|
||||
}
|
||||
if r.Graphic.GraphicData.Canvas != nil {
|
||||
sb.WriteString("![anchcv ")
|
||||
if r.DocPr != nil {
|
||||
sb.WriteString(r.DocPr.Name)
|
||||
} else {
|
||||
sb.WriteString("nil")
|
||||
}
|
||||
sb.WriteString("]()")
|
||||
return sb.String()
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// WPSimplePos represents the position of an object in a Word document.
|
||||
type WPSimplePos struct {
|
||||
XMLName xml.Name `xml:"wp:simplePos,omitempty"`
|
||||
|
||||
114
structpara.go
114
structpara.go
@@ -21,8 +21,6 @@
|
||||
package docx
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"encoding/xml"
|
||||
"io"
|
||||
"strconv"
|
||||
@@ -202,113 +200,13 @@ func (p *Paragraph) String() string {
|
||||
case *BarterRabbet:
|
||||
sb.WriteByte('\n')
|
||||
case *Drawing:
|
||||
if x.Inline != nil && x.Inline.Graphic != nil && x.Inline.Graphic.GraphicData != nil {
|
||||
if x.Inline.Graphic.GraphicData.Pic != nil {
|
||||
sb.WriteString("
|
||||
if x.Inline.Graphic.GraphicData.Pic.BlipFill != nil {
|
||||
tgt, err := p.file.ReferTarget(x.Inline.Graphic.GraphicData.Pic.BlipFill.Blip.Embed)
|
||||
if err != nil {
|
||||
sb.WriteString(err.Error())
|
||||
} else {
|
||||
h := md5.Sum(p.file.Media(tgt[6:]).Data)
|
||||
sb.WriteString(hex.EncodeToString(h[:]))
|
||||
}
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
continue
|
||||
}
|
||||
if x.Inline.Graphic.GraphicData.Shape != nil {
|
||||
sb.WriteString("
|
||||
if x.Inline.Graphic.GraphicData.Shape.SpPr != nil {
|
||||
sb.WriteString(x.Inline.Graphic.GraphicData.Shape.SpPr.PrstGeom.Prst)
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
continue
|
||||
}
|
||||
if x.Inline.Graphic.GraphicData.Canvas != nil {
|
||||
sb.WriteString("![inlncv ")
|
||||
if x.Inline.DocPr != nil {
|
||||
sb.WriteString(x.Inline.DocPr.Name)
|
||||
} else {
|
||||
sb.WriteString("nil")
|
||||
}
|
||||
sb.WriteString("]()")
|
||||
continue
|
||||
}
|
||||
if x.Inline != nil {
|
||||
sb.WriteString(x.Inline.String())
|
||||
continue
|
||||
}
|
||||
if x.Anchor != nil && x.Anchor.Graphic != nil && x.Anchor.Graphic.GraphicData != nil {
|
||||
if x.Anchor.Graphic.GraphicData.Pic != nil {
|
||||
sb.WriteString("
|
||||
if x.Anchor.Graphic.GraphicData.Pic.BlipFill != nil {
|
||||
tgt, err := p.file.ReferTarget(x.Anchor.Graphic.GraphicData.Pic.BlipFill.Blip.Embed)
|
||||
if err != nil {
|
||||
sb.WriteString(err.Error())
|
||||
} else {
|
||||
h := md5.Sum(p.file.Media(tgt[6:]).Data)
|
||||
sb.WriteString(hex.EncodeToString(h[:]))
|
||||
}
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
continue
|
||||
}
|
||||
if x.Anchor.Graphic.GraphicData.Shape != nil {
|
||||
sb.WriteString("
|
||||
if x.Anchor.Graphic.GraphicData.Shape.SpPr != nil {
|
||||
sb.WriteString(x.Anchor.Graphic.GraphicData.Shape.SpPr.PrstGeom.Prst)
|
||||
}
|
||||
sb.WriteByte(')')
|
||||
continue
|
||||
}
|
||||
if x.Anchor.Graphic.GraphicData.Canvas != nil {
|
||||
sb.WriteString("![anchcv ")
|
||||
if x.Anchor.DocPr != nil {
|
||||
sb.WriteString(x.Anchor.DocPr.Name)
|
||||
} else {
|
||||
sb.WriteString("nil")
|
||||
}
|
||||
sb.WriteString("]()")
|
||||
continue
|
||||
}
|
||||
if x.Anchor != nil {
|
||||
sb.WriteString(x.Anchor.String())
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user