using
System;
using System.IO;
using System.Text;
using System.Collections;
namespace PDFGenerator
{
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="<</Length20R>>\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<</Type/Page/Parent40R/Contents10R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="40obj\n<</Type/Pages/Count1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[\n30R\n]\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F050R>>>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="50obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="60obj\n<</Type/Catalog/Pages40R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamStart=mPDF.Length;
strPDFMessage="xref\n07\n000000000065535f\n";
for(inti=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long)xRefs[i])+"00000n\n";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer\n<<\n/Size"+(xRefs.Count+1)+"\n/Root60R\n>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="startxref\n"+streamStart+"\n%%EOF\n";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);
mPDF.Close();
pPDF.Close();
}
}
}
using System.IO;
using System.Text;
using System.Collections;
namespace PDFGenerator
{
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="<</Length20R>>\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<</Type/Page/Parent40R/Contents10R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="40obj\n<</Type/Pages/Count1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[\n30R\n]\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F050R>>>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox[00"+pageWidth+""+pageDepth+"]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="50obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
xRefs.Add(mPDF.Length);
strPDFMessage="60obj\n<</Type/Catalog/Pages40R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamStart=mPDF.Length;
strPDFMessage="xref\n07\n000000000065535f\n";
for(inti=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long)xRefs[i])+"00000n\n";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer\n<<\n/Size"+(xRefs.Count+1)+"\n/Root60R\n>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="startxref\n"+streamStart+"\n%%EOF\n";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);
mPDF.Close();
pPDF.Close();
}
}
}