홈>
보고서에 Google 차트를 사용하고 있습니다 ( https://developers.google.com/chart/ ) 아래 코드를 사용하여 이러한 html 파일의 PDF 파일을 생성 중입니다.
public FileResult DownloadReport(string viewName, string fileName, MpReportType type, int id = 0, DateRangeType? dateRangeType = null)
{
const string CONTAINER = "#reportContainer";
var model = GetModel(type, id, true, dateRangeType);
return DownloadReportInternal(viewName, fileName, model, CONTAINER);
}
private FileResult DownloadReportInternal(string viewName, string fileName, ReportGeneratorModel model, string container = "#reportContainer")
{
var htmlToConvert = GetHtmlFromView(viewName, model);
var hiddenElements = new string[] { ".reportHiddenElement" };
var pdfStream = ConvertHtmlToPdf(htmlToConvert, container, hiddenElements);
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[16 * 1024];
int read;
while ((read = pdfStream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
var pdfBytes = ms.ToArray();
FileResult fileResult = new FileContentResult(pdfBytes, "application/pdf");
fileResult.FileDownloadName = fileName;
return fileResult;
}
}
protected string RenderViewAsString(string viewName, object model)
{
StringWriter stringWriter = new StringWriter();
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null);
ViewContext viewContext = new ViewContext(
ControllerContext,
viewResult.View,
new ViewDataDictionary(model),
new TempDataDictionary(),
stringWriter);
viewResult.View.Render(viewContext, stringWriter);
return stringWriter.ToString();
}
조회에서 DownloadReport를 호출합니다.
이것은 차트 섹션을 포함하는 View의 일부입니다
<div class="ring-chart__chart" id="cumulativeExpenseSummaryChart"></div>
이것은 js에서 차트를 호출하는 기능입니다.
var drawCharts = function() {
@if (Model.ComprehensiveCashflowTrack.ExpensePieChart != null)
{
var chart = Model.ComprehensiveCashflowTrack.ExpensePieChart;
<text>
var data = google.visualization.arrayToDataTable([
['@chart.Name', '@chart.Description']
@foreach (var item in chart.Items)
{
<text>, ['@item.Name', @item.Value]</text>
}
]);
//DrawCashflowRingChart('Monthly Expense Summary', 'cumulativeExpenseSummaryChart', data);
drawNetCashflowPieChart('Monthly Expense Summary', 'cumulativeExpenseSummaryChart', data);
</text>
}
}
문제: 차트는 pdf 보고서에로드되지 않습니다.HTML 페이지에 올바르게 표시됩니다.
-
답변 # 1
관련 질문
- c# - 데이터베이스에 데이터를 삽입하지 못했습니다
- c# - mvc에서 다음 페이지로 이동하면 정렬이 손실됩니다
- c# - DropDownLists에 대한 유효성 검사 중단
- c# - net MVC에서 데이터베이스 날짜를 로컬 컴퓨터가 아닌 파일로 내보내고 이메일과 함께 파일 첨부로 보내는 방법이 있습니까?
- c# - 앵커 링크가 컨트롤러 방법으로 연결되지 않음
- c# - 부분보기 호출
- c# - foreach에있는 두 개의 다른 라디오 버튼이 하나로 작동합니다
- c# - Net MVC에서 캔버스 그리기 또는 이미지 파일 만들기
- c# - 모든 URL에서 기본 경로로 이동
- c# - 드롭 다운 목록으로 필터링하는 방법을 잃었습니다 ASPNET
Google 시각화로드 방식을 변경 한 후 일부 PDF에서 작동합니다. document.ready ()에 차트를로드하는 대신 다음과 같이하십시오 :
이것을 다음과 같이 변경했습니다 :
일부 pdf 파일에서 성공하지 못했기 때문에 답변으로 간주해서는 안됩니다.