新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例讲述了C#编程简单实现生成PDF文档的方法。分享给大家供大家参考,具体如下:
目前成都创新互联公司已为数千家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器租用、企业网站设计、凤庆网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。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 = "/MediaBox [ 0 0 " + pageWidth + " " + pageDepth + " ]\n>>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage = "5 0 obj\n<>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); xRefs.Add(mPDF.Length); strPDFMessage = "6 0 obj\n<>\nendobj\n"; ConvertToByteAndAddtoStream(strPDFMessage); streamStart = mPDF.Length; strPDFMessage = "xref\n0 7\n0000000000 65535 f \n"; for (int i = 0; i < xRefs.Count; i++) { strPDFMessage += xRefFormatting((long)xRefs[i]) + " 00000 n \n"; } ConvertToByteAndAddtoStream(strPDFMessage); strPDFMessage = "trailer\n<<\n/Size " + (xRefs.Count + 1) + "\n/Root 6 0 R\n>>\n"; ConvertToByteAndAddtoStream(strPDFMessage); strPDFMessage = "startxref\n" + streamStart + "\n%%EOF\n"; ConvertToByteAndAddtoStream(strPDFMessage); mPDF.WriteTo(pPDF.BaseStream); mPDF.Close(); pPDF.Close(); } } }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。