背景:我需要为我的销售人员提供每周报告包。这个包包含几个 (5-10) 个 Crystal 报表。
问题: 我想允许用户运行所有报告,也只运行一个报告。我想我可以通过创建报告然后执行以下操作来做到这一点:
List<ReportClass> reports = new List<ReportClass>();
reports.Add(new WeeklyReport1());
reports.Add(new WeeklyReport2());
reports.Add(new WeeklyReport3());
<snip>
foreach (ReportClass report in reports)
{
report.ExportToDisk(ExportFormatType.PortableDocFormat, @"c:\reports\" + report.ResourceName + ".pdf");
}
这会为我提供一个装满报告的文件夹,但我想通过电子邮件向每个人发送一份包含所有每周报告的 PDF 文件。所以我需要将它们结合起来。
有没有无需安装任何第三方控件的简单方法?我已经有 DevExpress 和 CrystalReports,我不想再添加太多。
最好将它们组合在 foreach 循环中还是在单独的循环中? (或其他方式)
最佳答案
我不得不解决一个类似的问题,我最终做的是创建一个使用 PDFSharp 的小型 pdfmerge 实用程序。本质上是麻省理工学院许可的项目。
代码非常简单,我需要一个 cmdline 实用程序,因此与 PDF 合并相比,我有更多的代码专门用于解析参数:
using (PdfDocument one = PdfReader.Open("file1.pdf", PdfDocumentOpenMode.Import))
using (PdfDocument two = PdfReader.Open("file2.pdf", PdfDocumentOpenMode.Import))
using (PdfDocument outPdf = new PdfDocument())
{
CopyPages(one, outPdf);
CopyPages(two, outPdf);
outPdf.Save("file1and2.pdf");
}
void CopyPages(PdfDocument from, PdfDocument to)
{
for (int i = 0; i < from.PageCount; i++)
{
to.AddPage(from.Pages[i]);
}
}
关于c# - 合并两个(或更多)PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/808670/