首页 > 编程 > .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 

                                      



收集最实用的网页特效代码!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表