C#使用iTextSharp合并pdf,添加页码
原文链接:https://www.cnblogs.com/yongsterZeroZeroOne/p/13738635.html
原文链接:https://www.cnblogs.com/AspDotNetMVC/p/3812157.html
一、合并pdf并添加页码
完整场景是这样:
1- 我把所有的PDF子文件存放的某个目录下
2-从数据库按条件查询出来的每个实体都带有一个字段,对应的是子pdf存放的位置pdf文件的名称,设为pdfName
3-需要把按条件查询出来的所有子pdf文件合并成一个大的pdf文件
4-合并的大的pdf文件,需要按要求加上页码
/// <summary>
/// 合并PDF并且产生页码
/// </summary>
/// <param name="data"></param>
void MergePDFFilesWithPageNumber(List<实体类> data)
{string OrderNO = Request.QueryString["OrderNO"];//最后合成的PDF文件要存放的文件目录string reportPath = Server.MapPath("~/upload/Report/"); //最后合成的PDF文件的文件名string reportName = "XXXXXX_Report.pdf";//最后合并的PDF的完整地址 string mergePDFFiles = reportPath + reportName;//如果目录不存在,创建目录 if (!Directory.Exists(reportPath)){Directory.CreateDirectory(reportPath);} //如果文件已存在,把原来的删除if (File.Exists(reportPath + reportName)){File.Delete(reportPath + reportName);}//这是子pfd文件存放的文件目录地址(所有子pdf文件都存放在这个目录下)string filePdfPath = Server.MapPath("~/upload/TemplateFile/PDF/" + OrderNO.Replace("*", "-"));#region 使用iTextSharp合并PDF//在总PDF的存放位置创建一个新的PDFiTextSharp.text.Document DOC = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate());PdfWriter writer = PdfWriter.GetInstance(DOC, new FileStream(mergePDFFiles, FileMode.Create));DOC.Open();iTextSharp.text.Rectangle re;PdfContentByte cb = writer.DirectContent;PdfImportedPage newPage; //页码的字体,大小样式BaseFont bfHei = BaseFont.CreateFont(@"C:\Windows\Fonts\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font font = new Font(bfHei, 10);for (int i = 0; i < data.Count; i++){ //读取每个子PDF文件PdfReader reader = new PdfReader(filePdfPath + "/" + data[i].pdfName); //单个子PDF文件的页数int iPageNum = reader.NumberOfPages; //将每个子pdf的每一页插入到新创建的总PDF文件里,根据需要增加页面for (int j = 1; j <= iPageNum; j++){re = reader.GetPageSize(reader.GetPageN(j));DOC.SetPageSize(re);DOC.NewPage();newPage = writer.GetImportedPage(reader, j);cb.AddTemplate(newPage, 0, 0);//增加页码-封面和底页都加//Phrase header = new Phrase("第" + writer.PageNumber.ToString() + "页", font);//页脚显示的位置//ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0);//增加页码-封面和底页不加//if (writer.PageNumber != 1 && !(i == data.Count - 1 && j == iPageNum))//{// Phrase header = new Phrase("第" + (writer.PageNumber - 1).ToString() + "页", font);// //页脚显示的位置// ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0);//}//增加页码-封面不加,没有底页,封面只占一页if (writer.PageNumber != 1){Phrase header = new Phrase("第" + (writer.PageNumber - 1).ToString() + "页", font);//页脚显示的位置ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0);}}}DOC.Close();}
二、添加页码
static void SetAllHeaderFooter(string inputPath){PdfReader reader=new PdfReader(inputPath);PdfStamper stamp=new PdfStamper(reader , new FileStream(Guid.NewGuid().ToString("N")+".pdf" , FileMode.Create));for(int i=1 ; i<=reader.NumberOfPages ; i++){AddHeaderFooter(stamp , i , reader.NumberOfPages);}stamp.Close();reader.Close();}
static void AddHeaderFooter(PdfStamper stamp,int pageNum,int pageCount){PdfContentByte cb =stamp.GetOverContent(pageNum);Color green=new Color(0 , 131 , 34);BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA , BaseFont.CP1252 , BaseFont.NOT_EMBEDDED);var header=new Rectangle(50 , 795 , 570 , 815);header.BackgroundColor=green;header.BorderColor=green;cb.Rectangle(header);cb.Stroke();var footer=new Rectangle(50 , 35 , 570 , 55);footer.BackgroundColor=green;footer.BorderColor=green;cb.Rectangle(footer);cb.Stroke();cb.SetRGBColorFill(255 , 255 , 255);cb.BeginText();cb.SetFontAndSize(bf , 12);cb.SetTextMatrix(70 , 800);cb.ShowText("U als ondernemer");cb.SetTextMatrix(550-bf.GetWidthPoint("Resultaten" , 12) , 800);cb.ShowText("Resultaten");cb.EndText();String pageText =string.Format("Page {0} of {1}",pageNum,pageCount);float pageLen = bf.GetWidthPoint(pageText , 12);cb.BeginText();cb.SetFontAndSize(bf , 12);cb.SetTextMatrix(280 , 40);cb.ShowText(pageText);cb.EndText();cb.ResetRGBColorFill();}
C#使用iTextSharp合并pdf,添加页码相关推荐
- PDF添加页码的工具有什么 PDF添加页码的小窍门
大家在制作PDF文件时,每次结束时都需要给整份PDF文件都添加准确的页码数.以此来方便后期的检查文件工作以及阅读者可更加清晰明了的翻阅文件,找寻自己需要的内容. 那么给PDF添加页码的工具有什么? 其 ...
- JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...
- 利用PDF编辑软件给PDF添加页码的操作全过程
还记得小时候,在微机电脑课时.老师在教给大家一项操作的时候,老师肯定会详细的,一步一步的将操作全过程展示给大家.老师们如此严谨其,目的也就是为了防止学生们再操作中因为细小的问题,而导致全盘皆错.一步一 ...
- PDF怎么添加页码?PDF添加页码的方法
PDF怎么添加页码呢?现在我们对PDF文件的了解也是比较多的,但是想要给PDF文件添加页码还是比较难得,给PDF添加页码就可以使用迅捷PDF编辑器,下面小编就为大家操作一下PDF添加页码的操作方法. ...
- 如何给pdf添加页码?
很多人将文件生成pdf格式后,发现pdf格式的文件并没有页码显示,这非常不利于查看,这时候大家会想着给pdf格式的文件添加页码显示,在pdf格式文件中如何添加页码呢?不少人对这一问题并不清楚,今天我们 ...
- C# Pdf添加页码(iTextSharp)
通过Nuget添加iTextSharp引用,具体代码如下 /// <summary>/// 添加页码/// </summary>/// <param name=" ...
- 在Mac上使用或不使用Acrobat的3种向PDF添加页码的方法
当面对没有页码的大型PDF文件时,大多数人会感到茫然,尤其是在项目上进行协作时.要在Mac上的PDF中添加页码,跟踪信息将变得更加实用和简单.您可能知道如何在Word文档中插入页码,但是PDF与Wor ...
- 通过iTextSharp为PDF添加带有超链接的Bookmark
最近有这样一个需求,即为PDF加入带有超链接的Bookmark.PDF的开发有个特点,就是虽然相关的开发工具很多,但大都是收费的,PDFOne就是这么一个PDF开发组件,接口调用很简单,但是需要收费, ...
- .Net iTextSharp 给Pdf添加图片水印
/// <summary>/// 设置pdf图片水印/// </summary>/// <param name="imgPath">水印图片路径 ...
最新文章
- python学习——01循环控制
- 保护模式及其编程——8086系统寄存器和系统指令
- 单列索引和联合索引,有什么区别?
- C语言:结构体中一级指针和二级指针的创建与释放示例
- 实习生对企业的认识_如何成为您认识的超级明星实习生
- C++17新特性之std::string_view
- Android开发学习笔记-GridView的动态显示
- GPS模拟器算法(C#)
- Centos 7 Opencv安装使用
- SQL语句简单增删改查
- 综合项目之闪讯破解(五)之 如何用C#调用C++编写的Dll
- 结合环境专业计算机思维论文,环境艺术设计思维的表达论文范文
- Idea主菜单不见了(File,View等工具栏隐藏了)
- MYSQL里的DBS是什么_DBS-MySQL:MYSQL获取自增ID的四种方法
- Java基础巩固Day2作业
- 人脸识别API/SDK 汇总(转)
- 802.11成帧封装实现(三)
- SEO必看的免费推广渠道
- jqGrid学习笔记
- linux backtrack函数,Linux调用backtrack函数打印程序崩溃时的调用堆栈
热门文章
- ASP页面模板对象[彭国辉]
- 【Linux修炼】6.gcc/g++及Makefile【工具篇】
- 五大地形等高线特征_七年级所有知识点
- 马云关于计算机名言,49句关于马云的名言
- Re-ID with Triplet Loss
- 我用diffusion把姐妹cos成了灭霸的模样
- Android文字广告(Textview上下滚动),使用TextSwitcher控件实现
- 面向对象的三个基本特征
- Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
- WIN7开机后网络连接启动慢的手动解决方法