wowjoy-print
v1.0.0
Published
report print utils
Downloads
3
Readme
华卓平台中心打印工具
安装
npm install -D @wowjoy/print
API
htmlPrint 打印html
语法
htmlPrint(ele: HTMLElement, isPreview?: boolean): promise
printPdf 打印 pdf 当 isPreview 为true 是 会用浏览器的打印 否则是静默打印
语法
printPdf(pdfurl: string, isPreview?: boolean = false)
getLodop 获取lodop 对象 获取后可自行调用lodop打印接口 文档参考lodop文档
silentPrint 配置模版的静默打印
async function printTemplateSilent (templateId: string, params?:Record<string, any>) => Promise
参数
templateId: [string] - 积木报表生成的模板id
params: [object] 拼接到url后面的参数
返回值
promise
setBaseUrl 设置打印模板的baseUrl 和 path 若不设置 会使用平台配置的参数管理里的值
语法
setBaseUrl(baseUrl: string, path?: string = '/jmreport/view/'): void
print 直接调出浏览器打印界面
语法
print(templateId: string, searchParams?: object): promise
参数
templateId: [string] 积木报表生成的模板id
searchParams?: [object] 拼接到url后面的参数
返回值
promise
print 使用注意事项
由于print 内部是使用 iframe 载入预览页面, 通过iframe.contentDocument 操作打印, 使用时请满足以下条件:
- 积木报表的二级域名 和 使用项目部署的二级域名必须相同
- 如果是嵌入到 qiankun 的子应用, 请将 qiankun 主应用的 document.domain 设置为二级域名
域名操作可以使用提供的工具函数 createDomainOperator
用法
import {print} from '@wowjoy/print'
print(templateId, {id: 1}).then(() => {
console.log('获取资源完毕, 开始打印...')
})
getUrl 返回打印页面的预览url 您可以使用 获取到的url 利用 iframe 自行嵌入到您需要的位置
语法
getUrl(templateId: string, searchParams?: object): string
参数
templateId: [string] 积木报表生成的模板id
searchParams?: [object] 拼接到url后面的参数
返回值
string eg: www.print.com/preview/{templateId}?{searchParams.key1=searchParams.value1}&{searchParams.key2=searchParams.value2}
用法
import {getUrl, Modal} from '@wowjoy/print'
const templateId = '123456'
const searchParams = {id: 1}
getUrl(templateId, searchParams).then((url) => {
console.log(getUrl) // www.print.com/preview/123456?id=1
})
printPreview弹窗预览 弹窗展示通过 geturl 获取到的 url 页面
语法
interface IPrintModalBaseParams {
onOk?: () => any,
onCancel?: () => any,
params?: {[key: string]: string},
width?: number | undefined,
height?: number | undefined,
cancelBtnText?: string | undefined,
printBtnText?: string | undefined,
title?: 'string',
}
interface IPrintModalWithTemplateParams extends IPrintModalBaseParams{
templateId: string,
}
interface IPrintModalWithUrlParams extends IPrintModalBaseParams {
url: string,
}
function printModal(params: IPrintModalWithTemplateParams): void;
function printModal(params: IPrintModalWithUrlParams): void
打印接口的实现是通过 iframe 获取到里面的打印按钮,触发 click 事件, 浏览器同源策略需要同源才能获取到 iframe 里的 dom 信息,所以 调用 print 的域名 和 打印模板配置的部署域名 需要在同一个二级域名下, 这个接口用于将 document.domain 从当前域名提升到二级域名
语法
createDomainOperator()
返回值
domainOperator: { upper: ()=> void, /** 将 document.domain 设置为二级域名 */
reset: () => void, /** 还原 document.domain */ }
用法
import {createDomainOperator} from '@wowjoy/print'
const domainOperator = createDomainOperator()
domainOperator.upper()
print('templateId', {id: 1})
domainOperator.reset()