use*_*982 2 javascript pdf jquery
我从要打印的服务器上收到了base64 pdf。
我一直在尝试以下方法:
$.ajax({
type: "POST",
url: url,
data: blahblahblah,
success: function(data) {
var printWindow = window.open( "data:application/pdf;base64, " + data );
printWindow.print();
}
});
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这在Chrome中不起作用。我收到以下错误:
SecurityError:阻止源为“ xxx”的帧访问源为“ null”的帧。请求访问的帧的协议为“ http”,正在访问的帧的协议为“数据”。协议必须匹配。
有关如何解决此问题的建议?
您可以尝试打开窗口,并尝试插入嵌入的pdf数据。
这是我找到并使用过的一段代码(我更改为适合您的代码,但未经测试):
$.ajax({
type: "POST",
url: url,
data: blahblahblah,
success: function(data) {
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
'resizable,screenX=50,screenY=50,width=850,height=1050';
var htmlPop = '<embed width=100% height=100%'
+ ' type="application/pdf"'
+ ' src="data:application/pdf;base64,'
+ escape(data)
+ '"></embed>';
var printWindow = window.open ("", "PDF", winparams);
printWindow.document.write (htmlPop);
printWindow.print();
}
});
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
// open PDF received as Base64 encoded string in new tab
const openPdf = (basePdf) => {
let byteCharacters = atob(basePdf);
let byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
let file = new Blob([byteArray], {type: 'application/pdf;base64'});
let fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8701 次 |
| 最近记录: |