인터넷 익스플로러를 사용하여 PDF 파일 콘텐츠를 다운로드하려고합니다 (C#으로 작성된 스크랩 응용 프로그램 및 WatIn 라이브러리 사용). 파일을 다운로드하려는 웹 사이트에서 보안 쿠키로 인증을 사용하므로 쿠키를 가져오고 HTTPClient
을 사용하여 파일을 다운로드 할 수 없습니다. 그래서 Javascript에서 파일 콘텐츠를 가져와야합니다. 그 일을 처리했지만 IE10 +에서만 작동합니다. 여기 내가 사용하는 코드는 다음과 같습니다자바 스크립트로 PDF 파일 내용 다운로드
(function() {
try {
var a = new Uint8Array(1);
return;
} catch (e) {}
function subarray(start, end) {
return this.slice(start, end);
}
function set_(array, offset) {
if (arguments.length < 2) offset = 0;
for (var i = 0, n = array.length; i < n; ++i, ++offset) this[offset] = array[i] & 0xFF;
}
function TypedArray(arg1) {
var result;
if (typeof arg1 === 'number') {
result = new Array(arg1);
for (var i = 0; i < arg1; ++i) result[i] = 0;
} else result = arg1.slice(0);
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
result.set = set_;
if (typeof arg1 === 'object' && arg1.buffer) result.buffer = arg1.buffer;
return result;
}
window.Uint8Array = TypedArray;
window.Uint32Array = TypedArray;
window.Int32Array = TypedArray;
})();
function _arrayBufferToBase64(buffer) {
var binary = '';
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
var callFinished = false;
var callPDFResult = '';
var xhr = new XMLHttpRequest();
xhr.open('GET', 'fileUrl', true);
if ('responseType' in xhr) {
xhr.responseType = 'arraybuffer';
} else if ('overrideMimeType' in xhr) {
xhr.overrideMimeType('text/plain; charset=x-user-defined');
} else {
xhr.setRequestHeader('Accept-Charset', 'x-user-defined');
}
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
callFinished = true;
callPDFResult = _arrayBufferToBase64(xhr.response);
}
};
xhr.send(null);
이 코드의 문제는 그것이 IE9 및 이전 버전에서는 작동하지 않습니다. 당신이 XHR에서 볼 수 있듯이 https://github.com/Stuk/jszip-utils
: 나는 IE8 및 IE9 적어도 내가 알고있는 것처럼
무엇이 당신의 질문입니까? –
IE9가 정말로 필요합니까? –
@ PalleDue IE9에서 코드가 작동하지 않습니다. – Kira