蛍窃

  • 罷周爺仇

  • 喘C#旗鷹伏撹匯倖酒汽議PDF猟周゜
      namespace PDFGenerator                                  
      {                                                                            
      /// < summary>

      /// Application : Ge
    neration of PDF file from te
    xt
      /// Author : Pramod Kumar Singh               
      /// Date : 25th July 2001                            
      ///< /summary>


      public class PDFGenerator                            
      {                                                                            
      static float pageWidth = 594.0f;              
      static float pageDepth = 828.0f;              
      static float pageMargin = 30.0f;              
      static float fontSize = 10.0f;                  
      static float leadSize = 10.0f;                  

      //Create a PDF file.                                      
      //PDF on Disk                                                    
      static StreamWriter
    pPDF=new StreamWriter("F:\T
    emp\myPDF.pdf");
      //PDF in Memory                                                

      static MemoryStream
    mPDF= new MemoryStream();

      //Convert the Text Data to PDF f
    ormat and write back to
      //Memory Stream                                                
      static void ConvertToByteAndAddt
    oStream(string strMsg)
      {                                                                            
      Byte[] buffer=null;                                        

      buffer=ASCIIEncoding
    .ASCII.GetBytes(strMsg);
      mPDF.Write(buffer,0,buffer.Length);       
      buffer=null;                                                      
      }                                                                            

      //Format the data length in xRef Format
      static string xRefFormatting(lon
    g xValue)
      {                                                                            
      string strMsg =xValue.ToString();            
      int iLen=strMsg.Length;                                
      if (iLen< 10)                                              
      {                                                                            
      StringBuilder s=new StringBuilder();      
      //string s=null;                                              
      int i=10-iLen;                                                  
      s.Append('0',i);                                              
      strMsg=s.ToString() + strMsg;                    
      }                                                                            
      return strMsg;                                                  
      }                                                                            

      //Entry Point                                                    
      static void Main(string[] args)                
      {                                                                            

      //Create a ArrayList
    for xRefs of PDF Document
      ArrayList xRefs=new ArrayList();              
      Byte[] buffer=null;                                        
      float yPos =0f;                                                
      long streamStart=0;                                        
      long streamEnd=0;                                            
      long streamLen =0;                                          
      string strPDFMessage=null;                          
      //PDF Header Message                                      
      strPDFMessage="%PDF-1.1n";                        

      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //ID 1 For Containt                                        
      //ID 2 For Length of the Stream                
      //write the Text                                              

      //1> Start a new Page

      xRefs.Add(mPDF.Length);                                
      strPDFMessage="1 0 objn";                          

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      strPDFMessage="< < /Length 2 0 R >>n";

      ConvertToByteAndAddtoStream(strP
    DFMessage);
      strPDFMessage="streamn";                            
      ConvertToByteAndAddtoStream(strP
    DFMessage);

      //Get the start of the stream                    
      streamStart=mPDF.Length;                              

      strPDFMessage="BTn/
    F0 " + fontSize +" Tfn";

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      yPos = pageDepth - pageMargin;                  
      strPDFMessage=pageMargin + " " +
    yPos +" Tdn" ;

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      strPDFMessage= leadSize+" TLn" ;            

      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //Add the text data to the PDF m
    emory stream

      strPDFMessage= "(Pra
    mod Kumar Singh)Tjn" ;
      ConvertToByteAndAddtoStream(strP
    DFMessage);
      strPDFMessage= "ETn";                                  

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      //Get the End of the stream                        
      streamEnd=mPDF.Length;                                  
      //Get the Length of the stream                  
      streamLen=streamEnd-streamStart;              
      strPDFMessage= "endstreamnendobjn";    

      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //Add 2 object to xRef                                  
      xRefs.Add(mPDF.Length);                                
      strPDFMessage="2 0 objn"+ strea
    mLen + "nendobjn";

      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //Add Page to xRefs                                        
      xRefs.Add(mPDF.Length);                                
      strPDFMessage="3 0 objn< < /Type/Page/Parent 4 0 R/Contents 1 0 R>>nendobjn";

      ConvertToByteAndAddtoStream(strP
    DFMessage);

      //Build the Pages                                            
      xRefs.Add(mPDF.Length);                                
      strPDFMessage="4 0 objn< <
    ; /Type /Pages /Count 1n";

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      strPDFMessage="/Kids[n3 0 Rn]n";        

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      strPDFMessage="/Resources< < /ProcSet[/PDF/Text]/Font< < /F0 5 0 R>> >>n";

      ConvertToByteAndAddtoStream(strP
    DFMessage);
      strPDFMessage="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ]n>>nendobjn";

      ConvertToByteAndAddtoStream(strP
    DFMessage);

      //Add font to xRefs                                        
      xRefs.Add(mPDF.Length);                                
      strPDFMessage="5 0 objn< < /Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>nendobjn";


      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //Add the catalog to xRefs                          
      xRefs.Add(mPDF.Length);                                
      strPDFMessage="6 0 objn< < /Type/Catalog/Pages 4 0 R>>nendobjn";


      ConvertToByteAndAddt
    oStream(strPDFMessage);

      //xRefs Entry                                                   
      streamStart=mPDF.Length;                              
      strPDFMessage="xref
    n0 7n0000000000 65535 f n"
    ;
      for(int i=0;i< xRefs.Count;i++)          
      {                                                                            
      strPDFMessage+=xRefF
    ormatting((long) xRefs[i])+"
    00000 n n";
      }                                                                            

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      //Trailer for the PDF                                    
      strPDFMessage="trailern< < n/Size "+ (xRefs.Count+1)+"n/Root 6 0 Rn>>n";

      ConvertToByteAndAddtoStream(strP
    DFMessage);
      //xRef location entry                                    
      strPDFMessage="start
    xrefn" + streamStart+"n%%E
    OFn";

      ConvertToByteAndAddt
    oStream(strPDFMessage);
      //Write the PDF from Memory Stre
    am to File Stream
      mPDF.WriteTo(pPDF.BaseStream);                  
      //Close the Stream                                          
      mPDF.Close();                                                    
      pPDF.Close();                                                    
      }                                                                            
      }                                                                            
      }                                                                            

    貧匯匈 和匯匈




    map