Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)

(一). 功能
创建PDF文件
(二). 代码
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using System.IO;
11 using System.Text;
12 using System.Collections;
13
14 public partial class _Default:System.Web.UI.Page
15 {
16staticfloatpageWidth=594.0f;
17staticfloatpageDepth=828.0f;
18staticfloatpageMargin=30.0f;
19staticfloatfontSize=10.0f;
20staticfloatleadSize=10.0f;
21
22//指定要生成PDF文件的路径
23staticStreamWriterpPDF=newStreamWriter("E:\\net\\WebSites\\Create_PDF_File\\test.pdf");//指定生成的路径
24
25staticMemoryStreammPDF=newMemoryStream();
26
27//ConverttheTextDatatoPDFformatandwritebackto
28//MemoryStream
29staticvoidConvertToByteAndAddtoStream(stringstrMsg)
30{
31Byte[]buffer=null;
32buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
33mPDF.Write(buffer,0,buffer.Length);
34buffer=null;
35}

36
37//FormatthedatalengthinxRefFormat
38staticstringxRefFormatting(longxValue)
39{
40stringstrMsg=xValue.ToString();
41intiLen=strMsg.Length;
42if(iLen<10)
43{
44StringBuilders=newStringBuilder();
45inti=10-iLen;
46s.Append('0',i);
47strMsg=s.ToString()+strMsg;
48}

49returnstrMsg;
50}

51protectedvoidPage_Load(objectsender,EventArgse)
52{
53
54}

55protectedvoidButton1_Click(objectsender,EventArgse)
56{
57//CreateaArrayListforxRefsofPDFDocument
58ArrayListxRefs=newArrayList();
59floatyPos=0f;
60longstreamStart=0;
61longstreamEnd=0;
62longstreamLen=0;
63stringstrPDFMessage=null;
64//PDFHeaderMessage
65strPDFMessage="%PDF-1.1\n";
66ConvertToByteAndAddtoStream(strPDFMessage);
67
68//ID1ForContaint
69//ID2ForLengthoftheStream
70//writetheText
71
72//1>StartanewPage
73xRefs.Add(mPDF.Length);
74strPDFMessage="10obj\n";
75ConvertToByteAndAddtoStream(strPDFMessage);
76strPDFMessage="<</Length20R>>\n";
77ConvertToByteAndAddtoStream(strPDFMessage);
78strPDFMessage="stream\n";
79ConvertToByteAndAddtoStream(strPDFMessage);
80
81//Getthestartofthestream
82streamStart=mPDF.Length;
83strPDFMessage="BT\n/F0"+fontSize+"Tf\n";
84ConvertToByteAndAddtoStream(strPDFMessage);
85yPos=pageDepth-pageMargin;
86strPDFMessage=pageMargin+""+yPos+"Td\n";
87ConvertToByteAndAddtoStream(strPDFMessage);
88strPDFMessage=leadSize+"TL\n";
89ConvertToByteAndAddtoStream(strPDFMessage);
90
91//AddthetextdatatothePDFmemorystream
92strPDFMessage="(Doatest)Tj\n";
93ConvertToByteAndAddtoStream(strPDFMessage);
94strPDFMessage="ET\n";
95ConvertToByteAndAddtoStream(strPDFMessage);
96//GettheEndofthestream
97streamEnd=mPDF.Length;
98//GettheLengthofthestream
99streamLen=streamEnd-streamStart;
100strPDFMessage="endstream\nendobj\n";
101ConvertToByteAndAddtoStream(strPDFMessage);
102
103//Add2objecttoxRef
104xRefs.Add(mPDF.Length);
105strPDFMessage="20obj\n"+streamLen+"\nendobj\n";
106ConvertToByteAndAddtoStream(strPDFMessage);
107
108//AddPagetoxRefs
109xRefs.Add(mPDF.Length);
110strPDFMessage="30obj\n<</Type/Page/Parent40R/Contents10R>>\nendobj\n";
111ConvertToByteAndAddtoStream(strPDFMessage);
112
113//BuildthePages
114xRefs.Add(mPDF.Length);
115strPDFMessage="40obj\n<</Type/Pages/Count1\n";
116ConvertToByteAndAddtoStream(strPDFMessage);
117strPDFMessage="/Kids[\n30R\n]\n";
118ConvertToByteAndAddtoStream(strPDFMessage);
119strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F050R>>>>\n";
120ConvertToByteAndAddtoStream(strPDFMessage);
121strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"]\n>>\nendobj\n";
122ConvertToByteAndAddtoStream(strPDFMessage);
123
124//AddfonttoxRefs
125xRefs.Add(mPDF.Length);
126strPDFMessage="50obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
127ConvertToByteAndAddtoStream(strPDFMessage);
128
129//AddthecatalogtoxRefs
130xRefs.Add(mPDF.Length);
131strPDFMessage="60obj\n<</Type/Catalog/Pages40R>>\nendobj\n";
132ConvertToByteAndAddtoStream(strPDFMessage);
133
134//xRefsEntry
135streamStart=mPDF.Length;
136strPDFMessage="xref\n07\n000000000065535f\n";
137for(inti=0;i<xRefs.Count;i++)
138{
139strPDFMessage+=xRefFormatting((long)xRefs[i])+"00000n\n";
140}

141ConvertToByteAndAddtoStream(strPDFMessage);
142//TrailerforthePDF
143strPDFMessage="trailer\n<<\n/Size"+(xRefs.Count+1)+"\n/Root60R\n>>\n";
144ConvertToByteAndAddtoStream(strPDFMessage);
145//xReflocationentry
146strPDFMessage="startxref\n"+streamStart+"\n%%EOF\n";
147ConvertToByteAndAddtoStream(strPDFMessage);
148//WritethePDFfromMemoryStreamtoFileStream
149mPDF.WriteTo(pPDF.BaseStream);
150//ClosetheStream
151mPDF.Close();
152pPDF.Close();
153}

154}

155

(三). 示例代码下载

http://www.cnblogs.com/Files/ChengKing/Create_PDF_File.rar

[本文核心代码为引用,方便查看用]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值