现象
在pdf分片加载的时候,会有bytes 大于默认大小65535。特别是pdf文件在13MB左右的时候,这种现象更加明显。
如下图:
上图中,最后两次请求体积明显大于65535。
如果文件过小比如只有1MB,或者文件过大200MB,则这种问题很少见。
解决方案
经查看pdf.js的源码,在pdf.js\src\display\fetch_stream.js 文件中227行左右进行修改。修改如图:
添加代码:
const diff = (end - 1) - begin;
const url = source.url;
if (diff > (source.rangeChunkSize|| 65535)) {
return false;
}
修改完成之后,按照pdf.js github官网 进行重新打包即可。
重新打包完成后,pdf.js\build\generic 文件夹中的两个文件是打包的输出。
添加代码之后的效果
如图:
问题解决!!!
疑问
其实,这个分片加载感觉像一个障眼法,没有从根本上解决分片加载。因为,每次加载pdf文件,需要等好久,但是http的请求时间却很短。关于文件加载这块,本人不是很熟悉,希望熟悉这块的网友留言讨论。