日期:2011-07-13  浏览次数:20479 次

//创建pdf文件  
  using   System;  
  using   System.IO;  
  using   System.Text;  
  using   System.Collections;  
   
  namespace   paladin.utility  
  {  
  ///   <summary>  
  ///   ToPdf   的摘要说明。  
  ///   </summary>  
  public   class   ToPdf  
  {  
  static   float   pageWidth   =   594.0f;  
  static   float   pageDepth   =   828.0f;  
  static   float   pageMargin   =   30.0f;  
  static   float   fontSize   =   20.0f;  
  static   float   leadSize   =   10.0f;  
   
  static   MemoryStream   mPDF=   new   MemoryStream();  
   
  public   ToPdf()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
   
  static   void   ConvertToByteAndAddtoStream(string   strMsg)  
  {  
  Byte[]   buffer=null;  
  buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);  
  mPDF.Write(buffer,0,buffer.Length);    
  buffer=null;  
  }  
   
  static   string   xRefFormatting(long   xValue)  
  {  
  string   strMsg   =xValue.ToString();  
  int   iLen=strMsg.Length;  
  if   (iLen<10)  
  {  
  StringBuilder   s=new   StringBuilder();  
  int   i=10-iLen;  
  s.Append('0',i);  
  strMsg=s.ToString()   +   strMsg;  
  }  
  return   strMsg;  
  }  
   
  static   public   void   CreatePdf(string   filePath)  
  {  
  StreamWriter   pPDF=new   StreamWriter(filePath);  
   
  ArrayList   xRefs=new   ArrayList();  
  //Byte[]   buffer=null;  
  float   yPos   =0f;  
  long   streamStart=0;  
  long   streamEnd=0;  
  long   streamLen   =0;  
  string   strPDFMessage=null;  
  //PDF文档头信息  
  strPDFMessage="%PDF-1.1\n";  
  ConvertToByteAndAddtoStream(strPDFMessage);  
   
  xRefs.Add(mPDF.Length);  
  strPDFMessage="1   0   obj\n";  
  ConvertToByteAndAddtoStream(strPDFMessage);  
  strPDFMessage="<<   /Length   2   0   R   >>\n";  
  ConvertToByteAndAddtoStream(strPDFMessage);  
  strPDFMessage="stream\n";  
  ConvertToByteAndAddtoStream(strPDFMessage);  
  ////////PDF文档描述  
  streamStart=mPDF.Length;  
  //字体  
  strPDFMessage="BT\n/F0   "   +   fontSize   +"   Tf\n";  
  ConvertToByteAndAddtoStream(strPDFMessage);  
  //PDF文档实体高度  
  yPos   =   pageDepth   -   pageMargin;  
  strPDFMessage=pageMargin   +   "   "   +   yPos   +"   Td\n"   ;  
  ConvertToByteAndAddtoStream(strPDFMessage);  
  strPDFMessage=   leadSize+"   TL\n"