当前位置: 首页 > news >正文

jeecg预览pdf、jeecg无法预览pdf、jeecg自带预览pdf

修复jeecg接口pdfPreviewIframe无法预览pdf问题

出现白屏的原因是:后端 pdfPreviewIframe 没有将传入的 url 参数传递给前端模板,且前端模板 pdfPreviewIframe.ftl 中硬编码了一个已失效的阿里云 OSS 地址,导致无法加载指定的文件。

1.修改pdfPreviewIframe.ftl

<#assign base=springMacroRequestContext.getContextUrl("")><html><head><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta http-equiv="Content-Type"content="text/html; charset=utf-8"><meta http-equiv="Cache-Control"content="no-store"/><meta http-equiv="Pragma"content="no-cache"/><meta http-equiv="Expires"content="0"/><title>PDF预览</title></head><body style="margin:0; padding:0; height:100%; overflow:hidden;"><script type="text/javascript">/** * PDF 预览中转页面 * 支持自动通过 url 参数加载 PDF.js 查看器 */(function(){varrawUrl="${url!""}";if(rawUrl){varfinalUrl=rawUrl;// 如果 url 不是以 http 开头,自动补全为系统定义的静态资源接口路径if(finalUrl.indexOf("http")!==0){// 如果是以 / 开头,说明是绝对路径但缺少域名if(finalUrl.indexOf("/")===0){finalUrl=window.location.protocol+"//"+window.location.host+finalUrl;}else{// 否则视为业务相对路径,补全为 /sys/common/static/ 接口地址varserverBase=window.location.protocol+"//"+window.location.host+"${base}";finalUrl=serverBase+"/sys/common/static/"+finalUrl;}}// 拼接 PDF.js 标准查看器地址varviewerPath="${base}/generic/web/viewer.html?file="+encodeURIComponent(finalUrl);// 重定向到查看器页面window.location.replace(viewerPath);}else{document.body.innerHTML="<div style='text-align:center; margin-top:100px; font-family: sans-serif;'>"+"<h3>未指定预览文件地址</h3>"+"<p style='color:#666;'>请通过 ?url=xxx 参数传入文件路径</p>"+"</div>";}})();</script></body></html>

2.pdfPreviewIframe接口

/** * @功能:pdf预览Iframe * @param modelAndView * @return */@RequestMapping("/pdf/pdfPreviewIframe")publicModelAndViewpdfPreviewIframe(ModelAndViewmodelAndView,@RequestParam(name="url",required=false)Stringurl){modelAndView.addObject("url",url);modelAndView.setViewName("pdfPreviewIframe");returnmodelAndView;}
http://www.jsqmd.com/news/612858/

相关文章:

  • 开源六轴机械臂:3D打印谐波减速器技术如何打破工业自动化成本壁垒
  • OpenClaw配置文件详解:千问3.5-9B模型参数优化指南
  • RMBG-2.0效果学术价值:支撑CVPR论文《Edge-Aware Matting Benchmark》
  • 2026IC搪瓷储罐厂家TOP5推荐防腐密封优选:化工厌氧发酵罐/化工拼装罐/化工搪瓷拼装罐/化工环氧拼装罐/带顶厌氧发酵罐/选择指南 - 优质品牌商家
  • 零基础掌握ADB驱动安装:Windows平台一站式解决方案
  • 联想拯救者Y7000P 2023 (Lenovo Legion Y7000P IRH8) 联想拯救者工具箱安装及电源计划配置说明
  • 静态住宅ISP代理:企业如何选择住宅代理IP?
  • 、SEATA分布式事务——XA模式杖
  • Arduino非阻塞GSM库:SIM800/SIM900多任务通信方案
  • 专家经验分享:Fluent多物理场耦合模块许可证管理核心要点
  • GLM-. 全面支持与 Gemini CLI 集成:HagiCode 的多模型进化之路纳
  • 突破网盘下载限制:本地安全处理的直链解析方案
  • 5大核心功能解析:如何用Kazumi打造你的专属番剧观影系统
  • OpenBMC + QEMU 仿真环境搭建
  • MacBook本地部署OpenClaw:对接Qwen3-14B镜像实现24/7资料收集
  • Kiro IDE + AIClient-2-API 实现Openclaw或者Claude code使用Claude Opus 4.6模型
  • 山东大学项目实训-大数据租房推荐智能体(一)
  • 零基础玩转Fun-ASR:钉钉通义语音识别WebUI保姆级入门指南
  • 【技术解析】Ryujinx模拟器:在PC上完美运行Switch游戏的完整指南
  • 告别本地配置!Core72在线IDE:5分钟打造云端开发环境终极指南
  • Java 25虚拟线程压测全对比:Spring WebFlux vs Virtual Threads vs Project Loom原生方案,谁才是百万QPS终极解?
  • BiliDownloader:B站视频高效下载终极指南
  • SolidWorks软件授权费用结构深度剖析与系统化降本增效方案
  • D3KeyHelper:解放双手的暗黑破坏神3智能辅助工具
  • D3KeyHelper完全指南:从入门到精通的暗黑破坏神3自动化战斗与资源管理
  • “INMS: Memory Sharing for Large Language Model based Agents“ 论文笔记梢
  • 营销自动化数据驱动 - 多源数据 OLAP 架构演进趟
  • 突破ControlNet图像质量瓶颈:3大核心参数优化指南
  • 2026口碑最佳广东祛痘去闭口产品OEM加工/敏感肌修护产品OEM加工横评:十款广东佛山企业实力单品精准测评 - 十大品牌榜
  • 7步实现电脑风扇智能控制:从安装到多场景优化全指南