You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APEX Office Print单PDF被错误打包为ZIP的问题求助

解决APEX Office Print单PDF被以ZIP格式下载的问题

背景

使用UC APEX Office Print - DA插件生成客户对账单,通过查询获取客户、发票及发票项数据,配合.docx模板生成PDF文档。当查询返回多个客户时,插件自动生成包含对应PDF的ZIP包供下载,此为预期行为;但仅返回单个客户时,生成的PDF内容正常,却被封装成ZIP文件下载,重命名为.pdf后可正常打开。

问题根源

当前初始化代码中强制设置了输出压缩模式为ZIP:

aop_api_pkg.g_output_compression := aop_api_pkg.c_zip_zip;

该配置会让插件无论生成单个还是多个文件,都以ZIP格式打包输出,导致单PDF被不必要地封装成ZIP。

解决方案

根据查询返回的客户数量动态切换压缩模式:

DECLARE
    v_customer_count NUMBER;
BEGIN
    -- 替换为你的实际查询逻辑,统计未结发票的客户数量
    SELECT COUNT(DISTINCT na.customer_id) 
    INTO v_customer_count 
    FROM your_invoice_table na
    WHERE na.invoice_status = 'UNPAID'; -- 你的未结发票筛选条件

    -- 根据客户数量设置压缩模式
    IF v_customer_count > 1 THEN
        aop_api_pkg.g_output_compression := aop_api_pkg.c_zip_zip; -- 多文件时打包为ZIP
    ELSE
        aop_api_pkg.g_output_compression := aop_api_pkg.c_zip_none; -- 单文件时直接输出PDF
    END IF;

    aop_api_pkg.g_output_filename := '&P21_FILENAME.';
    aop_api_pkg.g_output_remove_last_page := true;
END;

额外注意:确保&P21_FILENAME.在单客户场景下后缀为.pdf,避免文件名格式混淆。

环境参数

  • Oracle OCI托管
  • Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.23.0.1.0
  • APEX版本23.2.3
  • APEX Office Print版本24.2

内容的提问来源于stack exchange,提问作者AV8R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:05:07