张亮xta 发表于 2021-12-24 17:48:03

ActiveReports9,因外网映射端口不一致导致调取接口失败

ActiveReports9,使用GetViewModel获得了viewModel,因为外网映射端口和内网端口不一致,导致调取报表的接口因端口号错误而失败。方法如下:

var viewModel = GetViewModel('WebViewer1');
if (viewModel.PageLoaded()) {
    viewModel.Print();
}



导出通过修改url,可以成功调用,方法如下:
var viewModel = GetViewModel('WebViewer1');
if (viewModel.PageLoaded()) {
viewModel.Export(ExportType.Xls, function (uri) {
   var url = window.location.origin;
   if (uri.indexOf(url) == -1) {
      uri = url + "/ActiveReports.ar9?" + uri.split('/ActiveReports.ar9?');
   }
    window.location = uri;
}, true, { FileName: "报表.xls" });
}


求教各位大神,打印有相似的办法处理url吗?或者可以通过其他方式调用打印成功。

张亮xta 发表于 2021-12-24 17:48:04

James.Lv 发表于 2021-12-29 10:19
您好,您这边F12 控制台输出请求的错误是什么,端口映射建议在 Web Config文件做好端口号配置

内网端口是IIS配置的端口,外网端口是映射的,在外网打开报表系统的时候,内网地址是被外网替换掉的,但是端口未替换,我一直没找到是哪里替换掉地址的。
不过现在问题暂时已经解决了,打印方法实际调用的是一个exportImpl 方法,这个方法可以替换uri;
用这个方法替换掉Print方法就可以了。
viewModel.exportImpl(ExportType.Pdf, { PrintOnOpen: true }, function (uri) {
                  var url = window.location.origin;
                  if (uri.indexOf(url) == -1) {
                      uri = url + "/ActiveReports.ar9?" + uri.split('/ActiveReports.ar9?');
                  }
                  var printFrameId = 'WebViewer1_printFrame';
                  var iframe = document.getElementById(printFrameId);
                  if (!iframe) {
                      iframe = document.createElement('iframe');
                      iframe.style['width'] = '1px';
                      iframe.style['height'] = '1px';
                      iframe.style['visibility'] = 'hidden';
                      iframe.style['position'] = 'fixed';
                      iframe.style['left'] = '0';
                      iframe.style['top'] = '0';
                      document.body.appendChild(iframe);
                  }
                  iframe.src = uri;
            });

James.Lv 发表于 2021-12-24 19:32:10

您好,这个我们研究一下

张亮xta 发表于 2021-12-29 09:14:09

James.Lv 发表于 2021-12-24 19:32
您好,这个我们研究一下

没结果吗?

James.Lv 发表于 2021-12-29 10:19:06

您好,您这边F12 控制台输出请求的错误是什么,端口映射建议在 Web Config文件做好端口号配置

张亮xta 发表于 2021-12-29 17:20:08

张亮xta 发表于 2021-12-29 17:18
内网端口是IIS配置的端口,外网端口是映射的,在外网打开报表系统的时候,内网地址是被外网替换掉的,但 ...

内外网端口号是不一样的,导致实际访问地址是错误

James.Lv 发表于 2021-12-29 18:09:05

赞一个:hjyzw:
页: [1]
查看完整版本: ActiveReports9,因外网映射端口不一致导致调取接口失败