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

    技术2022-05-11  33

    (一). 功能    创建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 { 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);102103        //Add 2 object to xRef104        xRefs.Add(mPDF.Length);105        strPDFMessage = "2 0 obj/n" + streamLen + "/nendobj/n";106        ConvertToByteAndAddtoStream(strPDFMessage);107108        //Add Page to xRefs109        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);112113        //Build the Pages114        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);123124        //Add font to xRefs125        xRefs.Add(mPDF.Length);126        strPDFMessage = "5 0 obj/n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>/nendobj/n";127        ConvertToByteAndAddtoStream(strPDFMessage);128129        //Add the catalog to xRefs130        xRefs.Add(mPDF.Length);131        strPDFMessage = "6 0 obj/n<</Type/Catalog/Pages 4 0 R>>/nendobj/n";132        ConvertToByteAndAddtoStream(strPDFMessage);133134        //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 PDF143        strPDFMessage = "trailer/n<</n/Size " + (xRefs.Count + 1+ "/n/Root 6 0 R/n>>/n";144        ConvertToByteAndAddtoStream(strPDFMessage);145        //xRef location entry146        strPDFMessage = "startxref/n" + streamStart + "/n%%EOF/n";147        ConvertToByteAndAddtoStream(strPDFMessage);148        //Write the PDF from Memory Stream to File Stream149        mPDF.WriteTo(pPDF.BaseStream);150        //Close the Stream151        mPDF.Close();152        pPDF.Close();153    }154} 155

    (三). 示例代码下载

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

                                                                                                           

    最新回复(0)