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#实现生成PDF文档-.NET教程,C#语言
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用C#实现生成PDF文档-.NET教程,C#语言
相关推荐
-      VS2010的aspx文件中的html代码的格式化方法
-      .net 反序题目的详细解答第1/2页
-      asp.net创建html文本文件实例
-      比较完整的 asp.net 学习流程
-      官网 Ext direct包中.NET版的问题
-      C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页
-      c# 连接字符串数据库服务器端口号 .net状态服务器端口号
-      asp.net教程:简单的C#图片上传代码或C#文件上传代码