Usuário com melhor resposta
Gerar PDF Chart ou img MVC4 C#

Pergunta
-
Eu usei o Rotativa W7 para gerar relatorio PDF, mas se preciso neste PDF de img ou chart do google as imagens não aparecem. Alguém tem alguma sugestão?
- Editado Wilson Boris segunda-feira, 31 de março de 2014 12:01 erro
Respostas
-
Agora sim:
CÓDIGO COMPLETO
......index <a href="/AARH/ImprimirExameAARH">Gerar pdf</a> ________________________________________ ....controller public ActionResult ImprimirExameAARH() { ViewAsPdf pdf = new ViewAsPdf(); pdf.ViewName = "ImprimirExameAARH"; ViewBag.Data = GerandoDados(); return pdf; } ___________________________________________ .....controler private string GerandoDados() { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Sexo, Ag_Pol_C_Pessoa_Sexo.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}']", "Sexo", "Numero"); foreach (var item in query.ToArray()) { str.AppendFormat(",['{0}',{1}]", item.Sexo, item.Numero); } string teste = str.ToString(); return str.ToString(); } ______________________________________ ......ImprimirExameAARH.cshtml @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/jqueryui") <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
- Editado Wilson Boris quarta-feira, 2 de abril de 2014 01:12 COMPLEMENTO
- Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:13
-
Fúlvio, desculpe-me, mas eu não sei como gerar os dados partindo da minha consulta.
public String ExameAARH(int id = 0) { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Genero, Ag_Pol_C_Pessoa_Genero.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo"); foreach (var item in query.ToArray()) { str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo); } return str.ToString(); }
Crie um metodo assim que gerará a string assim:
[["Numero":13,"Sexo":"Ignorado "],["Numero":1419,"Sexo":"Masculino "],["Numero":1220,"Sexo":"Feminino "]]
Crie um ActionView no controller
public ActionResult AbrirPDF() { ViewBag.Data = ExameAARH(1); return View(); }
E uma view com o mesmo nome da action (AbrirPDF)
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> <script src="/Scripts/jquery-1.8.2.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
Bom espero que tenha ajudado!
- Editado Fulvio Cezar Canducci Dias segunda-feira, 31 de março de 2014 23:50
- Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:03
-
//Ta assim
function drawChart() { var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado '],[1419,'Masculino '],[1220,'Feminino ']]); data.addColumn('string', 'Sexo'); data.addColumn('number', 'Numero'); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } //troque por essa e retire data.AddColumn function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); }
- Marcado como Resposta Wilson Boris terça-feira, 1 de abril de 2014 19:19
Todas as Respostas
-
Eu fiz uma codificação de exemplo, com o exemplo padrão do Google:
@model IEnumerable<MvcApplication4PDF.Models.Pessoa> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Task', 'Hours per Day'], ['Work', 11], ['Eat', 2], ['Commute', 2], ['Watch TV', 2], ['Sleep', 7] ]); var options = { title: 'My Daily Activities' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <table border="0" width="100%"> <tr> <td width="20%" style="width:20%; text-align:center">Código</td> <td width="80%" style="width:80%; text-align:center">Nome</td> </tr> @foreach (MvcApplication4PDF.Models.Pessoa pessoa in Model) { <tr> <td width="20%" style="width:20%; text-align:center">@String.Format("{0:00000}", pessoa.Id)</td> <td width="80%" style="width:80%; text-align:left">@pessoa.Nome</td> </tr> } </table> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
Com seguinte ActionResult do Controller Home utilizado Rotativa:
public ActionResult PdfView() { ViewAsPdf pdf = new ViewAsPdf(); pdf.Model = new List<Pessoa>(){ new Pessoa(){ Id = 1, Nome = "Pessoa 1"}, new Pessoa(){ Id = 2, Nome = "Pessoa 2"}, new Pessoa(){ Id = 3, Nome = "Pessoa 3"} }; pdf.ViewName = "PdfView"; return pdf; }
e obtive esse resultado:
No meu caso funcionou certinho, será que poderíamos ver seu código ou então alguma coisa que ache pertinente no seu código para mostrar ???
-
Sem dúvida, o código:
Controller:
public ActionResult ExameAARH(int id = 0) { OJ_Prod_AARH aarh = db.OJ_Prod_AARH.Find(id); if (aarh == null) { return HttpNotFound(); } var PDF = new ViewAsPdf("ExameAARH", aarh); return PDF; }
View:
@{ ViewBag.Title = "ImprimirExameAARH"; Layout = "~/Views/Shared/_LayoutInterno.cshtml"; } <legend>EXAME LABORATORIAL - RAIVA ANIMAL</legend> <div><a><img class="img-responsive" src="../../Imagem/Logo/Brasao.jpg" width=" 100" height="100" /></a></div> <br /> <div> NÚM. AMOSTRA <input class="text" /> </div>
PDF: Img: Brasao.jpg ?
-
Sem dúvida, o código:
Controller:
public ActionResult ExameAARH(int id = 0) { OJ_Prod_AARH aarh = db.OJ_Prod_AARH.Find(id); if (aarh == null) { return HttpNotFound(); } var PDF = new ViewAsPdf("ExameAARH", aarh); return PDF; }
View:
@{ ViewBag.Title = "ImprimirExameAARH"; Layout = "~/Views/Shared/_LayoutInterno.cshtml"; } <legend>EXAME LABORATORIAL - RAIVA ANIMAL</legend> <div><a><img class="img-responsive" src="../../Imagem/Logo/Brasao.jpg" width=" 100" height="100" /></a></div> <br /> <div> NÚM. AMOSTRA <input class="text" /> </div>
PDF: Img: Brasao.jpg ?
Fiz aqui e gerou corretamentamente com imagem que está no projeto!
faz o seguinte tire o class="img-responsive" para ver se muda algo!!!
-
-
Bom quando é por ajax tem esse problema,
eu contorno o problema gerando a informação e enviando via ViewBag ... Assim:
public ActionResult PdfView() { ViewAsPdf pdf = new ViewAsPdf(); pdf.Model = new List<Pessoa>(){ new Pessoa(){ Id = 1, Nome = "Pessoa 1"}, new Pessoa(){ Id = 2, Nome = "Pessoa 2"}, new Pessoa(){ Id = 3, Nome = "Pessoa 3"} }; pdf.ViewName = "PdfView"; ViewBag.Data = GerandoDados(); return pdf; } private string GerandoDados() { StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}'],", "Mês","Total"); str.AppendFormat("['{0}',{1}],", "Janeiro","100"); str.AppendFormat("['{0}',{1}],", "Marco","90"); str.AppendFormat("['{0}',{1}],", "Abril", "190"); str.AppendFormat("['{0}',{1}],", "Maio", "45"); str.AppendFormat("['{0}',{1}],", "Junho", "49"); str.AppendFormat("['{0}',{1}],", "Julho", "90"); str.AppendFormat("['{0}',{1}],", "Agosto", "45"); str.AppendFormat("['{0}',{1}],", "Setembro", "125"); str.AppendFormat("['{0}',{1}],", "Outubro", "175"); str.AppendFormat("['{0}',{1}],", "Novembro", "60"); str.AppendFormat("['{0}',{1}]", "Dezembro", "200"); return str.ToString(); }
View:
@model IEnumerable<MvcApplication4PDF.Models.Pessoa> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> <script src="/Scripts/jquery-1.8.2.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <table border="0" style="width:100%"> <tr> <td width="20%" style="width:20%; text-align:center">Código</td> <td width="80%" style="width:80%; text-align:center">Nome</td> </tr> @foreach (MvcApplication4PDF.Models.Pessoa pessoa in Model) { <tr> <td width="20%" style="width:20%; text-align:center">@String.Format("{0:00000}", pessoa.Id)</td> <td width="80%" style="width:80%; text-align:left">@pessoa.Nome</td> </tr> } </table> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
Resultado:
Ou seja, eu gero os dados e envio para a View como ViewBag direto para a página no Js do Google
var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
Se precisar de algo tamos ai
-
Fúlvio,
eu tentei com o código abaixo, mas retorna:
[{"Numero":13,"Sexo":"Ignorado "},{"Numero":1419,"Sexo":"Masculino "},{"Numero":1220,"Sexo":"Feminino "}]
public ActionResult ExameAARH(int id = 0) { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Genero, Ag_Pol_C_Pessoa_Genero.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null), Sexo = g.Key.descricao }; var l = query.ToArray(); ViewBag.lista = l; return Json(l, JsonRequestBehavior.AllowGet); } function drawChart() { $.get('/AARH/ExameAARH', {}, function (data) { var tdata = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.lista + "]")); tdata.addColumn('string', 'Genero'); tdata.addColumn('number', 'Numero'); console.log(data); for (var i = 0; i < data.length; i++) { tdata.addRow([data[i].Genero, data[i].Numero]); } var options = { title: "...." }; var chart = new google.visualization.PieChart(document.getElementById('pizza')); chart.draw(tdata, options); }); } </script> <div id="pizza" style="width: 900px; height: 500px;"></div>
-
Wilson Boris,
Não pode ser ajax pelo que eu fiz vários testes!
tem que ser do jeito do meu exemplo
e dá uma olhada nesse item ele que gera os dados!
private string GerandoDados() { StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}'],", "Mês","Total"); str.AppendFormat("['{0}',{1}],", "Janeiro","100"); str.AppendFormat("['{0}',{1}],", "Marco","90"); str.AppendFormat("['{0}',{1}],", "Abril", "190"); str.AppendFormat("['{0}',{1}],", "Maio", "45"); str.AppendFormat("['{0}',{1}],", "Junho", "49"); str.AppendFormat("['{0}',{1}],", "Julho", "90"); str.AppendFormat("['{0}',{1}],", "Agosto", "45"); str.AppendFormat("['{0}',{1}],", "Setembro", "125"); str.AppendFormat("['{0}',{1}],", "Outubro", "175"); str.AppendFormat("['{0}',{1}],", "Novembro", "60"); str.AppendFormat("['{0}',{1}]", "Dezembro", "200"); return str.ToString(); }
ficaria a string assim [['Novembro', 60], ['Dezembro', 200]] !!!
Ou seja carregou a página o dado tem que está lá!!!
- Editado Fulvio Cezar Canducci Dias segunda-feira, 31 de março de 2014 22:20
-
-
Fúlvio, desculpe-me, mas eu não sei como gerar os dados partindo da minha consulta.
public String ExameAARH(int id = 0) { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Genero, Ag_Pol_C_Pessoa_Genero.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo"); foreach (var item in query.ToArray()) { str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo); } return str.ToString(); }
Crie um metodo assim que gerará a string assim:
[["Numero":13,"Sexo":"Ignorado "],["Numero":1419,"Sexo":"Masculino "],["Numero":1220,"Sexo":"Feminino "]]
Crie um ActionView no controller
public ActionResult AbrirPDF() { ViewBag.Data = ExameAARH(1); return View(); }
E uma view com o mesmo nome da action (AbrirPDF)
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> <script src="/Scripts/jquery-1.8.2.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
Bom espero que tenha ajudado!
- Editado Fulvio Cezar Canducci Dias segunda-feira, 31 de março de 2014 23:50
- Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:03
-
Com certeza está ajudando Fúlvio,
esta retornando com erro na linha abaixo:
var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
Não é possível fazer associação em tempo de execução em uma referência nula
Fazendo o BreakPoint:
O Erro:
-
Com certeza está ajudando Fúlvio,
esta retornando com erro na linha abaixo:
var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
Não é possível fazer associação em tempo de execução em uma referência nula
Fazendo o BreakPoint:
O Erro:
-
public ActionResult ExameAARH() { ViewBag.Data = GerandoDados(); return View(); } private string GerandoDados() { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Sexo, Ag_Pol_C_Pessoa_Sexo.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo"); foreach (var item in query.ToArray()) { str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo); } return str.ToString(); }
- Editado Wilson Boris terça-feira, 1 de abril de 2014 14:22 erro
-
public ActionResult ImprimirExameAARH() { ViewBag.Data = GerandoDados(); return View(); } private string GerandoDados() { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Sexo, Ag_Pol_C_Pessoa_Sexo.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}']", "Numero", "Sexo"); foreach (var item in query.ToArray()) { str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo); } return str.ToString(); }
Tinha na rotina anterior um virgula a mais então use essa de cima!
Na imagem eu coloquei um flecha !!! então mande abre o dado da Key ? e envei a imagem novamente
-
-
-
Abaixo o retorno:
:
F12:
GET http://localhost:55160/Scripts/jquery-1.8.2.js 404 (Not Found)
Alterando para:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")Mas ainda não rolou...
- Editado Wilson Boris terça-feira, 1 de abril de 2014 15:03 complemento
-
-
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> <script src="/Scripts/jquery-2.1.0.js"></script> <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> <script src="/Scripts/jquery.validate.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.js"></script> <script src="/Scripts/methods_pt.js"></script> <script src="/Scripts/jquery-ui-1.10.4.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado '],[1419,'Masculino '],[1220,'Feminino ']]); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> <!-- Visual Studio Browser Link --> <script type="application/json" id="__browserLink_initializationData"> {"appName":"Chrome","requestId":"1658f528c6dc413393b3ce33744dba20"} </script> <script type="text/javascript" src="http://localhost:49499/bbdca76be33e4f918e44b8617a6cccaf/browserLink" async="async"></script> <!-- End Browser Link --> </body>
- Editado Wilson Boris terça-feira, 1 de abril de 2014 15:07 correção
-
//Ta assim
function drawChart() { var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado '],[1419,'Masculino '],[1220,'Feminino ']]); data.addColumn('string', 'Sexo'); data.addColumn('number', 'Numero'); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } //troque por essa e retire data.AddColumn function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); }
- Marcado como Resposta Wilson Boris terça-feira, 1 de abril de 2014 19:19
-
-
Ok, alterado
mas ainda não foi...
Complicado ... foram feitas mas, eu estava observando isso!
F12:
GET http://localhost:55160/Scripts/jquery-1.8.2.js 404 (Not Found)
Verifique seu código certinho, verifique todas as entradas JS no seu código!
-
Opa, saiu o Gráfico, porém não gera o PDF com Rotativa W7, código abaixo, com o erro: "Table has no columns"
public ActionResult ImprimirExameAARH()
{
var PDF = new ViewAsPdf("ExameAARH");
return PDF;
}<a href="/AARH/ImprimirExameAARH">Imprimir</a>
-
DE:
<package id="RotativaW7" version="1.5.4" targetFramework="net40" />
PARA:
<package id="Rotativa" version="1.6.1" targetFramework="net40" />
SEM SOLUÇÃO!
- Editado Wilson Boris quarta-feira, 2 de abril de 2014 00:39 ERRO
-
Agora sim:
CÓDIGO COMPLETO
......index <a href="/AARH/ImprimirExameAARH">Gerar pdf</a> ________________________________________ ....controller public ActionResult ImprimirExameAARH() { ViewAsPdf pdf = new ViewAsPdf(); pdf.ViewName = "ImprimirExameAARH"; ViewBag.Data = GerandoDados(); return pdf; } ___________________________________________ .....controler private string GerandoDados() { var query = from OJ_Prod_AARH in db.OJ_Prod_AARH from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo from Ag_Soc_PF in db.Ag_Soc_PF where Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo && OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id group OJ_Prod_AARH by new { Ag_Soc_PF.cod_PF_Sexo, Ag_Pol_C_Pessoa_Sexo.descricao } into g select new { Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null), Sexo = g.Key.descricao }; StringBuilder str = new StringBuilder(); str.AppendFormat("['{0}','{1}']", "Sexo", "Numero"); foreach (var item in query.ToArray()) { str.AppendFormat(",['{0}',{1}]", item.Sexo, item.Numero); } string teste = str.ToString(); return str.ToString(); } ______________________________________ ......ImprimirExameAARH.cshtml @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>PdfView</title> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/jqueryui") <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
- Editado Wilson Boris quarta-feira, 2 de abril de 2014 01:12 COMPLEMENTO
- Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:13