Создание PDF с помощью Telerik Reporting с .NET Core - PullRequest
1 голос
/ 12 октября 2019

В настоящее время мы хотим реализовать генератор PDF с отчетами Telerik.

Мы хотели бы создать PDF-файл с собственным шаблоном конструктора и предоставить ему модель данных.

следующий код показывает маршрут, который будет экспортировать файл PDF с шаблоном: "translation.trdp" (см. вложение).

Это фиктивный файл, который я создал для целей тестирования.

Вотисходный код, который у меня есть:

 public IActionResult Pdf()
 {
        // mock data
        var dataModel = new MockData
        {
            Name = "Terence",
            Amount = 1000
        };
        var dataSource = new Telerik.Reporting.ObjectDataSource
        {
            DataSource = dataModel
        };


        var reportProcessor = new Telerik.Reporting.Processing.ReportProcessor();
        var reportSource = new Telerik.Reporting.UriReportSource
        {
            Uri = "PDF/confirmation.trdp"
        };
        //reportSource.Parameters


        var result = reportProcessor.RenderReport("PDF", reportSource, null);
        var output = result.DocumentBytes;

        return File(output, "application/pdf");
  }

Вот шаблон, который я создал из Telerik Report Designer re

Вот мой вопрос:

Как я могу связать текстовые поля с моделью данных в файле PDF? А как настроить для этого шаблон .trdp?

1 Ответ

1 голос
/ 13 октября 2019

Вам необходимо проанализировать * .trdp файл в объекте Telerik Report.

var reportProcessor = new Telerik.Reporting.Processing.ReportProcessor();
var deviceInfo = new System.Collections.Hashtable();

var reportPackager = new ReportPackager();
Report report;
InstanceReportSource instanceReportSource = new InstanceReportSource();
using (var sourceStream = System.IO.File.OpenRead(path))
{
   report = (Report)reportPackager.UnpackageDocument(sourceStream);
}

После этого вы можете изменить источник данных отчета. Например (с JsonDataSource):

                var ds = new JsonDataSource
                {
                    DataSelector = "$",
                    Source = JsonConvert.SerializeObject(model,
                    new JsonSerializerSettings
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    })
                };

                report.DataSource = ds;

                instanceReportSource.ReportDocument = report;

                Telerik.Reporting.Processing.RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);

Если вы используете Telerik Reports в .NET Core, не забудьте добавить все зависимости NuGet. https://docs.telerik.com/reporting/use-reports-in-net-core-apps

...