C#工具類:使用iTextSharp操作PDF文檔

iTextSharp是一個用於操作PDF文件的組件DLL程序,在C#程序中可以引用iTextSharp組件,用於開發與PDF文件相關的報表等功能,利用iTextSharp組件提供出來的方法接口,我們可以實現很多與PDF文檔有關的操作,如打開PDF文檔對象、往PDF文檔中添加段落、添加圖片鏈接等等,功能非常的強大。這邊簡單對iTextSharp類進行了封裝,提供一些常用的PDF操作方法。

iTextSharp官網:http://www.itextpdf.com/ (英文好的建議直接查看原始文檔)。

在Visual Studio開發的項目的過程中,你可以手動引入iTextSharp的兩個DLL文件到你的項目中,引入成功後即可在項目中使用。如果你的Visual Studio安裝有NuGet 工具,可以通過NuGet工具來自動安裝。

依託iTextSharp組件封裝好的PDF操作幫助類如下,只包含一些簡單的操作,如果讀者有更復雜的需求,請查閱官方文檔後熟悉後自行封裝編寫:
public class PDFOperation
{
#region 構造函數
/// <summary>
/// 構造函數
/// </summary>
public PDFOperation()
{
rect = PageSize.A4;
document = new Document(rect);
}
/// <summary>
/// 構造函數
/// </summary>
/// <param name="type">頁面大小(如"A4")</param>
public PDFOperation(string type)
{
SetPageSize(type);
document = new Document(rect);
}
/// <summary>
/// 構造函數
/// </summary>
/// <param name="type">頁面大小(如"A4")</param>
/// <param name="marginLeft">內容距左邊框距離</param>
/// <param name="marginRight">內容距右邊框距離</param>
/// <param name="marginTop">內容距上邊框距離</param>
/// <param name="marginBottom">內容距下邊框距離</param>
public PDFOperation(string type, float marginLeft, float marginRight, float marginTop, float marginBottom)
{
SetPageSize(type);
document = new Document(rect, marginLeft, marginRight, marginTop, marginBottom);
}
#endregion
#region 私有字段
private Font font;
private Rectangle rect; //文檔大小
private Document document;//文檔對象
private BaseFont basefont;//字體
#endregion
#region 設置字體
/// <summary>
/// 設置字體
/// </summary>
public void SetBaseFont(string path)
{
basefont = BaseFont.CreateFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}
/// <summary>
/// 設置字體
/// </summary>
/// <param name="size">字體大小</param>
public void SetFont(float size)
{
font = new Font(basefont, size);
}
#endregion
#region 設置頁面大小
/// <summary>
/// 設置頁面大小
/// </summary>
/// <param name="type">頁面大小(如"A4")</param>
public void SetPageSize(string type)
{
switch (type.Trim())
{
case "A4":
rect = PageSize.A4;
break;
case "A8":
rect = PageSize.A8;
break;
}
}
#endregion
#region 實例化文檔
/// <summary>
/// 實例化文檔
/// </summary>
/// <param name="os">文檔相關信息(如路徑,打開方式等)</param>
public void GetInstance(Stream os)
{
PdfWriter.GetInstance(document, os);
}
#endregion
#region 打開文檔對象
/// <summary>
/// 打開文檔對象
/// </summary>
/// <param name="os">文檔相關信息(如路徑,打開方式等)</param>
public void Open(Stream os)
{
GetInstance(os);
document.Open();
}
#endregion
#region 關閉打開的文檔
/// <summary>
/// 關閉打開的文檔
/// </summary>
public void Close()
{
document.Close();
}
#endregion
#region 添加段落
/// <summary>
/// 添加段落
/// </summary>
/// <param name="content">內容</param>
/// <param name="fontsize">字體大小</param>
public void AddParagraph(string content, float fontsize)
{
SetFont(fontsize);
Paragraph pra = new Paragraph(content, font);
document.Add(pra);
}
/// <summary>
/// 添加段落
/// </summary>
/// <param name="content">內容</param>
/// <param name="fontsize">字體大小</param>
/// <param name="Alignment">對齊方式(1爲居中,0爲居左,2爲居右)</param>
/// <param name="SpacingAfter">段後空行數(0爲默認值)</param>
/// <param name="SpacingBefore">段前空行數(0爲默認值)</param>
/// <param name="MultipliedLeading">行間距(0爲默認值)</param>
public void AddParagraph(string content, float fontsize, int Alignment, float SpacingAfter, float SpacingBefore, float MultipliedLeading)
{
SetFont(fontsize);
Paragraph pra = new Paragraph(content, font);
pra.Alignment = Alignment;
if (SpacingAfter != 0)
{
pra.SpacingAfter = SpacingAfter;
}
if (SpacingBefore != 0)
{
pra.SpacingBefore = SpacingBefore;
}
if (MultipliedLeading != 0)
{
pra.MultipliedLeading = MultipliedLeading;
}
document.Add(pra);
}
#endregion
#region 添加圖片
/// <summary>
/// 添加圖片
/// </summary>
/// <param name="path">圖片路徑</param>
/// <param name="Alignment">對齊方式(1爲居中,0爲居左,2爲居右)</param>
/// <param name="newWidth">圖片寬(0爲默認值,如果寬度大於頁寬將按比率縮放)</param>
/// <param name="newHeight">圖片高</param>
public void AddImage(string path, int Alignment, float newWidth, float newHeight)
{
Image img = Image.GetInstance(path);
img.Alignment = Alignment;
if (newWidth != 0)
{
img.ScaleAbsolute(newWidth, newHeight);
}
else
{
if (img.Width > PageSize.A4.Width)
{
img.ScaleAbsolute(rect.Width, img.Width * img.Height / rect.Height);
}
}
document.Add(img);
}
#endregion
#region 添加鏈接、點
/// <summary>
/// 添加鏈接
/// </summary>
/// <param name="Content">鏈接文字</param>
/// <param name="FontSize">字體大小</param>
/// <param name="Reference">鏈接地址</param>
public void AddAnchorReference(string Content, float FontSize, string Reference)
{
SetFont(FontSize);
Anchor auc = new Anchor(Content, font);
auc.Reference = Reference;
document.Add(auc);
}
/// <summary>
/// 添加鏈接點
/// </summary>
/// <param name="Content">鏈接文字</param>
/// <param name="FontSize">字體大小</param>
/// <param name="Name">鏈接點名</param>
public void AddAnchorName(string Content, float FontSize, string Name)
{
SetFont(FontSize);
Anchor auc = new Anchor(Content, font);
auc.Name = Name;
document.Add(auc);
}
#endregion
}

擴展閱讀:C#工具類:使用SharpZipLib進行壓縮、解壓文件

備註:此原創文章最早發表於博主個人技術站點:IT技術小趣屋。原文鏈接:C#工具類:使用iTextSharp操作PDF文檔_IT技術小趣屋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章