源码
/// </summary>
/// <param name="directory">存放多个pdf的文件夹路径</param>
/// <param name="pdfpath">合并的pdf路径</param>
public static void MergePdf( string[] fileList,string pdfpath, string pdfName)
{
iTextSharp.text.Document document = null;
try
{
PdfReader reader;
if (fileList.Length > 1)
{
//此处将内容从文本提取至文件流中的目的是避免文件被占用,无法删除
FileStream fs1 = new FileStream(fileList[0], FileMode.Open);
byte[] bytes1 = new byte[(int)fs1.Length];
fs1.Read(bytes1, 0, bytes1.Length);
fs1.Close();
reader = new PdfReader(bytes1);
reader.GetPageSize(1);
iTextSharp.text.Rectangle rec = reader.GetPageSize(1);
document = new iTextSharp.text.Document(rec, 50, 50, 50, 50);
FileStream f = new FileStream($"{pdfpath}\\{pdfName}.pdf", FileMode.OpenOrCreate);
PdfReader.AllowOpenWithFullPermissions = true;
PdfWriter writer = PdfWriter.GetInstance(document, f);
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
for (int i = 0; i < fileList.Length; i++)
{
FileStream fs = new FileStream(fileList[i], FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
reader = new PdfReader(bytes);
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
document.NewPage();
newPage = writer.GetImportedPage(reader, j);
cb.AddTemplate(newPage, 0, 0);
}
// File.Delete(fileList[i]);
}
document.Close();
}
}
catch (Exception e)
{
}
finally
{
if (document != null)
document.Close();
}
}
使用
MergePdfEx(orderFile.ToArray(), outPath, fileName);
网友评论