gpt4 book ai didi

javascript - Window.Open 使用 PDF 流而不是 PDF 位置

转载 作者:行者123 更新时间:2023-12-03 00:04:23 33 4
gpt4 key购买 nike

基于问题Open PDF in new browser full window ,看起来我可以使用 JavaScript 打开一个包含 PDF 文件的新窗口,代码如下:

window.open('MyPDF.pdf', '_blank');

我想在从服务器返回时通过添加字节数组而不是文件名来用作window.open中的URL位置来执行此操作。

我目前正在返回 PDF 文件,例如 this :

Response.Clear();
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdfByteArray);
Response.Flush();

有没有办法在 JavaScript 中打开一个带有 PDF 字节数组的新窗口。

类似这样的事情:

var script = "window.open('" + pdfByteArray + "', '_blank');";
ScriptManager.RegisterClientScriptBlock(Parent.Page, typeof(Page), "pdf", script, true);

最佳答案

看起来 window.open 将采用数据 URI 作为位置参数。

所以你可以从问题中这样打开它:Opening PDF String in new window with javascript :

window.open("data:application/pdf;base64, " + base64EncodedPDF);

这是一个runnable example in plunker ,和sample pdf file已经经过 Base64 编码。

然后在服务器上,您可以将字节数组转换为base64编码,如下所示:

string fileName = @"C:\TEMP\TEST.pdf";
byte[] pdfByteArray = System.IO.File.ReadAllBytes(fileName);
string base64EncodedPDF = System.Convert.ToBase64String(pdfByteArray);

注意:这似乎很难在 IE 中实现,因为 URL 长度对于发送整个 PDF 来说太小了。

关于javascript - Window.Open 使用 PDF 流而不是 PDF 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22771425/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com