C#编程简单实现生成PDF文档的方法示例
本文实例讲述了C#编程简单实现生成PDF文档的方法。分享给大家供大家参考,具体如下:
usingSystem;
usingSystem.IO;
usingSystem.Text;
usingSystem.Collections;
namespacePDFGenerator
{
publicclassPDFGenerator
{
staticfloatpageWidth=594.0f;
staticfloatpageDepth=828.0f;
staticfloatpageMargin=30.0f;
staticfloatfontSize=20.0f;
staticfloatleadSize=10.0f;
staticStreamWriterpPDF=newStreamWriter("E:\\myPDF.pdf");
staticMemoryStreammPDF=newMemoryStream();
staticvoidConvertToByteAndAddtoStream(stringstrMsg)
{
Byte[]buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}
staticstringxRefFormatting(longxValue)
{
stringstrMsg=xValue.ToString();
intiLen=strMsg.Length;
if(iLen<10)
{
StringBuilders=newStringBuilder();
inti=10-iLen;
s.Append('0',i);
strMsg=s.ToString()+strMsg;
}
returnstrMsg;
}
staticvoidMain(string[]args)
{
ArrayListxRefs=newArrayList();
//Byte[]buffer=null;
floatyPos=0f;
longstreamStart=0;
longstreamEnd=0;
longstreamLen=0;
stringstrPDFMessage=null;
//PDF文档头信息
strPDFMessage="%PDF-1.1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="10obj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="<>\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="20obj\n"+streamLen+"\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="30obj\n<>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="40obj\n<>>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="50obj\n<>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="60obj\n<>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamStart=mPDF.Length;
strPDFMessage="xref\n07\n000000000065535f\n";
for(inti=0;i>\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#程序设计有所帮助。