翻找了半天,实在是没有找到怎么在线预览PDF,有一个教程尝试了半天,难度极高,故放弃;现在找了一个冷门的方法,测试成功了,欣喜之余,给各位大佬交流一下,还不要请不要嘲笑。目前基于FoF Upload 1.8.2
和 Flarum 1.8.10
,其他版本请自测
做好备份做好备份 做好备份做好备份 做好备份做好备份 做好备份做好备份 做好备份做好备份
效果图:

原理:使用默认图片下载模板,基于里面的下载URL来进行直接展示
不要问我为什么不用默认文件下载模板,技术实力达不到 - -
1、安装上述版本 废话
2、将上传的文件类型的PDF单独或者设置到默认图片下载模板
示例:

application\/(pdf)
默认图片下载模板
3、修改index/vendor/fof/upload/resources/templates/image.blade.php
文件
示例代码:
<div class="fof-download row" data-fof-upload-download-uuid="{@uuid}" id="{@uuid}">
<div class="card">
<div class="wrapper" style="background: url({@url}) center / cover no-repeat">
<div class="header">
<ul class="menu-content">
<li><div class="far fa-hdd"><span><xsl:value-of select="@size"/></span></div></li>
</ul>
</div>
<div class="data">
<div class="content">
<h4 class="title">
{SIMPLETEXT1}
</h4>
<div class="Button Button--primary Button-icon Button--block"><i class="fas fa-download"></i></div>
</div>
</div>
</div>
</div>
</div>
<script>
if("{@url}".substr(-3)=="pdf"){
PDFObject.embed("{@url}", "#{@uuid}",{ height: "692px" });
}
</script>
解析:在默认的div
增加id="{@uuid}"
,最后面加上script判断,防止所有的文件都会走这个pdf
4、依据Quick start教程,在页眉和css加上这两项
外观-自定义页眉,添加以下
<script src="https://unpkg.com/pdfobject"></script>
外观-自定义样式
.pdfobject-container { height: 700px; border: 0px solid #ccc; }
其中height: 700px;
可以自定义,也就是pdf预览窗口的高度
经过测试,如果这里设置700,在image.blade.php中设置692px则不会出现双滚动条
PDFObject.embed("{@url}", "#{@uuid}",{ height: "692px" });
之后在仪表盘-工具-清除缓存即可
结束语:理论上通过此方案结合kkFileView能实现大部分文件的预览,目前还在搞。如果可以的话,我觉得这是一个相对比较稳定的方案了
还请各位不要嘲笑,毕竟我不是专业的
其中参考了:
1、分享一个fof-upload模板 视频 音频 文本 PDF 模板
2、office与pdf文件预览的回答
3、使用了pdfobjectjs组件