苹果IOS 微信浏览器预览PDF乱码 解决方案

news/2024/11/30 3:50:18/

    在此之前,此功能的实现是用户点击一个url,服务器返回一个二进制流,浏览器下载后是一个PDF文件,客户可以进行浏览。
    此次收到了合作方的新要求,能够在微信中点击url ,直接预览PDF中的内容。


    第一版:做了非常简单的更改,在response中Set了打开方式 :

response.addHeader("Content-disposition", "attachment; filename="+ new String(polno.getBytes("utf-8"), "ISO8859-1")+"."+suffix);
//原打开方式,Content-disposition:attachment
response.addHeader("Content-disposition", "inline; filename="+ new String(polno.getBytes("utf-8"), "ISO8859-1")+"."+suffix);
//更改后打开方式,Content-disposition:inline

response中header的Content-disposition属性由attachment改为inline , 效果在测试环境表现为连接跳转为直接打开的pdf文件预览,在微信中也可以直接进入预览界面。

但当日上线中,发现存在问题,在苹果设备中(IOS13),微信浏览器中打开时表现为乱码:

 

在这种情况下紧急进行排错,首先使用Soup-UI模拟浏览器进行对连接的访问,观察返回头信息:

  1. 在测试环境,没有返回文件格式;
  2. 在生产环境,返回文件格式为“text”;

由此可以猜想,是该文件头导致流被解析的时候错误解析为文本,导致乱码。测试环境无防火墙限制,返回是完整二进制流,文件命名后能更新为pdf文件,而生产环境因为防火墙限制,可能在转发时默认设了值。

 

 

第二版:设置文件返回格式:

response.setContentType("application/octet-stream");
//原本设置,文件类型为二进制流;
response.setContentType("application/pdf");
//更改为返回文件声明为pdf

效果是再次使用soupUI访问,测试环境可以捕捉到头中有了文件类型,然而生产环境这个代码没有起到任何作用 !

 

 

再次分析原因,在测试环境、生产环境服务器上分别执行locale 命令,

 

生产:

 

测试:

分析可能是编码格式导致的?

 

第三版:

response.setContentType("application/pdf;charset=utf-8");
//更改为返回文件声明为pdf,且声明编码格式为UTF-8,与服务器同步

 

问题得到完美解决。


http://www.ppmy.cn/news/363321.html

相关文章

iOS-关于解决WebView、WKWEbView打开pdf文件乱码问题

今天遇到了WebView打开pdf乱码的问题,百度了一下,遂找到了解决方法,在这记录一下,原贴地址 原贴整理了两种解决方法,我试了第二种没成功,也没搞懂是什么问题,下面就整理一下第一种解决方法。 …

java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码

最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解决方案。 第一个:把pdf转成htm…

基于51单片机的全自动智能洗衣机控制系统Proteus仿真(仿真+源码+全套资料)

资料编号:108 设计功能: 1、对水温实时显示 2、显示滚筒转速 3、显示运行倒计时 4、能通过按钮分别设置洗涤时间和脱水时间 5、运行过程为:加热——洗涤——脱水 具体功能请看下方演示视频 108-基于51单片机的全自动智能洗衣机控制系统Pro…

java生成pdf时汉字乱码,为□-(linux系统)

问题描述:Linux环境中Java生成pdf时,图片中的汉字位置都显示为方框,乱码、方框、问号 原因分析:经排查日志,发现是在生成的时候缺少对应的字体库 1:由于项目由原来的Windows系统换到了Linux系统&#xff0…

用pdfbox进行pdf转图片中文乱码,缺失字体

PDDocument pdDocument PDDocument.load(inputStreamByUrl); PDFRenderer pdfRenderer new PDFRenderer(pdDocument); BufferedImage bufferedImage pdfRenderer.renderImageWithDPI(i, 144F, ImageType.RGB); 使用pdfbox读取pdf转图片的时候,如果缺失字体&…

浏览器打开pdf乱码

前几天在测试项目的时候,无意间发现个bug——在下载pdf时如果选择打开则会出现乱码,然而保存pdf文件时却不会乱码。一开始,我以为是浏览器的设置问题,问了问度娘,说是没有ADOBE的缘故,于是乎,安…

pdf阅读器或知云文献阅读选中pdf文字乱码

pdf阅读器或知云文献阅读选中pdf文字乱码 使用知云翻译pdf的时候选中文字全是问号和乱码,其他的阅读器选中复制的文字也是乱码 原因分析: 文章是不可复制的,需要重新扫描和orc 解决方案: 使用的软件:Adobe acrobat pro…

ES7、ES8、ES9、ES10、ES11、ES12都增加了那些新特性?

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 ES7 ES2016(ES7)中新增了如下特性👇 Array.prototype…