public byte[] CreateDocument(object docObj) { PdfDocumentDto doc = (PdfDocumentDto)docObj; var reportDto = doc.ReportDto; var contacts = doc.Contacts; CountryInSettings = reportDto.Country; _translator = Startup.GetTranslation; _document = new Document { Info = { Title = reportDto.Name } }; var cosCount = GetColCount(reportDto.Criteria); DefineStyles(); if (reportDto.AdditionalPreferences.ExportType == "table") { colsRows = 0; CreateTablePage(reportDto.Criteria, cosCount); if (reportDto.Criteria.Columns.Any(r => (int)r.Column >= 9 && (int)r.Column <= 13 && r.IsChecked) && !string.Equals(reportDto.Criteria.GroupBy, "None", StringComparison.InvariantCultureIgnoreCase)) { FillGrouped(cosCount, GroupBy(contacts, reportDto.Criteria), reportDto.Criteria); } else { FillContent(contacts, reportDto.Criteria); } AddBottom(GetTranslation("contact_report_summary"), GetTranslation("contact_number_addresses"), colsRows); } if (reportDto.AdditionalPreferences.ExportType == "labels") { CreateLabelPage(); FillLabelRows(reportDto.Criteria, contacts); } if (reportDto.AdditionalPreferences.ExportType == "envelopes") { return(FillEnvelops(contacts, reportDto.AdditionalPreferences.CustomAddress, reportDto.Criteria)); } PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true); pdfRenderer.Document = _document; pdfRenderer.RenderDocument(); using (MemoryStream ms = new MemoryStream()) { pdfRenderer.Save(ms, false); byte[] buffer = new byte[ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Flush(); ms.Read(buffer, 0, (int)ms.Length); ms.Close(); return(buffer); } }
private async Task <bool> GenerateReport(string qRepName, QueueObject obj) { var reportData = (BaseFilterReportRequest)obj.FilterDataObj; var resp = new UploadPdfReportDto { PdfReportId = reportData.PdfReportId, Schema = reportData.Schema, Key = reportData.Key, Status = PDFReportStatus.Ready }; try { PdfDocumentDto pdfDoc; BaseFilterReportRequest req; switch (obj.Executor.Method.Name) { case "GetContactPdf": req = (BaseFilterReportRequest)obj.FilterDataObj; resp.PdfByteArr = obj.Executor.Invoke(req.ReportDto); break; case "GetTransactionPdf": req = (BaseFilterReportRequest)obj.FilterDataObj; resp.PdfByteArr = obj.Executor.Invoke(req.Filter); break; case "CreateContactReportPDf": var reqContPdf = (ContactReportPdfOnlyRequest)obj.FilterDataObj; pdfDoc = new PdfDocumentDto { ReportDto = reqContPdf.ReportDto, Contacts = reqContPdf.Contacts }; resp.PdfByteArr = obj.Executor.Invoke(pdfDoc); break; case "CreateTransactionReportPDf": var reqTransPdf = (TransactionReportPdfOnlyRequest)obj.FilterDataObj; pdfDoc = new PdfDocumentDto { Filter = reqTransPdf.Filter, Grouped = reqTransPdf.Grouped, CountTrans = reqTransPdf.TransactionCount }; resp.PdfByteArr = obj.Executor.Invoke(pdfDoc); break; default: throw new MissingMethodException("can't get correct method for delegate"); } } catch (Exception e) { resp.Status = PDFReportStatus.GenerationError; resp.Message = e.Message; resp.StackTrace = e.StackTrace; isWorking = false; } AddToSending(resp); if (!isSending && _sendingDict.Any()) { await SendReport(); } return(true); }
/// <summary> /// Initializate collections in case if we need name of one of them /// </summary> /// <param name="transFunc">Use delegate for translation method wich work with localResource file</param> /// <param name="paymentMethods"></param> /// <param name="solicitors"></param> /// <param name="mailings"></param> /// <param name="departments"></param> /// <param name="categoryTree"></param> public byte[] CreateDocument(object docObj) { PdfDocumentDto doc = (PdfDocumentDto)docObj; var filter = doc.Filter; var countTrans = doc.CountTrans; var grouped = doc.Grouped; // Create a new MigraDoc document _document = new Document { Info = { Title = filter.Name } }; DefineStyles(); if (filter.view == TransFilterView.Details) { var colsCount = CreatePage(filter, countTrans); if (string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase)) { FillContent(colsCount, grouped.GroupedObj, filter); } else { FillGroupedContent(colsCount, grouped.GroupedObj, filter); } } if (filter.view == TransFilterView.Total) { if (string.Equals(filter.totalOnlyBy, "totalOnly", StringComparison.InvariantCultureIgnoreCase)) { CreatePage(filter, countTrans); if (string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase)) { FillTotalContent(grouped, filter); } if (!string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase)) { FillSubGroupedTotalContent(grouped, filter); } } else { if (filter.ReportType == TransFilterType.Payment) { FillMatrixRows((MatrixDTO)grouped, filter, countTrans); } } } // FillContent(colsCount); PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true); pdfRenderer.Document = _document; pdfRenderer.RenderDocument(); using (MemoryStream ms = new MemoryStream()) { pdfRenderer.Save(ms, false); byte[] buffer = new byte[ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Flush(); ms.Read(buffer, 0, (int)ms.Length); ms.Close(); return(buffer); } }