Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
37
rated 0 times [  43] [ 6]  / answers: 1 / hits: 150057  / 10 Years ago, mon, march 31, 2014, 12:00:00

Based on the question Open PDF in new browser full window, it looks like I can use JavaScript to open a new window with a PDF file with the following code:



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


I'd like to do so on a return trip from the server by adding a byte array instead of the file name to use as the URL location in window.open



I'm currently returning PDF files like this:



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


Is there a way to open a new window with a PDF byte array in javascript.



Something like this:



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

More From » asp.net

 Answers
20

It looks like window.open will take a Data URI as the location parameter.


So you can open it like this from the question: Opening PDF String in new window with javascript:


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

Here's an runnable example in plunker, and sample pdf file that's already base64 encoded.


Then on the server, you can convert the byte array to base64 encoding like this:


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

NOTE: This seems difficult to implement in IE because the URL length is prohibitively small for sending an entire PDF.


[#71694] Friday, March 28, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
ashly

Total Points: 601
Total Questions: 95
Total Answers: 88

Location: Saint Vincent and the Grenadines
Member since Thu, Oct 15, 2020
4 Years ago
;