У меня есть кристальный отчет, состоящий из двух страниц; один в портретном, а второй в альбомном формате. В отчете все выглядит нормально, но когда я экспортирую его в PDF, обе страницы экспортируются в портретный формат, теряя часть данных. Кто-нибудь может решить мою проблему? Спасибо заранее.
Crystal Report — экспорт в PDF как в альбомной, так и в портретной ориентации
Ответы (2)
Нет необходимости выполнять какую-либо одну строку кода, следуя этому простому шагу:
- Создайте первый кристаллический отчет в портретном формате, и это формат отчета по умолчанию.
- Создайте второй кристаллический отчет в альбомной ориентации. Для этого вам нужно прямо во втором кристаллическом отчете Дизайн->Настройка страницы->ориентация->выбрать альбомную ориентацию
- Создайте третий кристаллический отчет, который является окончательным отчетом, в этом первом разделе подробностей и втором отчете добавьте в качестве подотчета. Просто щелкните правой кнопкой мыши вставить-> подчиненный отчет
- В итоговом отчете просто щелкните правой кнопкой мыши раздел «Экспорт» в разделе подробностей второго отчета, выберите раздел «Эксперт» -> «Пейджинг» -> «Пейджинг». Ваша работа выполнена.
- Затем экспортируйте этот окончательный отчет в PDF в своем коде.
person
Rahul Salgar
schedule
19.06.2015
- Экспорт первой страницы в формате PDF в книжной ориентации
- Экспорт второй страницы в формате PDF в альбомной ориентации
- Объедините два PDF-файла, используя стороннюю библиотеку.
Это немного сложно, если вы используете ExportToStream, потому что основной общедоступный
report.ExportToStream(ExportFormatType formatType)
который игнорирует FormatOptions. Вместо этого вам нужно будет использовать
report.FormatEngine.ExportToStream(ExportRequestContext reqContext)
Этот код должен делать то, что вы хотите (используя PdfSharp для объединения):
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
...
using (var report = new ReportClass { FileName = Server.MapPath("/Crystal/Reports/DosBatches.rpt") })
{
report.Load();
/* set data source connections */
/* set parameters */
// export the first page
report.PrintOptions.PaperOrientation = PaperOrientation.Portrait;
var exportOptions1 = new ExportOptions
{
ExportFormatType = ExportFormatType.PortableDocFormat,
FormatOptions = new PdfFormatOptions { UsePageRange = true, FirstPageNumber = 1, LastPageNumber = 1 }
};
exportRequestContext.ExportInfo = exportOptions1;
var stream1 = report.FormatEngine.ExportToStream(exportRequestContext);
stream1.Seek(0, SeekOrigin.Begin);
// export the second page
report.PrintOptions.PaperOrientation = PaperOrientation.Landscape;
var exportOptions2 = new ExportOptions
{
ExportFormatType = ExportFormatType.PortableDocFormat,
FormatOptions = new PdfFormatOptions { UsePageRange = true, FirstPageNumber = 2, LastPageNumber = 2 }
};
exportRequestContext.ExportInfo = exportOptions2;
var stream2 = report.FormatEngine.ExportToStream(exportRequestContext);
stream2.Seek(0, SeekOrigin.Begin);
// merge the two PDF streams
var combinedPdf = new PdfDocument();
foreach (PdfPage page in PdfReader.Open(stream1, PdfDocumentOpenMode.Import).Pages)
combinedPdf.AddPage(page);
foreach (PdfPage page in PdfReader.Open(stream2, PdfDocumentOpenMode.Import).Pages)
combinedPdf.AddPage(page);
// probably not the most efficient, but works
var output = new MemoryStream();
combinedPdf.Save(output, false);
return new FileStreamResult(output, "application/pdf");
}
person
arserbin3
schedule
29.06.2012