博客
关于我
解决pdf.js下载PDF文件名称中文乱码和不带.pdf后缀名问题
阅读量:654 次
发布时间:2019-03-15

本文共 1139 字,大约阅读时间需要 3 分钟。

解决pdf.js下载PDF文件名称中文乱码和不带.pdf后缀名问题

作为一名开发者,我遇到了一个棘手的问题:使用pdf.js预览并下载PDF文件时,文件名出现了中文乱码,并且偶尔文件名中缺少.pdf后缀。这让我不得不深入调查问题根源,并找到解决方法。

首先,我需要明确问题的具体表现。我在使用pdf.js预览文件02010204_钢筋安装检验批质量验收记录_02010204016.pdf时,点击下载按钮,生成的文件名确实有问题。从截图可以看出,文件名中的中文部分不复读,呈现为乱码符号,而英文字符则正常。此外,部分情况下,下载的文件名缺少了.pdf后缀,这使得我无法直接打开文件,需要手动添加。

我尝试了多种解决方法,包括在URL中添加encodeURIComponent()处理,以及在viewer.js中设置charset="gb2312"。这些方法在理论上都应能解决问题,但在实际应用中,仅仅对URL进行编码似乎并未解决乱码问题,且文件名的编码和解码并未带来明显的变化。

深入分析,我发现viewer.js已经对文件名进行了编码处理,因此下载文件名是已经经过编码后的版本。为此,我需要对文件名进行解码,使用JavaScript的decodeURIComponent()方法。

更深入的探究发现,问题的根源在于下载逻辑中存在编码过程,因此必须在下载前对文件名进行解码处理。具体来说,我需要找到viewer.js中的_download()方法,修改其逻辑,确保在下载前对文件名进行解码,并在解码后的文件名基础上,检查是否需要添加.pdf后缀。

在解决乱码问题的同时,我还需要处理文件名缺少.pdf后缀的问题。为此,在解码后检查文件名是否带有.pdf后缀,若没有,则在下载时自动添加。可以通过以下逻辑实现:

filename = decodeURIComponent(filename);if (!filename.endsWith('.pdf')) {    filename += '.pdf';}a.download = filename;

此外,为确保文件在下载时以正确的MIME类型显示,可以在a标签中指定type="application/pdf"

验证过程中,确保解码后的文件名能够正确显示,同时随文件下载时自动带上.pdf后缀。如果发现文件名依然隐藏,可能需要检查系统设置,确保文件扩展名不被隐藏。

总结来说,解决此问题的关键是理解文件名编码和解码的过程,并在合适的时机对文件名进行解码处理。入门级开发者可能需要全面理解pdf.js的内部逻辑,才能有效对问题进行修复。通过这些步骤,我成功解决了文件名乱码和缺少.pdf后缀的问题,这对于提高用户体验非常重要。

转载地址:http://uldmz.baihongyu.com/

你可能感兴趣的文章
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>
mysql中的数据导入与导出
查看>>
MySQL中的时间函数
查看>>
mysql中的约束
查看>>
MySQL中的表是什么?
查看>>
mysql中穿件函数时候delimiter的用法
查看>>
Mysql中索引的分类、增删改查与存储引擎对应关系
查看>>
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>
MySQL为什么不建议使用delete删除数据?
查看>>
MySQL主从、环境搭建、主从配制
查看>>
Mysql主从不同步
查看>>