mirror of
https://github.com/fumiama/go-docx.git
synced 2026-06-22 03:20:35 +08:00
优化 pic String
This commit is contained in:
120
structdrawing.go
120
structdrawing.go
@@ -21,6 +21,8 @@
|
|||||||
package docx
|
package docx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/hex"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"io"
|
"io"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -215,6 +217,64 @@ func (r *WPInline) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err err
|
|||||||
return nil
|
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.
|
// WPExtent represents the extent of a drawing in a Word document.
|
||||||
//
|
//
|
||||||
// CX CY 's unit is English Metric Units, which is 1/914400 inch
|
// 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
|
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.
|
// WPSimplePos represents the position of an object in a Word document.
|
||||||
type WPSimplePos struct {
|
type WPSimplePos struct {
|
||||||
XMLName xml.Name `xml:"wp:simplePos,omitempty"`
|
XMLName xml.Name `xml:"wp:simplePos,omitempty"`
|
||||||
|
|||||||
114
structpara.go
114
structpara.go
@@ -21,8 +21,6 @@
|
|||||||
package docx
|
package docx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
|
||||||
"encoding/hex"
|
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"io"
|
"io"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -202,113 +200,13 @@ func (p *Paragraph) String() string {
|
|||||||
case *BarterRabbet:
|
case *BarterRabbet:
|
||||||
sb.WriteByte('\n')
|
sb.WriteByte('\n')
|
||||||
case *Drawing:
|
case *Drawing:
|
||||||
if x.Inline != nil && x.Inline.Graphic != nil && x.Inline.Graphic.GraphicData != nil {
|
if x.Inline != nil {
|
||||||
if x.Inline.Graphic.GraphicData.Pic != nil {
|
sb.WriteString(x.Inline.String())
|
||||||
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.Anchor != nil && x.Anchor.Graphic != nil && x.Anchor.Graphic.GraphicData != nil {
|
if x.Anchor != nil {
|
||||||
if x.Anchor.Graphic.GraphicData.Pic != nil {
|
sb.WriteString(x.Anchor.String())
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user