国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#編程簡單實現生成PDF文檔的方法示例

2020-01-24 00:35:26
字體:
來源:轉載
供稿:網友

本文實例講述了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<</Type/Page/Parent 4 0 R/Contents 1 0 R>>/nendobj/n";      ConvertToByteAndAddtoStream(strPDFMessage);      xRefs.Add(mPDF.Length);      strPDFMessage = "4 0 obj/n<</Type /Pages /Count 1/n";      ConvertToByteAndAddtoStream(strPDFMessage);      strPDFMessage = "/Kids[/n3 0 R/n]/n";      ConvertToByteAndAddtoStream(strPDFMessage);      strPDFMessage = "/Resources<</PRocSet[/PDF/Text]/Font<</F0 5 0 R>> >>/n";      ConvertToByteAndAddtoStream(strPDFMessage);      strPDFMessage = "/MediaBox [ 0 0 " + pageWidth + " " + pageDepth + " ]/n>>/nendobj/n";      ConvertToByteAndAddtoStream(strPDFMessage);      xRefs.Add(mPDF.Length);      strPDFMessage = "5 0 obj/n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>/nendobj/n";      ConvertToByteAndAddtoStream(strPDFMessage);      xRefs.Add(mPDF.Length);      strPDFMessage = "6 0 obj/n<</Type/Catalog/Pages 4 0 R>>/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();    }  }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#文件操作常用技巧匯總》、《C#遍歷算法與技巧總結》、《C#程序設計之線程使用技巧總結》、《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》及《C#面向對象程序設計入門教程

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五家渠市| 环江| 甘泉县| 大冶市| 高青县| 沙湾县| 神池县| 高淳县| 临城县| 儋州市| 泸水县| 团风县| 南投县| 西充县| 玉环县| 梁平县| 青阳县| 江安县| 新源县| 客服| 沁源县| 应用必备| 滦平县| 多伦县| 凉城县| 安达市| 鹤岗市| 福海县| 珠海市| 林周县| 霍林郭勒市| 曲麻莱县| 东海县| 阿拉尔市| 蓬莱市| 宁国市| 栖霞市| 北票市| 育儿| 拉孜县| 称多县|