国产探花免费观看_亚洲丰满少妇自慰呻吟_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();
}
}
}




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察哈| 琼海市| 万州区| 普兰县| 丰宁| 沙湾县| 通江县| 常州市| 哈巴河县| 灌云县| 济源市| 汉源县| 师宗县| 呼伦贝尔市| 长顺县| 涞源县| 景泰县| 通道| 普安县| 阜新市| 万山特区| 江源县| 通许县| 武平县| 德保县| 宁明县| 盘锦市| 天津市| 巴林右旗| 正安县| 宿迁市| 邯郸市| 安龙县| 华安县| 长海县| 芒康县| 格尔木市| 龙口市| 三门县| 临清市| 从化市|