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
相关产品推荐
相关产品推荐

