Java实现PDF在线预览

前言:之前一直PDF一直是下载后再查看,一直在想如何如何在线预览,现已找到方法,作此笔记,也希望都对其他人有所帮助

代码实现

@Slf4j
@Controller
@RequestMapping("/file/view")
public class FileViewController {/*** 预览pdf* @param request* @param response*/@GetMapping("/pdf")public void preViewPDF(HttpServletRequest request, HttpServletResponse response) {String pdfFilePath = request.getParameter("fileName");String replace = pdfFilePath.replace('_', File.separatorChar);try (FileInputStream inputStream = new FileInputStream(replace);OutputStream outputStream = response.getOutputStream()) {File pdfFile = new File(pdfFilePath);String suffix = FileUtil.getSuffix(pdfFile); // 获取文件后缀MimeTypeEnum mimeTypeEnum = MimeTypeEnum.findByExtension(suffix);if (mimeTypeEnum == null) {throw new FileException(101, "该文件类型不支持预览");}response.setContentType(mimeTypeEnum.getMimeType());IOUtils.write(IOUtils.toByteArray(inputStream), outputStream);} catch (FileNotFoundException e) {log.error("pdf路径不存在", e);} catch (IOException e) {log.error("写入出现IO异常", e);}}
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum MimeTypeEnum {AAC("acc","AAC音频","audio/aac"),ABW("abw","AbiWord文件","application/x-abiword"),ARC("arc","存档文件","application/x-freearc"),AVI("avi","音频视频交错格式","video/x-msvideo"),AZW("azw","亚马逊Kindle电子书格式","application/vnd.amazon.ebook"),BIN("bin","任何类型的二进制数据","application/octet-stream"),BMP("bmp","Windows OS / 2位图图形","image/bmp"),BZ("bz","BZip存档","application/x-bzip"),BZ2("bz2","BZip2存档","application/x-bzip2"),CSH("csh","C-Shell脚本","application/x-csh"),CSS("css","级联样式表(CSS)","text/css"),CSV("csv","逗号分隔值(CSV)","text/csv"),DOC("doc","微软Word文件","application/msword"),DOCX("docx","Microsoft Word(OpenXML)","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),EOT("eot","MS Embedded OpenType字体","application/vnd.ms-fontobject"),EPUB("epub","电子出版物(EPUB)","application/epub+zip"),GZ("gz","GZip压缩档案","application/gzip"),GIF("gif","图形交换格式(GIF)","image/gif"),HTM("htm","超文本标记语言(HTML)","text/html"),HTML("html","超文本标记语言(HTML)","text/html"),ICO("ico","图标格式","image/vnd.microsoft.icon"),ICS("ics","iCalendar格式","text/calendar"),JAR("jar","Java存档","application/java-archive"),JPEG("jpeg","JPEG图像","image/jpeg"),JPG("jpg","JPEG图像","image/jpeg"),JS("js","JavaScript","text/javascript"),JSON("json","JSON格式","application/json"),JSONLD("jsonld","JSON-LD格式","application/ld+json"),MID("mid","乐器数字接口(MIDI)","audio/midi"),MIDI("midi","乐器数字接口(MIDI)","audio/midi"),MJS("mjs","JavaScript模块","text/javascript"),MP3("mp3","MP3音频","audio/mpeg"),MPEG("mpeg","MPEG视频","video/mpeg"),MPKG("mpkg","苹果安装程序包","application/vnd.apple.installer+xml"),ODP("odp","OpenDocument演示文稿文档","application/vnd.oasis.opendocument.presentation"),ODS("ods","OpenDocument电子表格文档","application/vnd.oasis.opendocument.spreadsheet"),ODT("odt","OpenDocument文字文件","application/vnd.oasis.opendocument.text"),OGA("oga","OGG音讯","audio/ogg"),OGV("ogv","OGG视频","video/ogg"),OGX("ogx","OGG","application/ogg"),OPUS("opus","OPUS音频","audio/opus"),OTF("otf","otf字体","font/otf"),PNG("png","便携式网络图形","image/png"),PDF("pdf","Adobe 可移植文档格式(PDF)","application/pdf"),PHP("php","php","application/x-httpd-php"),PPT("ppt","Microsoft PowerPoint","application/vnd.ms-powerpoint"),PPTX("pptx","Microsoft PowerPoint(OpenXML)","application/vnd.openxmlformats-officedocument.presentationml.presentation"),RAR("rar","RAR档案","application/vnd.rar"),RTF("rtf","富文本格式","application/rtf"),SH("sh","Bourne Shell脚本","application/x-sh"),SVG("svg","可缩放矢量图形(SVG)","image/svg+xml"),SWF("swf","小型Web格式(SWF)或Adobe Flash文档","application/x-shockwave-flash"),TAR("tar","磁带存档(TAR)","application/x-tar"),TIF("tif","标记图像文件格式(TIFF)","image/tiff"),TIFF("tiff","标记图像文件格式(TIFF)","image/tiff"),TS("ts","MPEG传输流","video/mp2t"),TTF("ttf","ttf字体","font/ttf"),TXT("txt","文本(通常为ASCII或ISO 8859- n","text/plain"),VSD("vsd","微软Visio","application/vnd.visio"),WAV("wav","波形音频格式","audio/wav"),WEBA("weba","WEBM音频","audio/webm"),WEBM("webm","WEBM视频","video/webm"),WEBP("webp","WEBP图像","image/webp"),WOFF("woff","Web开放字体格式(WOFF)","font/woff"),WOFF2("woff2","Web开放字体格式(WOFF)","font/woff2"),XHTML("xhtml","XHTML","application/xhtml+xml"),XLS("xls","微软Excel","application/vnd.ms-excel"),XLSX("xlsx","微软Excel(OpenXML)","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),XML("xml","XML","application/xml"),XUL("xul","XUL","application/vnd.mozilla.xul+xml"),ZIP("zip","ZIP","application/zip"),MIME_3GP("3gp", "3GPP audio/video container", "video/3gpp"),MIME_3GP_WITHOUT_VIDEO("3gp", "3GPP audio/video container doesn't contain video", "audio/3gpp2"),MIME_3G2("3g2", "3GPP2 audio/video container", "video/3gpp2"),MIME_3G2_WITHOUT_VIDEO("3g2", "3GPP2 audio/video container  doesn't contain video", "audio/3gpp2"),MIME_7Z("7z","7-zip存档","application/x-7z-compressed");private String extension;private String explain;private String mimeType;public static MimeTypeEnum findByExtension(String extension) {if(StringUtils.isBlank(extension)){return null;}for (MimeTypeEnum typesEnum : MimeTypeEnum.values()) {if (extension.equals(typesEnum.getExtension())) {return typesEnum;}}return null;}public static String getContentType(String fileType) {MimeTypeEnum mimeTypeEnum = MimeTypeEnum.findByExtension(fileType);if(mimeTypeEnum != null){return mimeTypeEnum.getMimeType();}return "application/octet-stream";}}

同理,图片也可以使用这种方法进行实现

提示:fileName这个参数是你服务器上存储PDF的文件地址
修改:之前的代码流没有关掉,现在修改了,然后如果你的pdf文件如果是保存在服务器上,这个fileName这个字段就是你服务器上存储PDF的文件地址,当然也可以做些处理,比如加密啥的,只要能保证解析到这个pdf文件就行,最后这个是预览pdf的地址,如果有需求要预览连接的,就自己在写业务需求的时候把这个连接拼接一下就行了,然后返回给前端

Java实现PDF在线预览相关推荐

  1. java实现word转pdf在线预览格式

    java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此. java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题. 方案 ...

  2. Java 实现word pdf在线预览

    Java 实现word pdf在线预览 最近项目有这个需求,查找了一些资料,在这整理一下. 首先,pdf的文件,浏览器本身支持预览,不需要做什么处理. controller: 简单说下思路:就是利用i ...

  3. java图片的在线预览_【Java】web实现图片在线预览

    一.场景还原 用户上传了一张图片,已有服务器保存路径,现由于系统配置无法直接通过图片URL打开预览图片,需实现点击预览将图片显示在浏览器上. 二.实现方法 html: 预览 此处用预览按钮方法实现 J ...

  4. html 在线预览pdf功能,html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件!javascript 翻来覆去找到两种办法 ,最后采用了jquery.media.js插 ...

  5. java文档在线预览实现

    Java文档在线预览实现 近期因需要完成对word.excel.ppt.txt等文档的内容检索,在用户检索到相关内容时,需要给用户提供一个在线预览文档的功能.在网上找到部分参考后,实现了该功能. Ja ...

  6. html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...

  7. html做在线预览pdf文件,html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...

  8. PDF在线预览插件touchPDF.js:手机端预览

    接上一篇web端预览,博主找了一篇关于手机端的预览插件,丑是丑了点,但是能用,下面就来介绍一下吧! PDF在线预览插件:手机端预览 1.编辑界面的HTML代码 2.第二步就没了 3.既然这样那我们直接 ...

  9. 前端实现pdf在线预览

    概述:pdf在线预览,包括PC端浏览器.IOS.Android,开发过程中遇到的问题及解决方案 [1]iframe 直接打开pdf文件(可用于PC端) <iframe src="pdf ...

最新文章

  1. Salesforce 数据备份和恢复小知识
  2. [acm]HDOJ 1200 To and Fro
  3. 数字图像处理图像反转的实现_使用8086微处理器反转16位数字
  4. JavaScript数组方法map
  5. android 多行文字水印,android实现文字水印效果 支持多行水印
  6. python发送cookie请求_Python中实现带Cookie的Http的Post请求
  7. 接口测试常用工具及测试方法(超全)干货
  8. 复习JS事件及DOM
  9. java中递归算法_java中递归算法是什么怎么算的?
  10. 识别视频文件夹,listview
  11. 全国省市区信息,mysql数据库记录
  12. mysql创建数据库表_mysql基础之创建数据库和表
  13. DX11:先定一个小目标,比如:把DX11龙书上的知识点系统的总结下来
  14. xzp android webview,加载gif动态图的三种方式
  15. 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
  16. Android SDKManger 更新设置
  17. 语音识别方案 - 联想语音团队多场景实时语音文字转换方案
  18. Web前端之网页导航----126邮箱(关于position)
  19. 传统企业IT如何上云
  20. Samsung automotive v7 cameraCoretest

热门文章

  1. 抖音怎么把照片做成视频?超火的照片切换教程,3分钟就能搞定
  2. linux网卡多队列技术
  3. fduthesis使用问题: Overleaf 生僻字处理——整体和局部修改字体(个别中文字符显示问题)
  4. 解决“倾听者”无法使用超过32GB的TF卡的问题
  5. 为爬虫获取登录cookies:登录的恩恩怨怨
  6. python编写抽奖小游戏
  7. 全球及中国汽车怠速空气控制阀行业竞争动态及需求前景预测报告(2022-2027)
  8. [渝粤教育] 中国地质大学 机械设计 复习题
  9. python录音文件降噪_Python | 简单的扩音,音频去噪,静音剪切
  10. 计算机硬盘驱动器检查失败,电脑硬盘坏道导致磁盘驱动器出现错误,应怎么解决...