用其中一个就行,第一个测试正常
第一个试了完美
//合并多个PDF
public static void MergePdfFiles(string outputFilePath, params string[] inputFilePaths)
{
try
{
inputFilePaths = inputFilePaths.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); //先去掉空值
// 创建一个新的PDF文档用于合并
PdfSharp.Pdf.PdfDocument outputDocument = new PdfSharp.Pdf.PdfDocument();
foreach (string inputFile in inputFilePaths)
{
// 加载要合并的PDF
PdfSharp.Pdf.PdfDocument inputDocument = PdfSharp.Pdf.IO.PdfReader.Open(inputFile, PdfDocumentOpenMode.Import);
// 将每个PDF的页面添加到输出文档中
for (int pageIndex = 0; pageIndex < inputDocument.PageCount; pageIndex++)
{
PdfSharp.Pdf.PdfPage page = inputDocument.Pages[pageIndex];
outputDocument.AddPage(page);
}
// 关闭输入文档
//inputDocument.Close();
}
// 保存合并后的PDF文件
outputDocument.Save(outputFilePath);
outputDocument.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
//这个试了不能铺满,不知什么原因
// 合并多个PDF
/// <param name="SourcePath">源路径</param>
/// <param name="TargetPath">目标路径</param>
/// <param name="NewFileName">新文件名</param>
public static void MergePDF(string SourcePath, string outputFilePath)
{
//需要合并的pdf集合
string[] fileList = Directory.GetFiles(SourcePath, "*.pdf", SearchOption.AllDirectories);
//合并到的总PDF
iTextSharp.text.pdf.PdfReader reader;
iTextSharp.text.Document document = new iTextSharp.text.Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFilePath, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
for (int i = 0; i < fileList.Length; i++)
{
reader = new iTextSharp.text.pdf.PdfReader(fileList[i]);
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
document.NewPage();
newPage = writer.GetImportedPage(reader, j);
cb.AddTemplate(newPage, 0, 0);
}
}
document.Close();
}
来源地址:C#合并多个PDF文件,把多个文件合成一个两个函数
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END