The workaround is to convert the color names to HEX, for example through the following HexConverter() method:
ASPX:
<telerik:RadClientExportManager runat="server" ID="RadClientExportManager1">
</telerik:RadClientExportManager>
<telerik:RadButton ID="RadButton1" runat="server" OnClientClicked="exportRadHtmlChart" Text="Export RadHtmlChart to PDF" AutoPostBack="false" UseSubmitBehavior="false"></telerik:RadButton>
<telerik:RadHtmlChart ID="RadHtmlChart1" runat="server" Width="600" Height="400">
<PlotArea>
<Series>
<telerik:ColumnSeries Name="Series 1" DataFieldY="myValues" ColorField="Color">
</telerik:ColumnSeries>
</Series>
</PlotArea>
</telerik:RadHtmlChart>
<script>
var $ = $telerik.$;
function exportRadHtmlChart() {
$find('<%=RadClientExportManager1.ClientID%>').exportPDF($(".RadHtmlChart"));
}
</script>
C#:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = GetData();
for (int i = 0; i < dt.Rows.Count; i++)
{
//Not all Color Names can be exported
// dt.Rows[i]["Color"] = ColorTranslator.ToHtml(GetColor(i));
//Convert colors to HEX works properly
dt.Rows[i]["Color"] = HexConverter(GetColor(i));
}
RadHtmlChart1.DataSource = dt;
RadHtmlChart1.DataBind();
}
public static DataTable GetData()
{
DataTable dt = new DataTable("ChargeData");
dt.Columns.Add("myValues", typeof(int));
dt.Columns.Add("Color", typeof(string));
dt.Rows.Add(11, "");
dt.Rows.Add(12, "");
dt.Rows.Add(13, "");
dt.Rows.Add(14, "");
dt.Rows.Add(15, "");
dt.Rows.Add(16, "");
dt.Rows.Add(17, "");
dt.Rows.Add(18, "");
dt.Rows.Add(19, "");
dt.Rows.Add(20, "");
return dt;
}
public static String HexConverter(System.Drawing.Color c)
{
return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}
public static Color GetColor(int index)
{
return colors[index % colors.Length];
}
public static readonly Color[] colors =
{
Color.Orange,
Color.Violet,
Color.MediumSeaGreen,
Color.HotPink,
Color.Black,
Color.DarkGoldenrod,
Color.DarkMagenta,
Color.Chocolate,
Color.DarkOliveGreen,
Color.DarkTurquoise
};