надеюсь, что это может помочь другим, я нашел что-то вроде хака / обходного пути, используя jquery
function MyFunction(someprams) {
if (navigator.userAgent.indexOf("x64") == -1) {
window.open("yourpage2.aspx?PramName=PramVal, 'winowname', 'window opions here')
} else {
$.get("yourpage1.aspx", { PramName1: PramVal1, PramName1: PramVal1 },
function(data) {
$('#divid').html(data);
});
}
}
, поэтому просто добавьте div на страницу:
yourpage1 это страница, чтовызывает и транслирует pdf и устанавливает заголовки кэша
, затем yourpage2 является страницей aspx, на которой есть ифрам, который я динамически устанавливаю src: iframeid.Attributes.Add ("src", "yourpage1.aspx?"pram1 =" & Request.QueryString ("PramVal1")) обратите внимание на то, что ifram нужен запуск на серверном теге, так как вы, вероятно, хотите, чтобы он загружал высоту ifram 100%, что вы можете сделать css:
html { height: 100%;}
body { height: 100%;}
html:
<iframe id="iframeid" runat="server" scrolling="no" marginwidth="0" marginheight="0"
frameborder="0" vspace="0" hspace="0" style="overflow: visible; width: 100%;
height: 100%;"></iframe>
что это за доза, если пользователь является 32-битным IE, тогда откроется новое окно, в котором будет показан pdf (фактически в кадре, но вы не можете сказать) или если это IE 64затем вообще пропустите использование окна и загрузите страницу, которая передает pdf-файл прямо на нашу страницу, что заставляет Adobe-PDF открываться не в окне браузера, а непосредственно как PDF-файл, так что в целом все работает и выглядит хорошо как в 64, так и в 32 IE.
я нашел потоковые ридеры cвозникающие проблемы, но это хорошо работает,
Dim oWebClient As System.Net.WebClient = Nothing
Dim data() As Byte
try
oWebClient = New System.Net.WebClient
data = oWebClient.DownloadData(pdfurl)
//add Response.AddHeader stuff here e.g.
Response.AddHeader("Content-Length", data.Length.ToString)
Response.BinaryWrite(data)