专项接入

后端 PDF 服务接入

适用场景

适用于由后端浏览器打开报表页面并生成 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 中承诺。

接入步骤

  1. 确认 PDF 服务能访问目标报表 URL、静态资源和数据接口。
  2. 用 URL / URLSearchParams 编码 optionsPDF 与 webURL。
  3. 从安全的服务端会话取得身份信息;避免把长期凭据暴露在日志或前端代码。
  4. 先用测试报表生成,再检查纸张尺寸、分页、字体和图片。

成功验证

服务返回可打开的 PDF,纸张尺寸与报表配置一致,分页没有截断;日志中只出现占位或短期会话信息,不包含固定用户目录 ID。

常见问题

  • 页面能在本机打开但服务生成失败:检查 PDF 服务所在网络,而不是本机浏览器网络。
  • 空白 PDF:确认 webURL 完成认证并等待报表渲染。
  • 参数乱码:不要嵌套手工编码,交给 URLSearchParams。

相关 API

浏览器内导出见 exportExcel 与 exportPdf。