适用场景
适用于由后端浏览器打开报表页面并生成 PDF 的部署。它与浏览器端 api.exportPdf 不同:前者是部署服务,后者是前端公开 API。
前置条件
部署管理员已提供 PDF 服务和可由该服务访问的报表页面。服务端必须能完成报表页面认证;不要把真实用户、角色或部门 ID 固化到 URL。
最小可运行示例
const webURL = new URL("https://your-bbp-host.example.com/bbp-server/");
webURL.search = new URLSearchParams({
clz: "ssdev.beereport.public.beeReportPdfConvert",
code: "sales-summary",
version: "1.0.0",
mode: "4",
tenantId: "YOUR_TENANT_ID",
uid: "YOUR_USER_ID",
roleId: "YOUR_ROLE_ID",
deptId: "YOUR_DEPARTMENT_ID",
}).toString();
const request = new URL("https://your-pdf-service.example.com/api/pdf/sync/preview");
request.searchParams.set("optionsPDF", JSON.stringify({ width: "210mm", height: "297mm" }));
request.searchParams.set("webURL", webURL.toString());
optionsPDF 至少应与报表页面尺寸一致。更多 PDF 引擎字段由实际部署服务解释,不在 OwlReport 公共 API 中承诺。
接入步骤
- 确认 PDF 服务能访问目标报表 URL、静态资源和数据接口。
- 用
URL/URLSearchParams编码optionsPDF与webURL。 - 从安全的服务端会话取得身份信息;避免把长期凭据暴露在日志或前端代码。
- 先用测试报表生成,再检查纸张尺寸、分页、字体和图片。
成功验证
服务返回可打开的 PDF,纸张尺寸与报表配置一致,分页没有截断;日志中只出现占位或短期会话信息,不包含固定用户目录 ID。
常见问题
- 页面能在本机打开但服务生成失败:检查 PDF 服务所在网络,而不是本机浏览器网络。
- 空白 PDF:确认
webURL完成认证并等待报表渲染。 - 参数乱码:不要嵌套手工编码,交给
URLSearchParams。
相关 API
浏览器内导出见 exportExcel 与 exportPdf。
