pdf.js - base64 字符串而不是 URL ?(FF工作,Safari和Chrome不工作)



对于传输非常机密的文档的 Intranet 应用程序 AES256 加密,pdf 数据源以 base64 字符串的形式提供(鉴于它们首先被解密)。出于测试目的,我从服务器读取了pdfhttp://ddlab.de/stackoverflow/pdf.js/1/test.pdf

这是索引.html:http://ddlab.de/stackoverflow/pdf.js/1/index.html

在查看器中.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*/' . "nn";
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

在查看器中.js

这在FF中效果很好,但是在Safari和Chrome中呢?不。

有人可以帮助我解决这个问题吗?

PDFView.open 调用接受类型化数组。从 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding 复制"Base64/二进制数据/UTF-8 字符串实用程序",并使用 base64DecToArr 函数解码 base64 内容。您已经在修改查看器,因此添加几个功能应该不是问题。

最新更新