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吗?或者可以通过其他方式调用打印成功。
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
您好,这个我们研究一下
没结果吗? 您好,您这边F12 控制台输出请求的错误是什么,端口映射建议在 Web Config文件做好端口号配置
张亮xta 发表于 2021-12-29 17:18
内网端口是IIS配置的端口,外网端口是映射的,在外网打开报表系统的时候,内网地址是被外网替换掉的,但 ...
内外网端口号是不一样的,导致实际访问地址是错误 赞一个:hjyzw:
页:
[1]