javascript - with - js open pdf data




Window.Open mit PDF-Stream statt PDF-Speicherort (2)

Basierend auf der Frage PDF in neuem Browserfenster öffnen sieht es so aus, als ob ich mit JavaScript ein neues Fenster mit einer PDF-Datei mit folgendem Code öffnen kann:

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

Ich möchte dies auf einer Rückreise vom Server tun, indem ich anstelle des Dateinamens ein Byte-Array hinzufüge, das als URL- window.open in window.open

Ich gebe gerade PDF-Dateien wie this :

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

Gibt es eine Möglichkeit, ein neues Fenster mit einem PDF-Byte-Array in Javascript zu öffnen.

Etwas wie das:

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

Hinweis : Ich habe in der neuesten Version von IE und anderen Browsern wie Mozilla, Chrome überprüft und das funktioniert für mich. Hoffe, es funktioniert auch für andere.

if (data == "" || data == undefined) {
    alert("Falied to open PDF.");
} else { //For IE using atob convert base64 encoded data to byte array
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        var byteCharacters = atob(data);
        var byteNumbers = new Array(byteCharacters.length);
        for (var i = 0; i < byteCharacters.length; i++) {
            byteNumbers[i] = byteCharacters.charCodeAt(i);
        }
        var byteArray = new Uint8Array(byteNumbers);
        var blob = new Blob([byteArray], {
            type: 'application/pdf'
        });
        window.navigator.msSaveOrOpenBlob(blob, fileName);
    } else { // Directly use base 64 encoded data for rest browsers (not IE)
        var base64EncodedPDF = data;
        var dataURI = "data:application/pdf;base64," + base64EncodedPDF1;
        window.open(dataURI, '_blank');
    }

}

Es sieht so aus, dass window.open einen Daten-URI als Standortparameter verwendet.

So können Sie es öffnen wie folgt aus der Frage: Öffnen PDF String in einem neuen Fenster mit Javascript :

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

Hier ist ein runnable Beispiel in Plunker und Beispiel-PDF-Datei , die bereits Base64-codiert ist.

Dann können Sie das Byte-Array auf dem Server wie folgt in base64-Codierung konvertieren:

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

Hinweis : Dies scheint schwierig in IE zu implementieren, da die URL-Länge prohibitiv klein ist, um eine gesamte PDF zu senden.





window.open