Crystal Reports имеют значение , означающее для создания одной страницы на запись. Вам просто нужно установить источник данных с несколькими строками данных, установить этот источник данных для своего отчета и экспортировать его в pdf напрямую (уже «объединенный»).
Прежде всего, вам нужно создать источник данных с вашими данными. Например, вы можете создать DataSet с помощью дизайнера Visual Studio. Подробнее здесь .
Затем вам нужно установить источник данных для вашего Crystal Report. Вы можете сделать это с дизайнером Crystal.
Затем во время выполнения вам просто нужно заполнить rpt данными, относящимися ко всем выбранным флажкам, и экспортировать их в pdf. Внутри файла .rpt создайте группу в определенном столбце, связанном с флажками, с параметром «разрыв страницы после», установленным для группы. При этом будет создан один файл PDF, содержащий все ваши записи, по 1 на страницу.
Вот пример кода:
using (var reportDocument = new ReportDocument())
{
var datasource = new Datasource { EnforceConstraints = false };
var adapter = new adoTableAdapter { Connection = ConfigurationManager.ConnectionStrings["ConnectionString"]) };
adapter.Fill(datasource.ado);
reportDocument.Load(RptPath);
reportDocument.SetDataSource(datasource);
PageMargins myMargins = reportDocument.PrintOptions.PageMargins;
myMargins.topMargin = Settings.Default.DefaultTopMargin;
myMargins.leftMargin = Settings.Default.DefaultLeftMargin;
reportDocument.PrintOptions.ApplyPageMargins(myMargins);
reportDocument.PrintOptions.PaperSize = PaperSize.PaperA5;
reportDocument.PrintOptions.PaperOrientation = PaperOrientation.Landscape;
reportDocument.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
reportDocument.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
reportDocument.ExportOptions.DestinationOptions = new DiskFileDestinationOptions { DiskFileName = PdfFilename };
reportDocument.ExportOptions.FormatOptions = new PdfRtfWordFormatOptions();
reportDocument.Export();
}
В этом коде dsEtiqueta является источником данных ADO, RptPath - путь к файлу отчета * .rpt, а имя файла pdf создается с использованием timeSpan. Это то, что мне было нужно в моем проекте, но не стесняйтесь адаптировать его под свои нужды.
Редактировать: сделано с CR для VS 2010.