ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 将多个图片合成 pdf 及 多个pdf 合成 pdf 方案

2021-04-09 11:33:00  阅读:277  来源: 互联网

标签:25 arr 多个 text 合成 iTextSharp new pdf document


获取 itextsharp 包

 

 

    files 图片文件路径列表

    pdfFileName 输出的 pdf文件

public bool MergeFileToPDF(List<string> files,string pdfFileName)
{
iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 25, 25, 25, 25);
try
{
iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(pdfFileName, FileMode.Create, FileAccess.ReadWrite));
document.Open();
iTextSharp.text.Image image;
foreach (var item in files)
{
if (String.IsNullOrEmpty(item)) break;
image = iTextSharp.text.Image.GetInstance(item);
if (image.Height > iTextSharp.text.PageSize.A4.Height - 25)
{
image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
}
else if (image.Width > iTextSharp.text.PageSize.A4.Width - 25)
{
image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
}
image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
document.NewPage();
document.Add(image);
}
document.Close();
return true;
}
catch (Exception ex)
{
Console.WriteLine("转换失败,原因:" + ex.Message);
}
return false;

}

 

 

合并两个PDF文件类

 

public class PdfHelper
{

/// <summary>
/// /// 读取合并的pdf文件名称
/// /// </summary>
/// /// <param name="Directorypath">目录</param>
/// /// <param name="outpath">导出的路径</param>
public static void MergePDF(string Directorypath, string outpath)
{
List<string> filelist2 = new List<string>();
System.IO.DirectoryInfo di2 = new System.IO.DirectoryInfo(Directorypath);
FileInfo[] ff2 = di2.GetFiles("*.pdf");
BubbleSort(ff2);
foreach (FileInfo temp in ff2)
{ filelist2.Add(Directorypath + "\\" + temp.Name); }
mergePDFFiles(filelist2, outpath);
//DeleteAllPdf(Directorypath);
}

/// <summary>
/// /// 冒泡排序
/// /// </summary>
/// /// <param name="arr">文件名数组</param>
public static void BubbleSort(FileInfo[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
for (int j = i; j < arr.Length; j++)
{
if (arr[i].LastWriteTime > arr[j].LastWriteTime)//按创建时间(升序)
{
FileInfo temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}


/// <summary>
/// /// 合成pdf文件
/// /// </summary>
/// /// <param name="fileList">文件名list</param>
/// /// <param name="outMergeFile">输出路径</param>
public static void mergePDFFiles(List<string> fileList, string outMergeFile)
{
PdfReader reader;
//Rectangle rec = new Rectangle(1660, 1000);
//Document document = new Document(rec);

iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 25, 25, 25, 25);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
for (int i = 0; i < fileList.Count; i++)
{
reader = new 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();
}


/// <summary>
/// /// 删除一个文件里所有的文件
/// /// </summary>
/// /// <param name="Directorypath">文件夹路径</param>
public static void DeleteAllPdf(string Directorypath)
{
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Directorypath);
if (di.Exists)
{
FileInfo[] ff = di.GetFiles("*.pdf");
foreach (FileInfo temp in ff)
{
File.Delete(Directorypath + "\\" + temp.Name);
}
}
}
}

 

标签:25,arr,多个,text,合成,iTextSharp,new,pdf,document
来源: https://www.cnblogs.com/lhxsoft/p/14636308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有