C#编程简单实现生成PDF文档的方法示例
本文实例讲述了C#编程简单实现生成PDF文档的方法。分享给大家供大家参考,具体如下:
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\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage="10obj\n"; ConvertToByteAndAddtoStream(strPDFMessage); strPDFMessage="<>\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="20obj\n"+streamLen+"\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage="30obj\n<>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage="40obj\n<>>>\n"; ConvertToByteAndAddtoStream(strPDFMessage); strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"]\n>>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage="50obj\n<>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage="60obj\n<>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); streamStart=mPDF.Length; strPDFMessage="xref\n07\n000000000065535f\n"; for(inti=0;i>\n"; ConvertToByteAndAddtoStream(strPDFMessage); strPDFMessage="startxref\n"+streamStart+"\n%%EOF\n"; ConvertToByteAndAddtoStream(strPDFMessage); mPDF.WriteTo(pPDF.BaseStream); mPDF.Close(); pPDF.Close(); } } }
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。