我正在尝试在打印时更改 RadHtmlChart 的方向。这是我正在使用的代码,基本上,它获取图表的图像并将其放在另一个窗口中进行打印。它正在工作,但我需要将方向更改为横向,而用户无需更改其设置。我读到使用 JavaScript 和 CSS 已经不可能了,另一种方法是导出为 PDF。
<script type="text/javascript">
function PrintPage() {
var printContent = document.getElementById("divChart");
var WinPrint = window.open('', '', 'left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0);
WinPrint.document.write(printContent.innerHTML);
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
WinPrint.close();
};
</script>
我已经关注了如何在 Telerik 中执行此操作的演示,但我收到了一个 JavaScript 错误:
$Telerik' not defined
我在 Telerik 上查找了此错误,并找到了有关一般故障排除的文档。我按照指示(将 Telerik 的 DLL 版本输入 Telerik.Web.UI.axd 处理程序),这导致找不到我的程序组件(RadGrid 等)。
是否有将 RadHtmlChart 导出为 PDF 的替代方法?实际上,图表甚至不必导出为 PDF,我只需要一种以横向打印表单的方法,而无需用户选择方向。
谁能帮我?
编辑
我能够更正 $telerik 错误并导出 PDF 文件,但它已损坏并且没有显示任何数据。我无法找到解决这个特定问题的方法,但我找到了另一种导出适合我需要的 RadHtmlChart 的方法。我将在下面为遇到这些问题的任何人发布我的代码。注意:此解决方案使用 Telerik 组件,并且必须包装在 RadCodeBlock 中。我想导出“divChart”中的所有内容,并且必须使用“#divChart”而不是“.divChart”。
<telerik:RadCodeBlock runat="server">
<script type="text/javascript">
var $ = $telerik.$;
function exportChartImage() {
$find('<%=RadClientExportManager1.ClientID %>').exportImage($("#divChart"));
};
</script>
</telerik:RadCodeBlock>
下一部分进入您的主要内容。我把它直接放在包含我的内容的 div 标签下面。注意:如果不设置高度/宽度,图像会失真和变小!
<telerik:RadClientExportManager runat="server" ID="RadClientExportManager1">
<ImageSettings Height="900px" Width="950px" FileName="Chart.png" />
</telerik:RadClientExportManager>
这将进入页面加载事件中的代码后面。
Dim relativePath = "~/api/export/file"
RadClientExportManager1.ImageSettings.ProxyUrl = ResolveUrl(relativePath)
现在,图表或我相信的任何其他 Telerik 组件都将导出为图像,并且在打印时处于横向!
编辑 2
此解决方案仅适用于现代浏览器!我在 IE10 上对此进行了测试,它还输出了正确格式的图像。