yeg
4 天以前 f4d7007b89cf565746af4623623a294b82666ff1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/** 点击时先打开窗口,再授权读取指定快照;打开或取消打印不代表 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
  }
}