




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
在ASP_Net中利用iTextSharp實現(xiàn)報表輸出功能########2012-1#0#-#2#9####2012-10-29################2012-10-292010年第4期信息時代82TIANJINSCIENCE&TECHNOLOGY劉振鵬,天津市科技創(chuàng)業(yè)服務中心天津30019,2在ASP.Net中利用iTextSharp實現(xiàn)報表輸出功能【摘要】報表輸出模塊是信息管理系統(tǒng)的重要組成部分,通過生成PDF格式的文檔來讓B/S開發(fā)結構的信息管理系統(tǒng)實現(xiàn)報表輸出功能是個可行的思路。來自第三方的開源組件iText#可以很好地實現(xiàn)PDF文件的生成,用iText#能夠很方便地制作出精美的PDF報表文件,通過實例對iText#的應用方法進行了講解。iText#【關鍵詞】信息管理系統(tǒng)ASP.NET報表PDF文檔隨著互聯(lián)網(wǎng)應用的發(fā)展,以B/S結構模式開發(fā)的信息管來存放我們系統(tǒng)已經(jīng)生成的PDF文檔,在項目MyApp“”中再理系統(tǒng)顯示了很強的優(yōu)越性,瀏覽器承擔了客戶端的執(zhí)行任新建一個文件夾,命名為images,用來存放我們準備好的圖像務,使得網(wǎng)絡信息系統(tǒng)的維護升級更加容易,對客戶端的要求一個im01.jpg文件,分辨率為素材,在本實例中我們放入。因此很多信息管也更低,對各種操作系統(tǒng)有著很強的兼容性400×230。B/S架構來開發(fā)的。理系統(tǒng)都是以第五,添加一個新的Web窗體,命名為run.aspx,在run.在ASP.Net信息管理系統(tǒng)的開發(fā)過程中,經(jīng)常會遇到數(shù)aspx.cs中添加如下引用,。由于瀏覽器本身控制打印機的能力很有據(jù)報表打印的問題usingSystem.IO;。通過客戶端的瀏限,不同瀏覽器的打印結果也存在很大差異usingICSharpCode.SharpZipLib;覽器控制打印機完成精確的打印結果,實現(xiàn)起來是相對困難usingiTextSharp;usingPDF。所以系統(tǒng)生成一個文檔發(fā)送給客戶端,是一個很好的的iTextSharp.text;using。經(jīng)過各種嘗試,我最終選擇了可以實現(xiàn)精美報表輸出的辦法iTextSharp.text.pdf;PDF報表輸出的第三方組件iText#。在這里簡單介精確控制第六,在run.aspx頁面中添加一個ID為Button1的按iText#是如何實現(xiàn)報表輸出功能的。紹一下鈕,TEXT屬性為生成PDF,在設計頁面雙擊這個按鈕“”iText#,iTextSharp,是開源軟件開發(fā)網(wǎng)。為它編寫代碼的一個項目,這個組件包含兩個類庫,ICSharpCode.SharpZi-第七,接下來我們開始進行PDF相關代碼的編寫,將生成和itextsharp.dll,它們的作用就是提供一系列生成pLib.dll、表格、圖像的PDF輸出樣張。以下是完整一個包含標題文字PDF文檔的類供我們使用。。的源代碼,我將通過注釋詳細解釋代碼的含義實例操作如下,protectedvoidButton1_Click(objectsender,EventArgse)首先,打開MSVisualStudio,建立一個新的C#{ASP.NETWeb應用程序項目,命名為M“”“//開始生成一個PDF文檔,首先要對PDF文檔的頁面大小、yApp?!蔽募头掌鞫舜鎯β窂竭M行設置iText#的2其次,將個控件文件復制到新項目的//創(chuàng)建一個A4幅面的PDF文件,并設置左右上下的頁邊距BIN文件夾下,在項目中添加對這兩個控件的引用,右擊“”=newDocumentdocumentDocument(PageSize.A4,30,“引用”,單擊“添加引用”,在“添加引用”窗口30,65,66);Text#瀏覽標簽,找到i-的兩個文件,選定后單擊“”中選擇//獲得default.aspx的絕對路徑。確定,stringbpath=MapPath("default.aspx");第三,在項目“MyApp”中新建一文件夾,命名為//獲得沒有文件名的絕對路徑font,用來存放我們在生成PDF時需要用到的中英文字庫。bpath=bpath.Remove(bpath.Length-12,12);接下來我們到Windows\fonts的目錄中找到我們要用的字//定義PDF存放的包含文件名的絕對路徑MyApp中的font文件夾中。例“”庫文件,將他們復制到stringbpath1=bpath+"pdf/demo.pdf";SIMHEI.TTF、宋體字庫文件simkai.ttf、幼如黑體字庫文件//定義我們將要用到的黑體字庫的存放路徑SIMYOU.TTF等。stringbpath2=bpath+"font/SIMHEI.TTF";圓字庫收稿日期,2010-07-09第四,在項目“MyApp”中新建一個文件夾,命名為//定義我們將要用到的宋體字庫的存放路徑########2012-1#0#-#2#9####2012-10-29################2012-10-29pdf,用########2012-1#0#-#2#9####2012-10-29###########2012-10-292010年第4期信息時代83TIANJINSCIENCE&TECHNOLOGYstringbpath3=bpath+"font/simkai.ttf";Table_1.DefaultVerticalAlignment=Element.ALIGN_MID-//定義我們將要用到的幼園體字庫的存放路徑DLE;stringbpath4=bpath+"font/SIMYOU.TTF";//表格的第1行內(nèi)容,合并整行為1個單元格//實例化我們將要用到的黑體字庫cell=newiTextSharp.text.Cell(newPhrase("1、這里的文字將BaseFontHei=BaseFont.CreateFont(bpath2,BaseFont.I-占用1行,4列,左對齊",font_a2));BEDDED);cell.Colspan=4;//設定這個單元格將橫跨4列,占滿1行DENTITY_H,BaseFont.NOT_EM//實例化我們將要用到的宋體字庫//如果需要讓文字實現(xiàn)垂直居中或者垂直居頂?shù)雀袷?必須設BaseFontst=BaseFont.CreateFont(bpath3,BaseFont.I-置UseAscender屬性為trueBEDDED);cell.UseAscender=true;DENTITY_H,BaseFont.NOT_EMcell.HorizontalAlignment=Element.ALIGN_LEFT;//設置將文//實例化我們將要用到的幼園體字庫BaseFontyy=BaseFont.CreateFont(bpath4,BaseFont.I-字按左對齊方式填入單元格BEDDED);cell.BorderColor=newColor(255,255,255);//設置不顯示單DENTITY_H,BaseFont.NOT_EM//定義我們本實例中可以使用的字體20點黑體字元格的邊框顏色cell.BackgroundColor=newColor(244,249,156);//設置單Fontfont_t=newFont(Hei,20);//定義我們本實例中可以使用的字體12點宋體字元格的背景色Fontfont_a1=newFont(st,12);//將單元格裝入表格,這個過程很像搭積木//定義我們本實例中可以使用的字體10點幼園體字Table_1.AddCell(cell);//表格的第2行內(nèi)容,合并前3列為1個單元格Fontfont_a2=newFont(yy,10);//開始建立我們的PDF文檔cell=newiTextSharp.text.Cell(newPhrase("2、這里的文字占",font_a2));PdfWriter.GetInstance(document,newFileStream(bpath1,用一行,3列,左對齊FileMode.Create));cell.Colspan=3;//設定這個單元格將橫跨3列document.Open();cell.UseAscender=true;cell.HorizontalAlignment=Element.ALIGN_LEFT;//實例化一個文本段落,用來實現(xiàn)我們文檔的主標題=newColor(255,255,255);strs=newParagraph("PDF輸出樣張",font_t);cell.BorderColorParagraph=newColor(241,231,251);cell.BackgroundColorstrs.SetAlignment("CENTER");//設置段落為居中對齊PDF文件中Table_1.AddCell(cell);document.Add(strs);//將標題段落加入",font_t));//根據(jù)排版的需//表格的第2行最后1個單元格document.Add(newParagraph("cell=newiTextSharp.text.Cell(newPhrase("3、一行1列,右要輸出一個空行對齊",font_a2));//重新生成1個文本段落,用來顯示1行正文strs=newParagraph("這里我們開始制作我們的PDF文檔,cell.Colspan=1;//設定這個單元格占用1列。cell.UseAscender=true;這里是一段文字,下面將利用表格來定位一些文字塊",font_a1);cell.HorizontalAlignment=Element.ALIGN_RIGHT;=newColor(255,255,255);strs.SetAlignment("CENTER");//設置段落為居中對齊cell.BorderColordocument.Add(strs);//將標題段落加入PDF文件中=newColor(241,231,251);cell.BackgroundColor//接下來我們建立1個表格,通過這個表格來格式化文字的顯Table_1.AddCell(cell);//表格的第3、4行,這里把2行3列合并為一個單元格示cell=newiTextSharp.text.Cell(newPhrase("4、這里的文字占iTextSharp.text.TableTable_1;//實例化1個PDF表格,名為Table_1",font_a2));用兩行,3列,垂直居中左對齊iTextSharp.text.Cellcell;//實例化1個單元格對象,名為cellcell.UseAscender=true;//初始化Table_1表格對象這個表格有4列cell.Colspan=3;//設定這個單元格將橫跨3列Table_1=newiTextSharp.text.Table(4);span=2;//設定這個單元格將橫跨2行cell.Row//這里要設置表格的填距為2,表格的填距就是單元格邊界和=Element.ALIGN_MIDDLE;cell.VerticalAlignment=Element.ALIGN_LEFT;內(nèi)容間一定數(shù)量的空間,設置填距就是為了避免文字緊貼表cell.HorizontalAlignment=newColor(255,255,255);cell.BorderColor格底線=newColor(238,167,175);Table_1.Cellpadding=2;cell.BackgroundColor//表格邊框的顏色,這里設定為白色,達到不顯示表格線的效Table_1.AddCell(cell);//表格的第3行最后1個單元格果Table_1.BorderColor=newColor(255,255,255);cell=newiTextSharp.text.Cell(newPhrase("5、一行1列,右//設置了單元格的縱向?qū)R為垂直居中對齊",font_a2));########2012-1#0#-#2#9####2012-10-29###########2012-10-29########2012-1#0#-#2#9####2012-10-29###########2012-10-292010年第4期信息時代84TIANJINSCIENCE&TECHNOLOGYcell.UseAscender=true;//第1行,作為標題行,在表格被分頁的時候標題行能夠自動cell.Colspan=1;//設定這個單元格占用1列被重復=Element.ALIGN_RIGHT;cell=newiTextSharp.text.Cell(newPhrase("標題一",cell.HorizontalAlignment=new255,Color(255,255);1個單元格的內(nèi)容cell.BorderColorfont_a1));//定義第=new167,Color(238,175);cell.UseAscender=true;cell.BackgroundColorcell.BackgroundColor=newColor(244,249,156);Table_1.AddCell(cell);//表格的第4行最后1個單元格=Element.ALIGN_CENTER;cell.HorizontalAlignmentcell=newiTextSharp.text.Cell(newPhrase("6、一行1列,右Table_1.AddCell(cell);對齊",font_a2));cell=newiTextSharp.text.Cell(newPhrase("標題二",cell.UseAscender=true;font_a1));//定義第2個單元格的內(nèi)容cell.Colspan=1;//設定這個單元格占用1列cell.UseAscender=true;=Element.ALIGN_RIGHT;cell.BackgroundColor=newColor(244,249,156);cell.HorizontalAlignment=newColor(255,255,255);=Element.ALIGN_CENTER;cell.BorderColorcell.HorizontalAlignment=newColor(238,167,175);cell.BackgroundColorTable_1.AddCell(cell);Table_1.EndHeaders();//可以定義多行為標題行,這里表示標Table_1.AddCell(cell);//將這個表格加入PDF文件中題行到此結束。document.Add(Table_1);//這里為表格添加多行內(nèi)容,其中第二列為圖形IM1//接下來我們將一個圖像放入PDF文檔IM1.RotationDegrees=0;//設定圖像無旋轉(zhuǎn)角度IMiTextSharp.text.ImageIM1;//實例化一個圖形對象,名為IM11.ScaleAbsolute(50,13);//設定圖像的寬度和高度int//定義圖像對象IM1的文件名和路徑k;IM1=iTextSharp.text.Image.GetInstance(Server.MapPathfor(k=1;k<=16;k++)//生成16行的表格內(nèi)容("images")+"/im01.jpg");{IM1.ScaleAbsolute(400,230);//設定圖像的寬度和高度IM//內(nèi)容行的第1列1.Alignment=iTextSharp.text.Image.ALIGN_MIDDLE;//圖cell=newiTextSharp.text.Cell(newPhrase(k.ToString().Trim()+"、表格內(nèi)容第1列",font_a1));像要居中顯示//將這個圖像加入PDF文件中cell.UseAscender=true;//如果需要讓文字實現(xiàn)垂直居document.Add(IM1);中或者垂直居頂?shù)雀袷?必須設置UseAscender屬性為true//現(xiàn)在我們再將剛才的圖像縮小到30%并逆時針旋轉(zhuǎn)90?Table_1.AddCell(cell);作為其他后續(xù)文本的背景//內(nèi)容行的第2列,放入圖片IM1.ScalePercent(30);//設定圖像縮小到30%Table_1.AddCell(newCell(IM1));//將單元格裝入表格//設定圖像將作為文字的背景并且居中對齊}IM1.Alignment=iTextSharp.text.Image.UNDERLYING|i-document.Add(Table_1);//將這個表格加入PDF文件中IDDLE;IM//完成了PDF文檔的內(nèi)容,關閉文檔TextSharp.text.Image.ALIGN_M1.RotationDegrees=90;//設定圖像的逆時針旋轉(zhuǎn)角度document.Close();//將這個圖像加入PDF文件中//支持客戶端下載的功能代碼document.Add(IM1);stringfilePath=bpath1;//重新初始化一個段落,這段內(nèi)容將不會繞過剛才的圖片if(File.Exists(filePath)==false)strs=newParagraph("\n\n這些文字將不會繞過圖片。\n\n",{//服務器上沒有這個文件font_t);strs.SetAlignment("CENTER");//設置段落為居中對齊return;//將這個浮在圖像上面的段落加入PDF文件中}document.Add(strs);//設定字符集和編碼方式,為了充分支持中文文件名,必須進//接下來我們將嘗試建立一個帶有標題行的表格,還會在表格行以下設定Page.Response.Clear();Page.Response.Charset="gb2312";中使用圖片Table_1=newiTextSharp.text.Table(2);=System.Text.Encoding.//初始化Page.Response.ContentEncodingTable_1對象這個表格有2列UTF8;Table_1.Cellpadding=2;//設置了表格的填距Table_1.DefaultVerticalAlignment=Element.ALIGN_MID-Page.Response.AddHeader("Content-Type","applica-DLE;//設置了單元格的縱向?qū)Rtion/pdf");########2012-1#0#-#2#9####2012-10-29###########2012-10-29########2012-1#0#-#2#9####2012-10-29###########2012-10-292010年第4期信息時代85TIANJINSCIENCE&TECHNOLOGYStringfilenamestr="PDF輸出樣張";//設定下載時默認的以上我們通過一個實例,了解了如何使用iText#來生成PDF文件名一個PDF文檔,在這個PDF樣文檔中,我們使用了文字段落、Page.Response.AddHeader("Content-Disposition","attach-圖像、表格等元素,并對這些元素進行屬性控制,實現(xiàn)我們對報"+System.Web.HttpUtility.UrlEncode(file-。通過靈活使用這些元素我們可以實現(xiàn)ment;filename=表精細控制輸出的功能+".PDF");namestr,System.Text.Encoding.UTF8)很豐富的報表功能,例如通過表格的嵌套可以實現(xiàn)很復雜的格
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行業(yè)贊助合作協(xié)議書要求
- 點點善意暖人心2025大連中考范文(15篇)
- 品讀人生800字14篇
- 2025新編采購合作合同范本
- 農(nóng)業(yè)種植技術研究與分享合同
- 今天是重陽節(jié)600字作文(14篇)
- 2025年農(nóng)村扶貧公路建設項目維護崗位合同
- 知識產(chǎn)權轉(zhuǎn)讓及保密協(xié)議合同書規(guī)范
- 2025年檔案知識競賽題庫(附答案)
- 2025年大學生心理健康科普知識競賽題庫及答案
- DB11-T 1692-2019 城市樹木健康診斷技術規(guī)程
- 低壓配電柜改造施工方案
- 2025年廣東清遠市清新區(qū)招聘事業(yè)單位工作人員5人高頻重點提升(共500題)附帶答案詳解
- 體育會展業(yè)的國際化發(fā)展趨勢-洞察分析
- 2025企業(yè)消防工作計劃范文
- (非線性光學課件)第三章-二階非線性光學效應
- 觀遠ChatBI介紹報告
- 《原發(fā)性肝癌診療指南(2024年版)》解讀
- 河道臨時改移專項施工方案
- 《工作態(tài)度與心態(tài)》課件
- 《倒虹吸管安全評價導則》
評論
0/150
提交評論