Как отобразить поток PDF в браузере с помощью javascript

Я обращаюсь к существующей веб-службе WCF (которая возвращает PDF-файл в виде потока байтов), используя методы jquery ajax.

Когда вызов службы завершается, я получаю переменную javascript, содержащую PDF (переменная содержит двоичные данные, начиная с "%PDF-1.4...").

Я хочу отобразить этот PDF-файл в новом окне браузера, но у меня не получается это сделать.

Мои исследования на данный момент показывают, что я мог бы достичь того, чего хочу, используя data: uri, поэтому мой код, который вызывается после завершения вызова ajax, выглядит следующим образом:

function GotPDF(data)
{
    // Here, data contains "%PDF-1.4 ..." etc.
    var datauri = 'data:application/pdf;base64,' + Base64.encode(data);
    var win = window.open("", "Your PDF", "width=1024,height=768,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no");
    win.document.location.href = datauri;
}

Это вызывает открытие нового окна браузера, но содержимое пустое.

Интересно, что если я укажу своему браузеру (IE9) на существующий файл на моем локальном диске, используя файл: uri, например, file://c:/tmp/example.pdf, то я получу тот же результат, то есть пустое окно.

Можно ли каким-либо образом отобразить эти данные PDF?

19
задан Dave W 23 March 2012 в 13:42
поделиться