本文主要向大家介绍了C#编程之C#使用ITextSharp操作pdf,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

在.NET中没有很好操作pdf的类库,如果你需要对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现。
第一步:可以点击这里下载,新版本的插件升级和之前对比主要做了这几项重大改变
1.初始化对汉字的支持
2.对页眉页脚的加载形式
第二步:制作pdf模板
可以下载Adobe Acrobat DC等任意一款pdf编辑工具,视图——工具——准备表单,可以在需要赋值的地方放上一个文本框,可以把名称修改为有意义的名称,后面在赋值时要用到。
第三步:建项目引入各个操作类
介于前段时间项目所需特意把ITextSharp进行了二次封装,使我们对pdf操作起来更加方便。
列一下各文件的作用:
CanvasRectangle.cs对Rectangle对象的基类支持,可以灵活定义一个Rectangle。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDFReport
{
///
/// 画布对象
///
public class CanvasRectangle
{
#region CanvasRectangle属性
public float StartX { get; set; }
public float StartY { get; set; }
public float RectWidth { get; set; }
public float RectHeight { get; set; }
#endregion
#region 初始化Rectangle
///
/// 提供rectangle信息
///
///
起点X坐标
///
起点Y坐标
///
指定rectangle宽
///
指定rectangle高
public CanvasRectangle(float startX, float startY, float rectWidth, float rectHeight)
{
this.StartX = startX;
this.StartY = startY;
this.RectWidth = rectWidth;
this.RectHeight = rectHeight;
}
#endregion
#region 获取图形缩放百分比
///
/// 获取指定宽高压缩后的百分比
///
///
目标宽
///
目标高
///
原始对象
///
目标与原始对象百分比
public static float GetPercentage(float width, float height, CanvasRectangle containerRect)
{
float percentage = 0;
if (height > width)
{
percentage = containerRect.RectHeight / height;
if (width * percentage > containerRect.RectWidth)
{
percentage = containerRect.RectWidth / width;
}
}
else
{
percentage = containerRect.RectWidth / width;
if (height * percentage > containerRect.RectHeight)
{
percentage = containerRect.RectHeight / height;
}
}
return percentage;
}
#endregion
}
}
CanvasRectangle.cs
PdfBase.cs主要继承PdfPageEventHelper,并实现IPdfPageEvent接口的具体实现,其实也是在pdf的加载,分页等事件中可以重写一些具体操作。
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDFReport
{
public class PdfBase : PdfPageEventHelper
{
#region 属性
private String _fontFilePathForHeaderFooter = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMHEI.TTF");
///
/// 页眉/页脚所用的字体
///
public String FontFilePathForHeaderFooter
{
get
{
return _fontFilePathForHeaderFooter;
}
set
{
_fontFilePathForHeaderFooter = value;
}
}
private String _fontFilePathForBody = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMSUN.TTC,1");
///
/// 正文内容所用的字体
///
public String FontFilePathForBody
{
get { return _fontFilePathForBody; }
set { _fontFilePathForBody = value; }
}
private PdfPTable _header;
///
/// 页眉
///
public PdfPTable Header
{
get { return _header; }
private set { _header = value; }
}
private PdfPTable _footer;
///
/// 页脚
///
public PdfPTable Footer
{
get { return _footer; }
private set { _footer = value; }
}
private BaseFont _baseFontForHeaderFooter;
///
/// 页眉页脚所用的字体
///
public BaseFont BaseFontForHeaderFooter
{
get { return _baseFontForHeaderFooter; }
set { _baseFontForHeaderFooter = value; }
}
private BaseFont _baseFontForBody;
///
/// 正文所用的字体
///
public BaseFont BaseFontForBody
{
get { return _baseFontForBody; }
set { _baseFontForBody = value; }
}
private Document _document;
///
/// PDF的Document
///
public Document Document
{
get { return _document; }
private set { _document = value; }
}
#endregion
public override void OnOpenDocument(PdfWriter writer, Document document)
{
try
{
BaseFontForHeaderFooter = BaseFont.CreateFont(FontFilePathForHeaderFooter, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
BaseFontForBody = BaseFont.CreateFont(FontFilePathForBody, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
document.Add(new Phrase("\n\n"));
Document = document;
}
catch (DocumentException de)
{
}
catch (System.IO.IOException ioe)
{
}
}
#region GenerateHeader
///
/// 生成页眉
///
///
///
public virtual PdfPTable GenerateHeader(iTextSharp.text.pdf.PdfWriter writer)
{
return null;
}
#endregion
#region GenerateFooter
///
/// 生成页脚
///
///
///
public virtual PdfPTable GenerateFooter(iTextSharp.text.pdf.PdfWriter writer)
{
return null;
}
#endregion
public override void OnEndPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document)
{
base.OnEndPage(writer, document);
//输出页眉
Header = GenerateHeader(writer);
Header.TotalWidth = document.PageSize.Width - 20f;
///调用PdfTable的WriteSelectedRows方法。该方法以第一个参数作为开始行写入。
///第二个参数-1表示没有结束行,并且包含所写的所有行。
///第三个参数和第四个参数是开始写入的坐标x和y.
Header.WriteSelectedRows(0, -1, 10, document.PageSize.Height - 20, writer.DirectContent);
//输出页脚
Footer = GenerateFooter(writer);
Footer.TotalWidth = document.PageSize.Width - 20f;
Footer.WriteSelectedRows(0, -1, 10, document.PageSize.GetBottom(50), writer.DirectContent);
}
}
}
PdfBase.cs
PdfImage.cs对图像文件的操作
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDFReport
{
///
/// pdf图片操作类
///
public class PdfImage
{
#region PdfImage属性
///
/// 图片URL地址
///
public string ImageUrl { get; set; }
///
/// 图片域宽
///
public float FitWidth { get; set; }
///
/// 图片域高
///
public float FitHeight { get; set; }
///
/// 绝对X坐标
///
public float AbsoluteX { get; set; }
///
/// 绝对Y坐标
///
public float AbsoluteY { get; set; }
///
/// Img内容
///
public byte[] ImgBytes { get; set; }
///
/// 是否缩放
///
public bool ScaleParent { get; set; }
///
/// 画布对象
///
public CanvasRectangle ContainerRect { get; set; }
#endregion
#region PdfImage构造
///
/// 网络图片写入
///
///
图片URL地址
///
///
///
///
///
public PdfImage(string imageUrl, float fitWidth, float fitHeight, float absolutX, float absoluteY, bool scaleParent)
{
this.ImageUrl = imageUrl;
this.FitWidth = fitWidth;
this.FitHeight = fitHeight;
this.AbsoluteX = absolutX;
this.AbsoluteY = absoluteY;
this.ScaleParent = scaleParent;
}
///
/// 本地文件写入
///
///
图片URL地址
///
///
///
///
///
///
public PdfImage(string imageUrl, float fitWidth, float fitHeight, float absolutX, float absoluteY, bool scaleParent, byte[] imgBytes)
{
this.ImageUrl = imageUrl;
this.FitWidth = fitWidth;
this.FitHeight = fitHeight;
this.AbsoluteX = absolutX;
this.AbsoluteY = absoluteY;
this.ScaleParent = scaleParent;
this.ImgBytes = imgBytes;
}
#endregion
#region 指定pdf模板文件添加图片
///
/// 指定pdf模板文件添加图片
///
///
///
///
public void PutImages(string tempFilePath, string createdPdfPath, List
pdfImages)
{
PdfReader pdfReader = null;
PdfStamper pdfStamper = null;
try
{
pdfReader = new PdfReader(tempFilePath);
pdfStamper = new PdfStamper(pdfReader, new FileStream(createdPdfPath, FileMode.OpenOrCreate));
var pdfContentByte = pdfStamper.GetOverContent(1);//获取PDF指定页面内容
foreach (var pdfImage in pdfImages)
{
Uri uri = null;
Image img = null;
var imageUrl = pdfImage.ImageUrl;
//如果使用网络路径则先将图片转化位绝对路径
if (imageUrl.StartsWith("http"))
{
//var absolutePath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(".."), imageUrl);
var absolutePath = System.Web.HttpContext.Current.Server.MapPath("..") + imageUrl;
uri = new Uri(absolutePath);
img = Image.GetInstance(uri);
}
else
{
//如果直接使用图片文件则直接创建iTextSharp的Image对象
if (pdfImage.ImgBytes != null)
{
img = Image.GetInstance(new MemoryStream(pdfImage.ImgBytes));
}
}
if (img != null)
{
if (pdfImage.ScaleParent)
{
var containerRect = pdfImage.ContainerRect;
float percentage = 0.0f;
percentage =CanvasRectangle.GetPercentage(img.Width, img.Height, containerRect);
img.ScalePercent(percentage * 100);
pdfImage.AbsoluteX = (containerRect.RectWidth - img.Width * percentage) / 2 + containerRect.StartX;
pdfImage.AbsoluteY = (containerRect.RectHeight - img.Height * percentage) / 2 + containerRect.StartY;
}
else
{
img.ScaleToFit(pdfImage.FitWidth, pdfImage.FitHeight);
}
img.SetAbsolutePosition(pdfImage.AbsoluteX, pdfImage.AbsoluteY);
pdfContentByte.AddImage(img);
}
}
pdfStamper.FormFlattening = true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (pdfStamper != null)
{
pdfStamper.Close();
}
if (pdfReader != null)
{
pdfReader.Close();
}
pdfStamper = null;
pdfReader = null;
}
}
#endregion
}
}
PdfImage.cs
PdfPageMerge.cs对pdf文件及文件、各种文件格式文件内容进行合并。
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDFReport
{
public class PdfPageMerge
{
private PdfWriter pw;
private PdfReader reader;
private Document document;
private PdfContentByte cb;
private PdfImportedPage newPage;
private FileStream fs;
///
/// 通过输出文件来构建合并管理,合并到新增文件中,合并完成后调用FinishedMerge方法
///
/// 输出文件
public PdfPageMerge(string sOutFiles)
{
document = new Document(PageSize.A4);
fs=new FileStream(sOutFiles, FileMode.Create);
pw = PdfWriter.GetInstance(document, fs);
document.Open();
cb = pw.DirectContent;
}
///
/// 通过文件流来合并文件,合并到当前的可写流中,合并完成后调用FinishedMerge方法
///
///
public PdfPageMerge(Stream sm)
{
document = new Document();
pw = PdfWriter.GetInstance(document, sm);
document.Open();
cb = pw.DirectContent;
}
///
/// 合并文件
///
/// 需要合并的文件路径名称
///
public bool MergeFile(string sFiles)
{
reader = new PdfReader(sFiles);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
//Rectangle r = reader.GetPageSize(j);
Rectangle r = reader.GetPageSizeWithRotation(j);
document.SetPageSize(r);
cb.AddTemplate(newPage, 0, 0);
document.NewPage();
}
}
reader.Close();
return true;
}
///
/// 通过字节数据合并文件
///
/// PDF字节数据
///
public bool MergeFile(byte[] pdfIn)
{
reader = new PdfReader(pdfIn);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
///
/// 通过PDF文件流合并文件
///
/// PDF文件流
///
public bool MergeFile(Stream pdfStream)
{
reader = new PdfReader(pdfStream);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
///
/// 通过网络地址来合并文件
///
/// 需要合并的PDF的网络路径
///
public bool MergeFile(Uri pdfUrl)
{
reader = new PdfReader(pdfUrl);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
///
/// 完成合并
///
public void FinishedMerge()
{
try
{
if (reader != null)
{
reader.Close();
}
if (pw != null)
{
pw.Flush();
pw.Close();
}
if (fs != null)
{
fs.Flush();
fs.Close();
}
if (document.IsOpen())
{
document.Close();
}
}
catch
{
}
}
public static string AddCommentsToFile(string fileName,string outfilepath, string userComments, PdfPTable newTable)
{
string outputFileName = outfilepath;
//Step 1: Create a Docuement-Object
Document document = new Document();
try
{
//Step 2: we create a writer that listens to the document
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFileName, FileMode.Create));
//Step 3: Open the document
document.Open();
PdfContentByte cb = writer.DirectContent;
//The current file path
string filename = fileName;
// we create a reader for the document
PdfReader reader = new PdfReader(filename);
for (int pageNumber = 1; pageNumber < reader.NumberOfPages + 1; pageNumber++)
{
document.SetPageSize(reader.GetPageSizeWithRotation(1));
document.NewPage();
//Insert to Destination on the first page
if (pageNumber == 1)
{
Chunk fileRef = new Chunk(" ");
fileRef.SetLocalDestination(filename);
document.Add(fileRef);
}
PdfImportedPage page = writer.GetImportedPage(reader, pageNumber);
int rotation = reader.GetPageRotation(pageNumber);
if (rotation == 90 || rotation == 270)
{
cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(pageNumber).Height);
}
else
{
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
}
// Add a new page to the pdf file
document.NewPage();
Paragraph paragraph = new Paragraph();
Font titleFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA
, 15
, iTextSharp.text.Font.BOLD
, BaseColor.BLACK
);
Chunk titleChunk = new Chunk("Comments", titleFont);
paragraph.Add(titleChunk);
document.Add(paragraph);
paragraph = new Paragraph();
Font textFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA
, 12
, iTextSharp.text.Font.NORMAL
, BaseColor.BLACK
);
Chunk textChunk = new Chunk(userComments, textFont);
paragraph.Add(textChunk);
document.Add(paragraph);
document.Add(newTable);
}
catch (Exception e)
{
throw e;
}
finally
{
document.Close();
}
return outputFileName;
}
}
}
PdfPageMerge.cs
PdfTable.cs对表格插入做支持,可以在表格插入时动态生成新页并可以为每页插入页眉页脚
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace PDFReport
{
///
/// Pdf表格操作类
///
public class PdfTable:PdfBase
{
///
/// 向PDF中动态插入表格,表格内容按照htmltable标记格式插入
///
/// pdf模板路径
/// pdf导出路径
/// table标签
public void PutTable(string pdfTemplate, string tempFilePath, string parameter)
{
Document doc = new Document();
try
{
if (File.Exists(tempFilePath))
{
File.Delete(tempFilePath);
}
doc = new Document(PageSize.LETTER);
FileStream temFs = new FileStream(tempFilePath, FileMode.OpenOrCreate);
PdfWriter PWriter = PdfWriter.GetInstance(doc,temFs);
PdfTable pagebase = new PdfTable();
PWriter.PageEvent = pagebase;//添加页眉页脚
BaseFont bf1 = BaseFont.CreateFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font CellFont = new iTextSharp.text.Font(bf1, 12);
doc.Open();
PdfContentByte cb = PWriter.DirectContent;
PdfReader reader = new PdfReader(pdfTemplate);
for (int pageNumber = 1; pageNumber < reader.NumberOfPages+1 ; pageNumber++)
{
doc.SetPageSize(reader.GetPageSizeWithRotation(1));
PdfImportedPage page = PWriter.GetImportedPage(reader, pageNumber);
int rotation = reader.GetPageRotation(pageNumber);
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
doc.NewPage();
}
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(parameter);
XmlNodeList xnlTable = xmldoc.SelectNodes("table");
if (xnlTable.Count > 0)
{
foreach (XmlNode xn in xnlTable)
{
//添加表格与正文之间间距
doc.Add(new Phrase("\n\n"));
// 由html标记和属性解析表格样式
var xmltr = xn.SelectNodes("tr");
foreach (XmlNode xntr in xmltr)
{
var xmltd = xntr.SelectNodes("td");
PdfPTable newTable = new PdfPTable(xmltd.Count);
foreach (XmlNode xntd in xmltd)
{
PdfPCell newCell = new PdfPCell(new Paragraph(1, xntd.InnerText, CellFont));
newTable.AddCell(newCell);//表格添加内容
var tdStyle = xntd.Attributes["style"];//获取单元格样式
if (tdStyle != null)
{
string[] styles = tdStyle.Value.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
Dictionary dicStyle = new Dictionary();
foreach (string strpar in styles)
{
string[] keyvalue=strpar.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
dicStyle.Add(keyvalue[0], keyvalue[1]);
}
//设置单元格宽度
if (dicStyle.Select(sty => sty.Key.ToLower().Equals("width")).Count() > 0)
{
newCell.Width =float.Parse(dicStyle["width"]);
}
//设置单元格高度
if (dicStyle.Select(sty => sty.Key.ToLower().Equals("height")).Count() > 0)
{
//newCell.Height = float.Parse(dicStyle["height"]);
}
}
}
doc.Add(newTable);
}
}
}
doc.Close();
temFs.Close();
PWriter.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
doc.Close();
}
}
#region GenerateHeader
///
/// 生成页眉
///
///
///
public override PdfPTable GenerateHeader(iTextSharp.text.pdf.PdfWriter writer)
{
BaseFont baseFont = BaseFontForHeaderFooter;
iTextSharp.text.Font font_logo = new iTextSharp.text.Font(baseFont, 18, iTextSharp.text.Font.BOLD);
iTextSharp.text.Font font_header1 = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.BOLD);
iTextSharp.text.Font font_header2 = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.BOLD);
iTextSharp.text.Font font_headerContent = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.NORMAL);
float[] widths = new float[] { 355, 50, 90, 15, 20, 15 };
PdfPTable header = new PdfPTable(widths);
PdfPCell cell = new PdfPCell();
cell.BorderWidthBottom = 2;
cell.BorderWidthLeft = 2;
cell.BorderWidthTop = 2;
cell.BorderWidthRight = 2;
cell.FixedHeight = 35;
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_LEFT);
//Image img = Image.GetInstance("//simg.instrument.com.cn/home/20141224/images/200_50logo.gif");
//img.ScaleToFit(100f, 20f);
//cell.Image = img;
cell.Phrase = new Phrase("LOGO", font_logo);
cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
cell.VerticalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
cell.PaddingTop = -1;
header.AddCell(cell);
//cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_LEFT);
//cell.Phrase = new Paragraph("PDF报表", font_header1);
//header.AddCell(cell);
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_RIGHT);
cell.Phrase = new Paragraph("日期:", font_header2);
header.AddCell(cell);
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_LEFT);
cell.Phrase = new Paragraph(DateTime.Now.ToString("yyyy-MM-dd"), font_headerContent);
header.AddCell(cell);
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_RIGHT);
cell.Phrase = new Paragraph("第", font_header2);
header.AddCell(cell);
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_CENTER);
cell.Phrase = new Paragraph(writer.PageNumber.ToString(), font_headerContent);
header.AddCell(cell);
cell = GenerateOnlyBottomBorderCell(2, iTextSharp.text.Element.ALIGN_RIGHT);
cell.Phrase = new Paragraph("页", font_header2);
header.AddCell(cell);
return header;
}
#region
///
/// 生成只有底边的cell
///
///
/// 水平对齐方式
///
private PdfPCell GenerateOnlyBottomBorderCell(int bottomBorder,int horizontalAlignment)
{
PdfPCell cell = GenerateOnlyBottomBorderCell(bottomBorder, horizontalAlignment, iTextSharp.text.Element.ALIGN_BOTTOM);
cell.PaddingBottom = 5;
return cell;
}
///
/// 生成只有底边的cell
///
///
/// 水平对齐方式
/// 垂直对齐方式<see cref="iTextSharp.text.Element"/
///
private PdfPCell GenerateOnlyBottomBorderCell(int bottomBorder,int horizontalAlignment,int verticalAlignment)
{
PdfPCell cell = GenerateOnlyBottomBorderCell(bottomBorder);
cell.HorizontalAlignment = horizontalAlignment;
cell.VerticalAlignment = verticalAlignment; ;
return cell;
}
///
/// 生成只有底边的cell
///
///
///
private PdfPCell GenerateOnlyBottomBorderCell(int bottomBorder)
{
PdfPCell cell = new PdfPCell();
cell.BorderWidthBottom = 2;
cell.BorderWidthLeft = 0;
cell.BorderWidthTop = 0;
cell.BorderWidthRight = 0;
return cell;
}
#endregion
#endregion
#region GenerateFooter
public override PdfPTable GenerateFooter(iTextSharp.text.pdf.PdfWriter writer)
{
BaseFont baseFont = BaseFontForHeaderFooter;
iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.NORMAL);
PdfPTable footer = new PdfPTable(new float[]{1,1,2,1});
AddFooterCell(footer, "电话:010-51654077-8039", font);
AddFooterCell(footer, "传真:010-82051730", font);
AddFooterCell(footer, "电子邮件:yangdd@instrument.com.cn", font);
AddFooterCell(footer, "联系人:杨丹丹", font);
return footer;
}
private void AddFooterCell(PdfPTable foot, String text, iTextSharp.text.Font font)
{
PdfPCell cell = new PdfPCell();
cell.BorderWidthTop = 2;
cell.BorderWidthRight = 0;
cell.BorderWidthBottom = 0;
cell.BorderWidthLeft = 0;
cell.Phrase = new Phrase(text, font);
cell.HorizontalAlignment = 本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!