Ok, powiedzmy, że mam gdzieś zapisane dane dokumentu, zróbmy arbitralnie this pdf.Prawidłowe tworzenie i przesyłanie blobów PDF za pośrednictwem plików HTML5 i interfejsów URL API
Problem # 1. Co chcę zrobić, to wywołanie AJAX do tego adresu URL (ponieważ muszę przekazać niektóre nagłówki uwierzytelniania i jest to domena krzyżowa). Następnie odbierz zwrócone dane, utwórz dla nich blob url, dołącz element iFrame do DOM i skieruj src
na adres URL blob.
Obecnie mój kod wygląda następująco:
$.ajax({
url:'http://www.grida.no/climate/ipcc_tar/wg1/pdf/tar-01.pdf'
}).done(function(data){
var file = new Blob([data], {type:'application/pdf'}),
url = URL.createObjectURL(file),
_iFrame = document.createElement('iframe');
_iFrame.setAttribute('src', url);
_iFrame.setAttribute('style', 'visibility:hidden;');
$('#someDiv').append(_iFrame);
});
Niestety, ja dostaję 'Nie udało się Render PDF' w iFrame.
Problem # 2. Chciałbym, aby to spowodowało monit o pobranie pliku. Nie wiesz, jak to zagwarantować, ponieważ pliki PDF będą wyświetlane w ramce iFrame.
ciąg danych rozpoczyna się tak: '% PDF-1.5 % 2504 0 obj <> endobj 2511 0 obj <>/Filter/FlateDecode/ID []/Index [2504 10]/Info 2503 0 R/Length 47/Prev 3720769/Roo t 2505 0 R/Rozmiar 2514/Typ/XRef/W [1 2 0] >> Strumień h bbd'b'9 ] x? abP | ... –
Tylko dla każdego. Skończyło się całkowicie obejście tego problemu, ponieważ wydawało się to niemożliwe. Skończyłem wyświetlać pliki tymczasowo przez 10 sekund, wskazując element iframe na jego dowolny URL i usuwając je po pobraniu (bez uwierzytelniania innego niż pliki cookie przeglądarki). –