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

首頁 > 開發 > 綜合 > 正文

用C#實現生成PDF文檔(原碼)

2024-07-21 02:18:29
字體:
來源:轉載
供稿:網友
用c#實現生成pdf文檔(原碼)

//write by wenhui.org
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();
}
}
}




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西和县| 桐柏县| 怀化市| 岳阳市| 富阳市| 习水县| 郧西县| 荣成市| 扶绥县| 含山县| 印江| 凭祥市| 祁连县| 石首市| 德钦县| 会宁县| 吉安市| 织金县| 横山县| 广宗县| 云和县| 九寨沟县| 柳河县| 普宁市| 泊头市| 德阳市| 恩施市| 芜湖县| 石嘴山市| 长沙县| 建水县| 红安县| 青冈县| 石家庄市| 华阴市| 新蔡县| 灌阳县| 浠水县| 阿荣旗| 灵丘县| 宜良县|