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");
}
2 回答
在纵向中将第一页导出为PDF
在横向中将第二页导出为PDF
使用第三方库合并两个PDF
这有点棘手,如果你使用的是ExportToStream,因为主要是公共的
它会忽略FormatOptions . 相反,你需要使用
此代码应该执行您想要的操作(使用PdfSharp组合):
按照这个简单的步骤步骤,无需执行任何单行代码:
以纵向格式创建第一个水晶报告,这是报告的默认格式 .
在横向创建第二个水晶报告 . 要做到这一点,您应该在第二个水晶报告设计 - >页面设置 - >方向 - >选择横向
创建第三个水晶报告,作为最终报告,在第一和第二个报告中添加详细信息作为子报告 . 只需右键单击insert-> sub report
在最终报告中,右键单击第二个报告的详细信息部分导出部分选择部分expert-> paging-> landscape您的工作已完成 .
然后在您的代码中将最终报告导出为PDF .