// 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;
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 document header information
StrpdfMessage = "% PDF-1.1 / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
Xrefs.Add (MPDF.Length);
StrpdfMessage = "1 0 obj / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "<< / length 2 0 r >> / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "stream / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
PDF document description
streamstart = mpdf.length;
// font
StrpdfMessage = "BT / N / F0" FontSize "TF / N"; ConvertTobyTeandAddTStream (StrpdfMessage);
// PDF document entity height
YPOS = PageDepth - Page Margin;
StrpdfMessage = Page Margin " YPOS " TD / N ";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = LeadSize "TL / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
// Entity content
StrpdfMessage = "(http://www.wenhui.org) TJ / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "ET / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
streamend = mpdf.length;
Streamlen = streamend-streamstart;
StrpdfMessage = "endstream / nendobj / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
/ / PDF document version information
Xrefs.Add (MPDF.Length);
StrpdfMessage = "2 0 obj / n" streamlen "/ NENDOBJ / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
Xrefs.Add (MPDF.Length);
StrpdfMessage = "3 0 obj / n << / Type / Page / Parent 4 0 r / contents 1 0 r >> / NENDOBJ / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
Xrefs.Add (MPDF.Length);
StrpdfMessage = "4 0 obj / n << / type / pages / count 1 / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "/ kids [/ n3 0 r / n] / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "/ Resources << / procset [/ pdf / text] / font << / f0 5 0 r >> >> / n";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
StrpdfMessage = "/ MediaBox [0 0" PageWidth " PageDepth "] / N >> / NENDOBJ / N ";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
Xrefs.Add (MPDF.Length);
StrpdfMessage = "5 0 Obj / n << / type / font / subtype / type1 / basefont / course / encoding / winansiencoding >> / nendobj / n"; convertTOBYTEANDDTOSTREAM (STRPDFMESSAGE);
Xrefs.Add (MPDF.Length);
StrpdfMessage = "6 0 obj / n << / type / catalog / pages 4 0 r >> / NENDOBJ / N";
ConvertTobyTeandAddTREAM (STRPDFMESSAGE);
streamstart = mpdf.length;
StrpdfMessage = "XREF / N0 7 / N000000000000 65535 f / n";
For (int i = 0; i { StrpdfMessage = Xrefformatting ((long) XREFS [i]) "00000 n / n"; } ConvertTobyTeandAddTREAM (STRPDFMESSAGE); StrpdfMessage = "trailer / n << / n / size" (xrefs.count 1) "/ n / root 6 0 r / n >> / n"; ConvertTobyTeandAddTREAM (STRPDFMESSAGE); StrpdfMessage = "startxref / n" streamstart "/ n %% EOF / N"; ConvertTobyTeandAddTREAM (STRPDFMESSAGE); MPDF.Writeto (PPDF.BaseStream); MPDF.CLOSE (); PPDF.Close (); } }