asp net2 0匯出pdf檔案完美解決方案【月兒原創】
asp.net2.0匯出pdf檔案完美解決方案
作者:清清月兒
主頁:http://blog.csdn.net/21aspnet/ 時間:2007.5.28
PDF簡介:PDF(Portable Document Format)檔案格式是Adobe公司開發的電子檔案格式。這種檔案格式與作業系統平臺無關,也就是說,PDF檔案不管是在Windows,Unix還是在蘋果公司的Mac OS作業系統中都是通用的。這一特點使它成為在Internet上進行電子文件發行和數字化資訊傳播的理想文件格式。越來越多的電子圖書、產品說明、公司文告、網路資料、電子郵件開始使用PDF格式檔案。PDF格式檔案目前已成為數字化資訊事實上的一個工業標準。
Adobe公司設計PDF檔案格式的目的是為了支援跨平臺上的,多媒體整合的資訊出版和釋出,尤其是提供對網路資訊釋出的支援。為了達到此目的, PDF具有許多其他電子文件格式無法相比的優點。PDF檔案格式可以將文字、字型、格式、顏色及獨立於裝置和解析度的圖形影象等封裝在一個檔案中。該格式檔案還可以包含超文字連結、聲音和動態影像等電子資訊,支援特長檔案,整合度和安全可靠性都較高。
日常工作中經常遇到想把報表和網頁匯出到PDF的需求。本文提供完美的解決方案:
ASP.NET匯出到PDF的最終效果圖(其實winform和控制檯程式都一樣可以做)。
本文實現 文字,圖片,資料表的匯出
核心技術方案:使用itextsharp.dll
1.下載itextsharp.dll和ICSharpCode.SharpZipLib.dll
http://sourceforge.net/project/showfiles.php?group_id=72954
iTextSharp.tutorial.01.zip 示例檔案 提供了各種解決方案本文由於時間問題僅做拋磚引玉,希望大家自己研究其他需求
itextsharp.dll itextsharp-4.0.3-dll.zip
ICSharpCode.SharpZipLib.dll
SharpZipLib.dll類庫中的內容實現的壓縮與解壓功能,它是開源的
2.引用itextsharp.dll和ICSharpCode.SharpZipLib.dll
3.後臺程式碼:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
static DataTable datatable = new DataTable("testpdf");
protected void Page_Load(object sender, EventArgs e)
{
//判斷是否是回發頁面http://blog.csdn.net/21aspnet
if (!Page.IsPostBack)
{
DataRow dr;
//建立Column例,可以指明例的型別,這裡用的是預設的string
datatable.Columns.Add(new DataColumn("編號"));
datatable.Columns.Add(new DataColumn("使用者名稱"));
for (int i = 1; i < 5; i++)
{
dr = datatable.NewRow();
dr[0] = System.Convert.ToString(i);
dr[1] = "清清月兒" + System.Convert.ToString(i);
datatable.Rows.Add(dr);
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Document document = new Document();
PdfWriter.getInstance(document, new FileStream(Server.MapPath("Chap0101.pdf"), FileMode.Create));
document.Open();
BaseFont bfChinese = BaseFont.createFont("C://WINDOWS//Fonts//simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 0, 0));
document.Add(new Paragraph(this.TextBox1.Text.ToString(), fontChinese));
iTextSharp.text.Image jpeg = iTextSharp.text.Image.getInstance(Server.MapPath("pic015.jpg"));
document.Add(jpeg);
PdfPTable table = new PdfPTable(datatable.Columns.Count);
for (int i = 0; i < datatable.Rows.Count; i++)
{
for (int j = 0; j < datatable.Columns.Count; j++)
{
table.addCell(new Phrase(datatable.Rows[i][j].ToString(), fontChinese));
}
}
document.Add(table);
document.Close();
}
catch (DocumentException de)
{;
Response.Write(de.ToString());
}
}
}
4.前臺程式碼:
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title > 清清月兒 製作匯出PDF http://blog.csdn.net/21aspnet </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:TextBox ID ="TextBox1" runat ="server" ></ asp:TextBox >
< asp:Button ID ="Button1" runat ="server" OnClick ="Button1_Click" Text ="匯出" /></ div >
</ form >
</ body >
</ html >
5.前臺操作:
6.屬性說明:
itextsharp-4.0.3-dll.zip 示例檔案包含幾乎所有的PDF處理需求
顏色:
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 0, 0)); //黑Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 255, 0)); //綠
註釋:
iText支援不同風格的註釋。
u 文字註釋:
你可以新增一小段文字到你的文件中,但它並非文件內容的一部分,註釋有標題和內容:
Annotation a = new Annotation(
"authors",
"Maybe it's because I wanted to be an author myself that I wrote iText.");
對齊方式:
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
下劃線/刪除線:
Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));
Chunk chunk2 = new Chunk("This font is of type ITALIC | STRIKETHRU", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.ITALIC | Font.STRIKETHRU));
加密:
public void setEncryption(boolean strength, String userPassword, String ownerPassword, int permissions);
由於時間問題:更多如頁首頁尾屬性目錄水印單元格間距邊框等等請大家自己研究文件。
你想得到的想不到的示例檔案都有。
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed