国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Asp.net 2.0 用C# 創建 PDF文件[引用] (示例代碼下載)

2024-07-10 13:07:19
字體:
來源:轉載
供稿:網友

(一). 功能
   創建pdf文件
(二). 代碼
  1using system;
  2using system.data;
  3using system.configuration;
  4using system.web;
  5using system.web.security;
  6using system.web.ui;
  7using system.web.ui.webcontrols;
  8using system.web.ui.webcontrols.webparts;
  9using system.web.ui.htmlcontrols;
 10using system.io;
 11using system.text;
 12using system.collections;
 13
 14public partial class _default : system.web.ui.page
 15{
 16    static float pagewidth = 594.0f;
 17    static float pagedepth = 828.0f;
 18    static float pagemargin = 30.0f;
 19    static float fontsize = 10.0f;
 20    static float leadsize = 10.0f;
 21
 22    //指定要生成pdf文件的路徑   
 23    static streamwriter ppdf = new streamwriter("e://net//websites//create_pdf_file//test.pdf");//指定生成的路徑
 24   
 25    static memorystream mpdf = new memorystream();
 26
 27    //convert the text data to pdf format and write back to
 28    //memory stream
 29    static void converttobyteandaddtostream(string strmsg)
 30    {
 31        byte[] buffer = null;
 32        buffer = asciiencoding.ascii.getbytes(strmsg);
 33        mpdf.write(buffer, 0, buffer.length);
 34        buffer = null;
 35    }
 36
 37    //format the data length in xref format
 38    static string xrefformatting(long xvalue)
 39    {
 40        string strmsg = xvalue.tostring();
 41        int ilen = strmsg.length;
 42        if (ilen < 10)
 43        {
 44            stringbuilder s = new stringbuilder();           
 45            int i = 10 - ilen;
 46            s.append('0', i);
 47            strmsg = s.tostring() + strmsg;
 48        }
 49        return strmsg;
 50    }
 51    protected void page_load(object sender, eventargs e)
 52    {
 53
 54    }
 55    protected void button1_click(object sender, eventargs e)
 56    {
 57        //create a arraylist for xrefs of pdf document
 58        arraylist xrefs = new arraylist();       
 59        float ypos = 0f;
 60        long streamstart = 0;
 61        long streamend = 0;
 62        long streamlen = 0;
 63        string strpdfmessage = null;
 64        //pdf header message
 65        strpdfmessage = "%pdf-1.1/n";
 66        converttobyteandaddtostream(strpdfmessage);
 67
 68        //id 1 for containt
 69        //id 2 for length of the stream
 70        //write the text
 71
 72        //1> start a new page
 73        xrefs.add(mpdf.length);
 74        strpdfmessage = "1 0 obj/n";
 75        converttobyteandaddtostream(strpdfmessage);
 76        strpdfmessage = "<< /length 2 0 r >>/n";
 77        converttobyteandaddtostream(strpdfmessage);
 78        strpdfmessage = "stream/n";
 79        converttobyteandaddtostream(strpdfmessage);
 80
 81        //get the start of the stream
 82        streamstart = mpdf.length;
 83        strpdfmessage = "bt/n/f0 " + fontsize + " tf/n";
 84        converttobyteandaddtostream(strpdfmessage);
 85        ypos = pagedepth - pagemargin;
 86        strpdfmessage = pagemargin + " " + ypos + " td/n";
 87        converttobyteandaddtostream(strpdfmessage);
 88        strpdfmessage = leadsize + " tl/n";
 89        converttobyteandaddtostream(strpdfmessage);
 90
 91        //add the text data to the pdf memory stream
 92        strpdfmessage = "(do a test)tj/n";
 93        converttobyteandaddtostream(strpdfmessage);
 94        strpdfmessage = "et/n";
 95        converttobyteandaddtostream(strpdfmessage);
 96        //get the end of the stream
 97        streamend = mpdf.length;
 98        //get the length of the stream
 99        streamlen = streamend - streamstart;
100        strpdfmessage = "endstream/nendobj/n";
101        converttobyteandaddtostream(strpdfmessage);
102
103        //add 2 object to xref
104        xrefs.add(mpdf.length);
105        strpdfmessage = "2 0 obj/n" + streamlen + "/nendobj/n";
106        converttobyteandaddtostream(strpdfmessage);
107
108        //add page to xrefs
109        xrefs.add(mpdf.length);
110        strpdfmessage = "3 0 obj/n<</type/page/parent 4 0 r/contents 1 0 r>>/nendobj/n";
111        converttobyteandaddtostream(strpdfmessage);
112
113        //build the pages
114        xrefs.add(mpdf.length);
115        strpdfmessage = "4 0 obj/n<</type /pages /count 1/n";
116        converttobyteandaddtostream(strpdfmessage);
117        strpdfmessage = "/kids[/n3 0 r/n]/n";
118        converttobyteandaddtostream(strpdfmessage);
119        strpdfmessage = "/resources<</procset[/pdf/text]/font<</f0 5 0 r>> >>/n";
120        converttobyteandaddtostream(strpdfmessage);
121        strpdfmessage = "/mediabox [ 0 0 " + pagewidth + " " + pagedepth + " ]/n>>/nendobj/n";
122        converttobyteandaddtostream(strpdfmessage);
123
124        //add font to xrefs
125        xrefs.add(mpdf.length);
126        strpdfmessage = "5 0 obj/n<</type/font/subtype/type1/basefont/courier/encoding/winansiencoding>>/nendobj/n";
127        converttobyteandaddtostream(strpdfmessage);
128
129        //add the catalog to xrefs
130        xrefs.add(mpdf.length);
131        strpdfmessage = "6 0 obj/n<</type/catalog/pages 4 0 r>>/nendobj/n";
132        converttobyteandaddtostream(strpdfmessage);
133
134        //xrefs entry
135        streamstart = mpdf.length;
136        strpdfmessage = "xref/n0 7/n0000000000 65535 f /n";
137        for (int i = 0; i < xrefs.count; i++)
138        {
139            strpdfmessage += xrefformatting((long)xrefs[i]) + " 00000 n /n";
140        }
141        converttobyteandaddtostream(strpdfmessage);
142        //trailer for the pdf
143        strpdfmessage = "trailer/n<</n/size " + (xrefs.count + 1) + "/n/root 6 0 r/n>>/n";
144        converttobyteandaddtostream(strpdfmessage);
145        //xref location entry
146        strpdfmessage = "startxref/n" + streamstart + "/n%%eof/n";
147        converttobyteandaddtostream(strpdfmessage);
148        //write the pdf from memory stream to file stream
149        mpdf.writeto(ppdf.basestream);
150        //close the stream
151        mpdf.close();
152        ppdf.close();
153    }
154}
155
(三). 示例代碼下載

        http://www.cnblogs.com/files/chengking/create_pdf_file.rar 

                                      



收集最實用的網頁特效代碼!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巫溪县| 巴林左旗| 大丰市| 瓮安县| 延川县| 巴林左旗| 岱山县| 阿拉善左旗| 南涧| 沈丘县| 吉木萨尔县| 柳林县| 类乌齐县| 且末县| 定襄县| 乌兰县| 惠水县| 龙游县| 吉林省| 册亨县| 彰武县| 阳江市| 辛集市| 禹州市| 拜城县| 滨州市| 永城市| 安多县| 玉树县| 富源县| 深圳市| 慈利县| 伊川县| 沾化县| 商都县| 会宁县| 新泰市| 沙河市| 吴桥县| 明水县| 蛟河市|