Fix:修复导出pdf时异步控制丢失的问题

This commit is contained in:
wanglin2 2023-11-20 17:49:05 +08:00
parent c716ec7294
commit 3d7f0fcbe7
2 changed files with 84 additions and 72 deletions

View File

@ -228,7 +228,7 @@ class Export {
if (width <= a4Size.width && height && a4Size.height) return false if (width <= a4Size.width && height && a4Size.height) return false
return width / height > 1 return width / height > 1
}) })
this.mindMap.doExportPDF.pdf(name, img, useMultiPageExport) await this.mindMap.doExportPDF.pdf(name, img, useMultiPageExport)
} }
// 导出为xmind // 导出为xmind

View File

@ -9,16 +9,17 @@ class ExportPDF {
} }
// 导出为pdf // 导出为pdf
pdf(name, img, useMultiPageExport = false) { async pdf(name, img, useMultiPageExport = false) {
if (useMultiPageExport) { if (useMultiPageExport) {
this.multiPageExport(name, img) await this.multiPageExport(name, img)
} else { } else {
this.onePageExport(name, img) await this.onePageExport(name, img)
} }
} }
// 单页导出 // 单页导出
onePageExport(name, img) { onePageExport(name, img) {
return new Promise((resolve, reject) => {
let pdf = new JsPDF('', 'pt', 'a4') let pdf = new JsPDF('', 'pt', 'a4')
let a4Ratio = a4Size.width / a4Size.height let a4Ratio = a4Size.width / a4Size.height
let image = new Image() let image = new Image()
@ -49,12 +50,18 @@ class ExportPDF {
h h
) )
pdf.save(name) pdf.save(name)
resolve()
}
image.onerror = e => {
reject(e)
} }
image.src = img image.src = img
})
} }
// 多页导出 // 多页导出
multiPageExport(name, img) { multiPageExport(name, img) {
return new Promise((resolve, reject) => {
let image = new Image() let image = new Image()
image.onload = () => { image.onload = () => {
let imageWidth = image.width let imageWidth = image.width
@ -93,8 +100,13 @@ class ExportPDF {
} }
} }
pdf.save(name) pdf.save(name)
resolve()
}
image.onerror = (e) => {
reject(e)
} }
image.src = img image.src = img
})
} }
} }