Не могу показать мульти PDF-файл в Google Chrome - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть веб-сайт, он имеет функцию для открытия нескольких вкладок в браузере (Google Chrome).При нажатии на клиент вызывается служба для обработки и отправка pdf-файла обратно клиенту для отображения на вкладке браузера.Проблема в том, что он отображается только в нескольких вкладках из открытых вкладок.Например, на 6 вкладках он будет отображаться на вкладке 1,2,6 (я вижу вкладку 1, и всегда отображается последняя вкладка).Я посмотрел на вкладку сети и все 6 запросов были успешно обработаны и возвращены клиенту.

Это мой клиентский код для обработки файла, возвращенного из службы

openReportGet: function (_ctn,_code,_type,_par_ar, isPrintDirect, isCountPrt) {
    var par_data=JSON.stringify(_par_ar);
    var par_str=window.btoa(unescape(encodeURIComponent(par_data)));    
    var uuid = jsonrpc.AjaxJson.getUUID();
    var _url="../report/directReport.jsp?code="+ _code+"&filetype="+_type+"&reportParam="+ par_str+"&uuid=" + uuid;
    console.log('openReport._url='+_url);       
    $.ajax({
          url: _url,
          type: "GET",
          dataType: 'binary',
          success: function(result) {
            //called when successful
              if(_ctn=='window') { 
                    directReport(result, _code, par_str, par_data, null, isPrintDirect, isCountPrt);                   
                }
                else {
                    document.getElementById(_ctn).src = _blobUrl;
                }

          }
        });
    }

function directReport(result, rptCode, rptParam, rptJsonParam, idFrame, isPrintDirect, isCountPrt) {
    if(CommonUtil.fileURL) {
        console.log('revokeObjectURL='+CommonUtil.fileURL);
            URL.revokeObjectURL(CommonUtil.fileURL);
        }
    else {
        console.log('NOT revokeObjectURL');
    }   
    directNotUrlReport(result, rptCode, rptParam, rptJsonParam, idFrame, isPrintDirect, isCountPrt);
}


function directNotUrlReport(result, rptCode, rptParam, rptJsonParam, idIframe, isPrintDirect, isCountPrt) {
    var _blobUrl = URL.createObjectURL(new Blob([result], {type : 'application/pdf'}));
    CommonUtil.fileURL = _blobUrl;
    if (isPrintDirect == undefined || isPrintDirect == null) {
        window.open(_blobUrl, '_blank');
        return;
    }
    var bu = new BrowserUtil(); 
    var dbrowser = bu.detectBrowser();  

    if (dbrowser.isChrome) {
        if (isPrintDirect) {
            var iframe;
            if (idIframe != undefined && idIframe != null && idIframe != '') {
                iframe = document.getElementById(idIframe);
                 if (!iframe) {
                    iframe = document.createElement('iframe');              
                    iframe.setAttribute("id", idIframe);
                 }
            } else {
                iframe = document.createElement('iframe');
            }

            document.body.appendChild(iframe );     

            iframe.style.display = 'none';
            iframe.onload = function() {
                setTimeout(function() {
                    iframe.focus();
                    iframe.contentWindow.print();
                }, 1);
            };
            iframe.src = _blobUrl;
            }
      }
}

Не могудумать о причине еще, надеюсь, что все помогут

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...