Pregunta

¿Alguna información sobre cómo imprimir los gráficos generados en formato PDF? Se ven fabulosos en la pantalla, pero los usuarios finales desean imprimirlos y archivarlos según sea necesario.

¿Fue útil?

Solución

descargue los ejemplos de control de gráficos de MSDN. Hay varias muestras de cómo imprimir. Para obtener PDF, necesita un controlador de impresión PDF.

http://code.msdn.microsoft.com /mschart/Release/ProjectReleases.aspx?ReleaseId=1591

busque en \ WinSamples \ ChartFeatures \ Printing \

la forma más simple es:

using System.Windows.Forms.DataVisualization.Charting;
...

// Show Page Setup dialog
chart1.Printing.PageSetup();

// Print preview chart
chart1.Printing.PrintPreview();

// Print chart (without Printer dialog)
chart1.Printing.Print(false);

...

Otros consejos

Estaba buscando una manera de hacer esto y encontré esta respuesta para winforms

Esta es la forma en que obtuve el asp: gráfico para imprimir

Agregar javascript en la página web:

<script type="text/javascript" language="javascript">
    function printChart() {

    var html = '<HTML>\n<HEAD>\n';
    html += '<link rel="stylesheet" type="text/css" href="../../../Styles/print.css" media="print"> \n';

    html += '\n</HEAD>\n<BODY>\n';
    html += '\n<div>';

    var printReadyElement = document.getElementById("printChart");

    if (printReadyElement != null) {
        html += printReadyElement.innerHTML;
    }
    else {
        alert("Trouble printing Chart");
        return;
    }

    html += '\n</div>';

    html += '\n</BODY>\n</HTML>';

    var printWin = window.open("", "printSpecial");
    printWin.document.open();
    printWin.document.write(html);
    printWin.document.close();

    printWin.print();

}

esto está vinculado a un botón de entrada

<input type="button" value="Print" onclick="printChart()" style="width:99px; height:26px;" />

El siguiente paso fue agregar elementos a web.config

<appSettings> 
   <add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=false;" />
</appSettings>

Bajo la etiqueta system.web

    <httpHandlers>      
        <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
    </httpHandlers>

En el system.webServer

<handlers>
  <remove name="ChartImageHandler">
  <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>

Entonces estaba teniendo el mismo problema cuando usaba la función JavaScript PrintPage (); Imprimiría la página web, pero no incluiría controles de gráficos asp.net. Podrías ver el borde del gráfico pero no los datos. Entonces, lo que hice para solucionar este problema fue mover el botón que estaba siendo utilizado para llamar a mi función printPage () fuera del updatePanel y funcionó.

Espero que esto ayude a alguien.

<asp:Button runat="server" ID="btnPrint" OnClick="btnPrint_Click" CssClass="Floater" Text="Print Customer Report" Visible="True" />

<script>
    function PrintPage() {

        window.print();
    }
</script>

protected void btnPrint_Click(object sender, EventArgs e)
    { 
        ScriptManager.RegisterStartupScript(Page, GetType(), "JsStatus", "PrintPage();", true);
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top