对于内部网应用程序,其中非常机密的文档被传输AES256加密,pdf数据源可用作base64字符串(考虑到它们首先被解密)。出于测试目的,我从服务器上读取了pdf http://ddlab.de/stackoverflow/pdf.js/1/test.pdf
这是index.html: http://ddlab.de/stackoverflow/pdf.js/1/index.html
在viewer.js中我可以设置
var DEFAULT_URL = 'test.pdf'; // giving a local or crossdomain path to pdf
我的想法是,将base64字符串设置为默认源,如
var DEFAULT_URL = 'data:application/pdf;base64,JVBERi0...GCg=='; // shortened
(也适用于FF)
为此我写了一个小的PHP脚本,它提供了base64编码的字符串。 http://ddlab.de/stackoverflow/pdf.js/1/readfile.php
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
ob_start('ob_gzhandler');
header('Content-Type: text/javascript; charset=utf-8');
$file = 'test.pdf';
$mime = mime_content_type ($file);
$data = base64_encode(file_get_contents($file));
$url = 'data:' . $mime . ';base64,' . $data;
echo '/*read pdf and output the base64 code*/' . "\n\n";
echo 'var pdf_src = "' . $url . '";';
ob_end_flush();
?>
这被添加到HEAD中
<script type="text/javascript" src="readfile.php"></script>
所以,最后我可以使用
var DEFAULT_URL = pdf_src; // retrieving the base64-string as URL
在viewer.js中
这在FF中非常棒,但在Safari和Chrome中?不。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
PDFView.open调用接受类型化数组。从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding复制“Base64 /二进制数据/ UTF-8字符串实用程序”,并使用base64DecToArr函数解码base64内容。您已经在修改查看器,因此添加几个函数不会有问题。