C#C# 生成PDF代码示例二

本文为闹用iTextSharp来生成pdf文档的办法。

给是本身因实际意况编写的代码,包含如下:

1、段落

2、表格

3、字体格式化

运作是代码用之类库:

itextsharp.dll,itext-hyph-xml.dll,iTextAsian.dll和ICSharpCode.SharpZipLib.dll

itextsharp项目地址:http://sourceforge.net/projects/itextsharp/

演示代码,/Files/hudonglin/PDFMake.rar示范代码也贴在底下了

本代码帮忙普通话字符,下边直接上代码

C# 1 Code [http://www.xueit.com\]

namespace PDFMake {
using System; using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
public class PDFITEXTSharp {
private string _pdfSavePath;
/// <summary> /// pdf文件保留地址
/// </summary> public string PDFSavePath {
get { if (string.IsNullOrEmpty(_pdfSavePath))
{ return
AppDomain.CurrentDomain.BaseDirectory Guid.NewGuid().ToString()
“.pdf”; } return _pdfSavePath; }
set { _pdfSavePath
= value; } }
/// <summary> ///
通过函数深圳pdf保存地址 /// </summary> /// <param
name=”pdfSavePath”></param> public void
SetPDFSavePath(string pdfSavePath) {
this.PDFSavePath
= pdfSavePath; }
#region Demo
region
/// <summary> /// HelloWorld示例程序
/// </summary> public void HelloWorld() {
Document document = new Document();
PdfWriter.GetInstance(document, new
FileStream(PDFSavePath, FileMode.Create)); document.Open();
document.Add(new
Paragraph(“Hello
World”)); document.Close();
} /// <summary> /// PDF生成(重载)
/// </summary> /// <param
name=”pdfSavePath”></param> public void MakePDF(string pdfSavePath) {
this.PDFSavePath
= pdfSavePath;
MakePDF(); } /// <summary> /// PDF生成 /// </summary> public void MakePDF() { Document
document = new

Document(PageSize.A4);//创建一个Document实例 PdfWriter writer

PdfWriter.GetInstance(document, new
FileStream(PDFSavePath, FileMode.Create));//创建Writer实例 document.Open();
#region
写副一些数码,包括:作者、标题、摘要、关键词、创设者、生产者、创立时间、头音讯document.AddAuthor(“你的讳”);
document.AddCreationDate(); document.AddCreator(“集团称”);
document.AddHeader(“QQ”, “你的QQ”);
document.AddHeader(“Email”, “您的邮箱”);
document.AddKeywords(“物联网”);
document.AddProducer(); document.AddSubject(“VIP观众入场凭券!”);
document.AddTitle(“标题”); #endregion BaseFont baseFont
= CreateChineseFont();
iTextSharp.text.Font titleFont = new
iTextSharp.text.Font(baseFont, 22, Font.BOLD);
iTextSharp.text.Font fontUnderLine = new
iTextSharp.text.Font(baseFont, 12, Font.UNDERLINE);
iTextSharp.text.Font normalFont = new Font(baseFont,
12);
iTextSharp.text.Font normalRedFont = new Font(baseFont,
12, Font.NORMAL
| Font.BOLD,
BaseColor.RED); float titleLineHeight
= 45f,
normalLineHeight = 25f; Paragraph
pBlank = new
Paragraph(” “, normalFont);
pBlank.Leading = normalLineHeight;
Image jpeg =

Image.GetInstance(AppDomain.CurrentDomain.BaseDirectory “Data\\logo.bmp”); jpeg.Alignment

Element.ALIGN_CENTER; document.Add(jpeg); Paragraph titleP = new
Paragraph(“VIP观众入场凭券”, titleFont);
titleP.Leading = titleLineHeight;
titleP.Alignment =
Element.ALIGN_CENTER; document.Add(titleP); Chunk chunk1 = new Chunk(“尊敬的”, normalFont), chunk2
= new Chunk(” $uName$ “, fontUnderLine) ,
chunk3 = new Chunk(“:”, normalFont);
document.Add(GetPTxt(new Chunk[] { chunk1,
chunk2, chunk3 }, normalLineHeight)); document.Add(pBlank);
document.Add(CreateTable()); document.Add(pBlank);//空行
document.Add(GetPTxt(“其实生成PDF就是这般简单!!”, normalFont,
normalLineHeight)); document.Close(); } #endregion #region
文档元素生成区域 /// <summary> /// 生成段落文本
/// </summary> /// <param
name=”txt”>文本</param> /// <param
name=”txtFont”>字体</param> /// <param
name=”lineHeight”>行高</param> /// <returns>段落文本</returns> static Paragraph
GetPTxt(string txt, Font txtFont,
float lineHeight) {
Paragraph p = new
Paragraph(lineHeight, txt, txtFont); return p; } /// <summary> /// 生成段落文本
/// </summary> /// <param
name=”txt”>文本</param> /// <param
name=”txtFont”>字体</param> /// <param
name=”lineHeight”>行高</param> /// <param
name=”elementAlign”>对齐情势</param> /// <returns>段落文本</returns> static Paragraph
GetPTxt(string txt, Font txtFont,
float lineHeight,
int elementAlign) {
Paragraph p = new
Paragraph(lineHeight, txt, txtFont); p.Alignment = elementAlign;
return p; } /// <summary> /// 生成段落文本
/// </summary> /// <param
name=”chnkArr”>Chunk数组</param> /// <param
name=”lineHeight”>行高</param> /// <returns>段落文本</returns> static Paragraph
GetPTxt(Chunk[] chnkArr, float lineHeight) {
if (chnkArr
== null || chnkArr.Length
== 0) { return new
Paragraph(“”); } Paragraph p
= new Paragraph();
foreach (Chunk chnkTxt
in chnkArr) {
p.Add(chnkTxt); } p.Leading = lineHeight;
return p; } /// <summary> /// 成立Table行
/// </summary> /// <param
name=”txt”>文本</param> /// <param
name=”txtFont”>字体</param> /// <param
name=”align”>对齐情势</param> /// <param
name=”colSpan”>跨行数</param> /// <param
name=”padTop”>顶部padding</param> /// <param
name=”padBottom”>底部padding</param> /// <returns>Table行</returns> static PdfPCell
CreateCell(string txt, Font txtFont,
int align, int colSpan,
float padTop, float padBottom) {
PdfPCell cell = new
PdfPCell(new Phrase(txt,
txtFont)); if (padTop > 0) { cell.PaddingTop
= padTop; }
if (padBottom
> 0) {
cell.PaddingBottom = padBottom; }
if (colSpan
> 0) { cell.Colspan
= colSpan; }
cell.HorizontalAlignment = align; return cell; } /// <summary> /// 创制Table行(RowSpan)
/// </summary> /// <param
name=”txt”>文本</param> /// <param
name=”txtFont”>字体</param> /// <returns>Table行(RowSpan)</returns> static PdfPCell
CreateRowSpanCell(string txt, Font txtFont) {
PdfPCell cell = new
PdfPCell(new Phrase(60f, txt,
txtFont)); cell.Rowspan = 6; cell.PaddingTop
= 6f;
cell.PaddingBottom = 6f; cell.PaddingLeft
= 10f;
cell.VerticalAlignment =
Element.ALIGN_MIDDLE; return cell; } /// <summary> /// 创建Table行
/// </summary> /// <param
name=”txt”>文本</param> /// <param
name=”txtFont”>字体</param> /// <param
name=”colSpan”>跨行数</param> /// <param
name=”padTop”>顶部padding</param> /// <param
name=”padBottom”>底部padding</param> /// <param
name=”bgColor”>背景色</param> /// <returns>Table行</returns> static PdfPCell
CreateCellHeader(string txt, Font txtFont,
int colSpan,
float padTop, float padBottom, BaseColor
bgColor) { PdfPCell cell = new
PdfPCell(new Phrase(txt,
txtFont)); if (padTop > 0) { cell.PaddingTop
= padTop; }
if (padBottom
> 0) {
cell.PaddingBottom = padBottom; }
if (colSpan
> 0) { cell.Colspan
= colSpan; }
cell.HorizontalAlignment =
Element.ALIGN_CENTER; //0=Left, 1=Centre,
2=Right

cell.VerticalAlignment =
Element.ALIGN_MIDDLE; cell.BackgroundColor = bgColor;
return cell; } /// <summary> /// 创造表格(PdfPTable)
/// </summary> /// <returns></returns> static PdfPTable
CreateTable() { PdfPTable table = new
PdfPTable(6); table.TotalWidth
= 470f;
table.LockedWidth = true;
table.HorizontalAlignment = 1; float[] widths
= new float[] { 95f, 95f, 55f,
40f, 95f, 95f }; table.SetWidths(widths); BaseFont baseFont = CreateChineseFont();
iText夏普.text.Font titleFont = new
iTextSharp.text.Font(baseFont, 12, Font.BOLD);
iTextSharp.text.Font normalFont = new Font(baseFont,
10), normalBoldFont
= new Font(baseFont,
10, Font.BOLD);
iTextSharp.text.Font normalRedFont = new Font(baseFont,
10, Font.NORMAL
| Font.BOLD,
BaseColor.RED); float padding = 6f; BaseColor
bgColor = new
BaseColor(153, 204, 255);
table.AddCell(CreateCellHeader(“2010
年阿布扎比物联网技术和利用展览会VIP观众信息”, titleFont,
6, 8f, 8f, bgColor));
table.AddCell(CreateCell(“姓名”, normalBoldFont,
1, 0, padding, padding));
table.AddCell(CreateCell(“$uName$”, normalFont,
0, 5, padding, padding));
table.AddCell(CreateCell(“单位”, normalBoldFont,
1, 0, padding, padding));
table.AddCell(CreateCell(“$cName$”, normalFont,
0, 5, padding, padding));
table.AddCell(CreateCell(“联系电话”, normalBoldFont,
1, 0, padding, padding));
table.AddCell(CreateCell(“$uTel$”, normalFont,
0, 2, padding, padding));
table.AddCell(CreateCell(“职务”, normalBoldFont,
1, 0, padding, padding));
table.AddCell(CreateCell(“$uHeadShip$”, normalFont,
0, 2, padding, padding));
table.AddCell(CreateCell(“VIP编号”, normalBoldFont,
1, 0, padding, padding));
table.AddCell(CreateCell(“SZRFID-VIP-0001”, normalRedFont,
0, 5, padding, padding));
table.AddCell(CreateRowSpanCell(“其余参观人士(如贵公司新增此外参观人员呼吁在此栏填写姓名及联系形式,否则要以实地排队挂号)”, normalFont));
table.AddCell(CreateCellHeader(“姓名”, normalBoldFont,
0, padding, padding,
bgColor)); table.AddCell(CreateCellHeader(“职务”, normalBoldFont,
2, padding, padding,
bgColor)); table.AddCell(CreateCellHeader(“联系电话”, normalBoldFont,
0, padding, padding,
bgColor)); table.AddCell(CreateCellHeader(“电子邮件”, normalBoldFont,
0, padding, padding,
bgColor)); for (int i = 0; i < 5; i ) {
table.AddCell(CreateCell(” “, normalFont,
0, 0, padding, padding));
table.AddCell(CreateCell(” “, normalFont,
0, 2, padding, padding));
table.AddCell(CreateCell(” “, normalFont,
0, 0, padding, padding));
table.AddCell(CreateCell(” “, normalFont,
0, 0, padding, padding));
} return table; }
#endregion #region
公共函数区域 /// <summary> ///
成立普通话字体(实现中文) /// </summary> /// <returns></returns> public static BaseFont
CreateChineseFont() { BaseFont.AddToResourceSearch(“iTextAsian.dll”);
BaseFont.AddToResourceSearch(“iTextAsianCmaps.dll”); //”STSong-Light”,

“UniGB-UCS2-H”, BaseFont baseFT

BaseFont.CreateFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.EMBEDDED);
//iTextSharp.text.Font
font = new iTextSharp.text.Font(baseFT); return baseFT; }
#endregion } }

转:http://www.xueit.com/html/2010-05/21-12262456542010523214954718.html

连带小说

C# PDF 全攻略
http://www.cnblogs.com/08shiyan/archive/2011/04/17/2019072.html

相关文章