作为序言,我必须主持一个事实,即我在Web开发环境中的知识有限。实际上,我的问题对某些人来说似乎微不足道。
通过Ajax调用,我通过TCPDF生成了PDF,并在变量中进行了检索。
我将其转换为base64并将其放置在Uint8Array中。
function create_pdf() {
var jsonOptions = jQuery("#Form").serializeArray();
$.ajax({
url: 'tcpdf/samples/samples_002c.php',
type: 'POST',
cache: false,
data: jsonOptions
})
.done(function(data) {
var pdfData = convertDataURIToBinary('data:application/pdf;base64,' + data);
// View PDF
// .....
})
.fail(function() {
alert('Faild');
});
return false;
}
function convertDataURIToBinary(dataURI) {
var BASE64_MARKER = ';base64,';
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
我想通过PDF.js查看器在新计算机上将其显示在用户计算机上(目的是避免将PDF保存在服务器上的文件中)。
我一直在等待几天才能完成这部分工作,但没有成功。
您是否有研究线索可以使我在该项目中取得成功?
预先感谢您的建议。
答案 0 :(得分:0)
// ADD OPEN WHIT WINDOW JAVASCRIPT
var pdfData = convertDataURIToBinary('data:application/pdf;base64,' + data);
window.open(pdfData);
答案 1 :(得分:0)
一种解决方案是不使用PDF.js,而依靠具有open
功能(如@MarcoDeveloper建议)的浏览器对PDF的处理。另一种解决方案是准备单独的页面,以使用PDF.js显示文件。
为此,您需要准备简单的html页面。我建议使用帖子,但是如果您的页面在同一域中,则也可以直接发送数据。
preview.html :
window.addEventListener("message", receiveMessage, false);
function receiveMessage(e) {
if (event.origin === window.location.origin) {
PDFJS.getDocument({ data: convertDataURIToBinary(e.data) }).then(function() {
});
}
}
index.html :
var win = window.open('preview.html');
win.postMessage(dataURI, '*');
发送base64数据并在preview.html中解码可能是个好主意。
要直接发送pdf数据,您可以使用(仅在同一域中):
var win = window.open('preview.html');
win.PDFJS.getDocument({ data: binary_data });
文件preview.html仅需要包含PDF.js的JS文件,它应该可以工作。