现在的位置: 首页 > 综合 > 正文

c#生成PDF文件源码

2013年10月05日 ⁄ 综合 ⁄ 共 2288字 ⁄ 字号 评论关闭
 
using System; 
using System.IO; 
using System.Text; 
using System.Collections; 

namespace PDFGenerator 
{ 

public class PDFGenerator 
{ 
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 StreamWriter pPDF=new StreamWriter("E://myPDF.pdf"); 

static MemoryStream mPDF= new MemoryStream(); 

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 void Main(string[] args) 
{ 
     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" ; 
     ConvertToByteAndAddtoStream(strPDFMessage); 

     //实体内容 
     strPDFMessage= "(http://www.wenhui.org)Tj/n" ; 
     ConvertToByteAndAddtoStream(strPDFMessage); 
     strPDFMessage= "ET/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 
     streamEnd=mPDF.Length; 

     streamLen=streamEnd-streamStart; 
     strPDFMessage= "endstream/nendobj/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 
     //PDF文档的版本信息 
     xRefs.Add(mPDF.Length); 
     strPDFMessage="2 0 obj/n"+ streamLen + "/nendobj/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 

     xRefs.Add(mPDF.Length); 
     strPDFMessage="3 0 obj/n<>/nendobj/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 

     xRefs.Add(mPDF.Length); 
     strPDFMessage="4 0 obj/n<>/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 

     strPDFMessage="startxref/n" + streamStart+"/n%%EOF/n"; 
     ConvertToByteAndAddtoStream(strPDFMessage); 
     mPDF.WriteTo(pPDF.BaseStream); 

     mPDF.Close(); 
     pPDF.Close(); 
} 
} 
}

抱歉!评论已关闭.