/** 点击时先打开窗口,再授权读取指定快照;打开或取消打印不代表 PDF 保存成功。 */
|
export async function openSavedReportPrint<T>(load: () => Promise<T>, html: (record: T) => string) {
|
const popup = window.open('', '_blank', 'width=1200,height=820')
|
if (!popup) throw new Error('打印窗口打开失败,请允许浏览器弹出窗口后重试')
|
try {
|
popup.document.body.textContent = '正在加载已保存版本'
|
const record = await load()
|
if (popup.closed) throw new Error('打印窗口已关闭,请重试')
|
popup.document.open()
|
popup.document.write(html(record))
|
popup.document.close()
|
await popup.document.fonts.ready
|
if (popup.closed) throw new Error('打印窗口已关闭,请重试')
|
popup.focus()
|
popup.print()
|
} catch (error) {
|
popup.close()
|
throw error
|
}
|
}
|