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

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

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

1.修改pdfPreviewIframe.ftl

java 复制代码
<#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() {
        var rawUrl = "${url!""}";
        if (rawUrl) {
            var finalUrl = rawUrl;
            // 如果 url 不是以 http 开头,自动补全为系统定义的静态资源接口路径
            if (finalUrl.indexOf("http") !== 0) {
                // 如果是以 / 开头,说明是绝对路径但缺少域名
                if (finalUrl.indexOf("/") === 0) {
                    finalUrl = window.location.protocol + "//" + window.location.host + finalUrl;
                } else {
                    // 否则视为业务相对路径,补全为 /sys/common/static/ 接口地址
                    var serverBase = window.location.protocol + "//" + window.location.host + "${base}";
                    finalUrl = serverBase + "/sys/common/static/" + finalUrl;
                }
            }
            // 拼接 PDF.js 标准查看器地址
            var viewerPath = "${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接口

java 复制代码
/**
     * @功能:pdf预览Iframe
     * @param modelAndView
     * @return
     */
    @RequestMapping("/pdf/pdfPreviewIframe")
    public ModelAndView pdfPreviewIframe(ModelAndView modelAndView, @RequestParam(name = "url", required = false) String url) {
        modelAndView.addObject("url", url);
        modelAndView.setViewName("pdfPreviewIframe");
        return modelAndView;
    }
相关推荐
慧都小妮子2 小时前
Aspose.CAD for .NET 26.6 更新发布
pdf·.net·3d渲染·cad·pdf导出·ifc编辑
蝉蜕日记4 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
蓝创工坊Blue Foundry6 小时前
PDF 批量提取指定内容到 Excel:按字段整理多个 PDF 的方法
pdf·ocr·excel·文心一言·paddlepaddle·paddle
Am-Chestnuts8 小时前
AI长回答批量导出PDF与长图:多轮内容整理和免费Markdown备份
人工智能·pdf·aigc
zyplayer-doc9 小时前
研发接口文档怎么长期维护:zyplayer-doc把API、Markdown和变更记录放进同一个知识库
大数据·数据库·人工智能·笔记·pdf·ocr
蜡台1 天前
uniapp pdf文件预览组件
pdf·uni-app·合同·pdfh5
Am-Chestnuts1 天前
【无标题】
pdf
王莎莎-MinerU1 天前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
一棵星1 天前
LibreOffice Word 转 PDF 报错 “source file could not be loaded” 完整解决方案
pdf·word
协享科技1 天前
AI 读 PDF 的 2026 选型:ChatPDF、PDF.ai、通义智文之外,更要看证据链
人工智能·pdf