代码生成器:用C#代码生成一个简单的PDF文件



员大本营2001.net版

using ;
using .IO;
using .Text;
using .Collections;

PDFGenerator
{
/// <summary>
/// Application : Generation of PDF file from text
/// Author: Pramod Kumar Singh
/// Date: 25th July 2001
///</summary>

public PDFGenerator
{
float pageWidth = 594.0f;
float pageDepth = 828.0f;
float pageMargin = 30.0f;
float fontSize = 10.0f;
float leadSize = 10.0f;

//Create a PDF file.
//PDF _disibledevent=>//PDF in Memory
MemoryStream mPDF= MemoryStream;

//Convert the Text Data to PDF format and write back to
//Memory Stream
void ConvertToByteAndAddtoStream( strMsg)
{
Byte buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}

//Format the data length in xRef Format
xRefFormatting(long xValue)
{
strMsg =xValue.;
iLen=strMsg.Length;
(iLen<10)
{
StringBuilder s= StringBuilder;
// s=null;
i=10-iLen;
s.Append(\'0\',i);
strMsg=s. + strMsg;
}
strMsg;
}

//Entry Po
void Main( args)
{
//Create a ArrayList for xRefs of PDF Document
ArrayList xRefs= ArrayList;
Byte buffer=null;
float yPos =0f;
long streamStart=0;
long streamEnd=0;
long streamLen =0;
strPDFMessage=null;
//PDF Header Message
strPDFMessage=\"%PDF-1.1\\n\";


ConvertToByteAndAddtoStream(strPDFMessage);

//ID 1 For Conta
//ID 2 For Length of the Stream
//write the Text

//1> Start a Page
xRefs.Add(mPDF.Length);
strPDFMessage=\"1 0 obj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage=\"<< /Length 2 0 R >>\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage=\"stream\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);

//Get the start of the stream
streamStart=mPDF.Length;
strPDFMessage=\"BT\\n/F0 \" + fontSize +\" Tf\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
yPos = pageDepth - pageMargin;
strPDFMessage=pageMargin + \" \" + yPos +\" Td\\n\" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= leadSize+\" TL\\n\" ;
ConvertToByteAndAddtoStream(strPDFMessage);

//Add the text data to the PDF memory stream
strPDFMessage= \"(Pramod Kumar Singh)Tj\\n\" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= \"ET\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
//Get the End of the stream
streamEnd=mPDF.Length;
//Get the Length of the stream
streamLen=streamEnd-streamStart;
strPDFMessage= \"endstream\\nendobj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);

//Add 2 object to xRef
xRefs.Add(mPDF.Length);
strPDFMessage=\"2 0 obj\\n\"+ streamLen + \"\\nendobj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);

//Add Page to xRefs
xRefs.Add(mPDF.Length);
strPDFMessage=\"3 0 obj\\n<</Type/Page/Parent 4 0 R/Contents 1 0 R>>\\nendobj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);



//Build the Pages
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);

//Add font to xRefs
xRefs.Add(mPDF.Length);
strPDFMessage=\"5 0 obj\\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\\nendobj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);

//Add the catalog to xRefs
xRefs.Add(mPDF.Length);
strPDFMessage=\"6 0 obj\\n<</Type/Catalog/Pages 4 0 R>>\\nendobj\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);

//xRefs Entry
streamStart=mPDF.Length;
strPDFMessage=\"xref\\n0 7\\n0000000000 65535 f \\n\";
for( i=0;i<xRefs.Count;i)
{
strPDFMessagexRefFormatting((long) xRefs[i])+\" 00000 n \\n\";
}
ConvertToByteAndAddtoStream(strPDFMessage);
//Trailer for the PDF
strPDFMessage=\"trailer\\n<<\\n/Size \"+ (xRefs.Count+1)+\"\\n/Root 6 0 R\\n>>\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
//xRef location entry
strPDFMessage=\"startxref\\n\" + streamStart+\"\\n%%EOF\\n\";
ConvertToByteAndAddtoStream(strPDFMessage);
//Write the PDF from Memory Stream to File Stream
mPDF.WriteTo(pPDF.BaseStream);
//Close the Stream
mPDF.Close;
pPDF.Close;
}
}
}


相关文章:

Tags:  动软.net代码生成器 qq代码生成器 qq空间代码生成器 代码生成器

延伸阅读

最新评论

发表评论