Encryption 在客户端解密PDF文件并使用PDF.js查看

Encryption 在客户端解密PDF文件并使用PDF.js查看,encryption,pdf.js,cryptojs,Encryption,Pdf.js,Cryptojs,我正在做一个项目,所有的pdf文件都在Web服务器上加密 通过XMLHttpRequest,我可以获得加密pdf文件的内容。然后使用JavaScript工具对文件进行解密。毕竟,将文件内容作为解密的_文件分配给javascript变量。所有这些都是在客户端完成的 这就是我想做的 js呈现和查看位于web服务器或同一目录库上的pdf文件 如何处理pdf.js以从javascript变量获取内容,而不是url为“http//yourdomain.com/first-test.pdf”或文件为“fir

我正在做一个项目,所有的pdf文件都在Web服务器上加密

通过XMLHttpRequest,我可以获得加密pdf文件的内容。然后使用JavaScript工具对文件进行解密。毕竟,将文件内容作为解密的_文件分配给javascript变量。所有这些都是在客户端完成的

这就是我想做的

js呈现和查看位于web服务器或同一目录库上的pdf文件

如何处理pdf.js以从javascript变量获取内容,而不是url为“http//yourdomain.com/first-test.pdf”或文件为“first-test.pdf”


欢迎您提供任何答案,谢谢。

假设您使用的是PDF.js的viewer.html,从数据中打开PDF文件就像使用正确的参数调用一样简单

示例:类型化数组(Uint8Array/ArrayBuffer/)
//在viewer.html中
var数据=新的Uint8Array(/*…数据…*/);
PDFViewerApplication.open(数据);
示例:Blob/File对象
//在viewer.html中
var data=newblob(['%PDF..'],{type:'application/PDF'});
var url=url.createObjectURL(数据);
PDFViewerApplication.open(url);
示例:数据URL(如果浏览器支持)
var url='data:application/pdf;base64,…';
PDFViewerApplication.open(url);
示例:数据URL(任何浏览器) 这包括两个步骤:解码base64数据URL,然后将二进制字符串转换为
Uint8Array

var url='data:application/pdf;base64,…';
var data=url.split(';base64')[1];
//解码base64
var binaryString=atob(数据);
//将二进制字符串转换为Uint8Array
数据=新的Uint8Array(binaryString.length);
for(变量i=0,ii=binaryString.length;i
示例:在框架中使用PDF.js

var pdfjsframe=document.getElementById('pdfjsframe');
//至少,等待帧准备就绪,例如通过onload。
pdfjsframe.onload=函数(){
var数据=…此处或其他地方的数据;
pdfjsframe.contentWindow.PDFViewerApplication.open(数据);
};

@ScottChu文本编码API将字符串转换为类型化数组,默认为utf-8作为编码。但是,PDF不是用utf-8编码的,因此我更新了答案,删除了
textcoder
的使用(现在每个字节的转换都是单独完成的)。