1) embed устарел и больше не должен использоваться для получения согласованных результатов.
2) Существует несколько способов сделать это (например, ajax захватывает файл и затем рендерит его), однако)Я бы исключил причину вовлечения зависимости браузера от плагина.
Чтобы сделать это «правильно», я бы проверил https://github.com/andreasgal/pdf.js#readme и посмотрел бы на рендеринг PDF только в javascript.Это устраняет необходимость в установщике ридера на компьютере и позволяет двигаться в этом направлении.
3) Чтобы справиться с горизонтальной подгонкой, я обнаружил, что css создала мне проблемы с комбинациями iframes / pdf в несколькихбраузеры на сегодняшний день, и прибегали к использованию старой школы ширины и высоты следующим образом.Причудливый, но он работает в Firefox, Chrome, IE9, Safari, поэтому, пожалуйста, не игнорируйте меня из-за особенностей браузера.В противном случае я бы просто использовал css.
<iframe name="myiframe" id="myiframe" width="100%" height="600" src="viewpdf.php"></iframe>
Хотя это и не JavaScript, вот код php, который демонстрирует, как я это делаю:
viewpdf.php:
header('Content-Type: application/pdf');
header('Accept-Ranges: none');
header('Content-Disposition: inline; filename="' . $finalpdf_fn . '"');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0', true);
@readfile($finalpdf_fn);
Итак ... в JavaScript это будет выглядеть примерно так:
function getXMLHttp() {
var xmlHttp;
try {
//Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
} catch(e) {
//Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
return xmlHttp;
}
var oRequest = getXMLHttp();
var sURL = "/tmp/pdf-13319JPL3j7.pdf";
oRequest.open("GET",sURL,false);
oRequest.setRequestHeader("Content-Type","application/pdf");
oRequest.setRequestHeader("Accept-Ranges","none");
oRequest.setRequestHeader("Content-Disposition","inline; filename='"+sURL+"'");
oRequest.setRequestHeader("Content-Transfer-Encoding","binary");
oRequest.setRequestHeader("Cache-Control","no-store, must-revalidate, post-check=0, pre-check=0', true");
oRequest.onreadystatechange = function() {
if( oRequest.readyState == 4 ) {
if (oRequest.status==200) {
document.write (oRequest.responseText);
}
}
}
oRequest.send(null)
</script>