mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
fix: resolve missing svg serialized content
dealing with the issue of incomplete rendering content when using 'position: absolute' to render SVG
This commit is contained in:
parent
6020386bbe
commit
8301a3bfe0
@ -8,16 +8,26 @@ export class SVGElementContainer extends ElementContainer {
|
||||
intrinsicHeight: number;
|
||||
|
||||
constructor(context: Context, img: SVGSVGElement) {
|
||||
super(context, img);
|
||||
const s = new XMLSerializer();
|
||||
const bounds = parseBounds(context, img);
|
||||
img.setAttribute('width', `${bounds.width}px`);
|
||||
img.setAttribute('height', `${bounds.height}px`);
|
||||
super(context, img)
|
||||
const s = new XMLSerializer()
|
||||
const bounds = parseBounds(context, img)
|
||||
let originPosition: string = img.style.position
|
||||
img.setAttribute('width', `${bounds.width}px`)
|
||||
img.setAttribute('height', `${bounds.height}px`)
|
||||
|
||||
this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;
|
||||
this.intrinsicWidth = img.width.baseVal.value;
|
||||
this.intrinsicHeight = img.height.baseVal.value;
|
||||
// fix: resolve missing svg serialized content
|
||||
// if svg's tag has absolute position, when converting through serializeToString, it will result in missing SVG content.
|
||||
// so, it is necessary to eliminate positioning before serialization.
|
||||
img.style.position = 'initial'
|
||||
|
||||
this.context.cache.addImage(this.svg);
|
||||
this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`
|
||||
|
||||
// reset position
|
||||
img.style.position = originPosition
|
||||
|
||||
this.intrinsicWidth = img.width.baseVal.value
|
||||
this.intrinsicHeight = img.height.baseVal.value
|
||||
|
||||
this.context.cache.addImage(this.svg)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user