usingSystem;usingSystem.IO;usingSystem.Text;usingSystem.Collections;namespacePDFGenerator...{publicclassPDFGenerator...{staticfloatpageWidth=594.0f;staticfloatpageDepth=828.0f;staticfloatpageMargin=30.0f;staticfloatfontSize=20.0f;staticfloatleadSize=10.0f;staticStreamWriterpPDF=newStreamWriter("E:\myPDF.pdf");staticMemoryStreammPDF=newMemoryStream();staticvoidConvertToByteAndAddtoStream(stringstrMsg)...{Byte[]buffer=null;buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);mPDF.Write(buffer,0,buffer.Length);buffer=null;}staticstringxRefFormatting(longxValue)...{stringstrMsg=xValue.ToString();intiLen=strMsg.Length;if(iLen<10)...{StringBuilders=newStringBuilder();inti=10-iLen;s.Append('0',i);strMsg=s.ToString()+strMsg;}returnstrMsg;}staticvoidMain(string[]args)...{ArrayListxRefs=newArrayList();//Byte[]buffer=null;floatyPos=0f;longstreamStart=0;longstreamEnd=0;longstreamLen=0;stringstrPDFMessage=null;//PDF文档头信息strPDFMessage="%PDF-1.1 ";ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage="10obj ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="<</Length20R>> ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="stream ";ConvertToByteAndAddtoStream(strPDFMessage);/**//**//**/////////PDF文档描述streamStart=mPDF.Length;//字体strPDFMessage="BT /F0"+fontSize+"Tf ";ConvertToByteAndAddtoStream(strPDFMessage);//PDF文档实体高度yPos=pageDepth-pageMargin;strPDFMessage=pageMargin+""+yPos+"Td ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage=leadSize+"TL ";ConvertToByteAndAddtoStream(strPDFMessage);//实体内容strPDFMessage="(http://www.wenhui.org)Tj ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="ET ";ConvertToByteAndAddtoStream(strPDFMessage);streamEnd=mPDF.Length;streamLen=streamEnd-streamStart;strPDFMessage="endstream endobj ";ConvertToByteAndAddtoStream(strPDFMessage);//PDF文档的版本信息xRefs.Add(mPDF.Length);strPDFMessage="20obj "+streamLen+" endobj ";ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage="30obj <</Type/Page/Parent40R/Contents10R>> endobj ";ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage="40obj <</Type/Pages/Count1 ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="/Kids[ 30R ] ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F050R>>>> ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"] >> endobj ";ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage="50obj <</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>> endobj ";ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage="60obj <</Type/Catalog/Pages40R>> endobj ";ConvertToByteAndAddtoStream(strPDFMessage);streamStart=mPDF.Length;strPDFMessage="xref 07 000000000065535f ";for(inti=0;i<xRefs.Count;i++)...{strPDFMessage+=xRefFormatting((long)xRefs[i])+"00000n ";}ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="trailer << /Size"+(xRefs.Count+1)+" /Root60R >> ";ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage="startxref "+streamStart+" %%EOF ";ConvertToByteAndAddtoStream(strPDFMessage);mPDF.WriteTo(pPDF.BaseStream);mPDF.Close();pPDF.Close();}}}