Author: qieyj (warm harbor) http://search.9cbs.net/Expert/topic/1256/1256076.xml?temp=.1866419//write by wenhui.orgusing 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 = 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 document header information strpdfMessage = "% PDF-1.1 / N"; ConvertTobyTeandAddTStream (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 document describes streamStart = mPDF.Length; // font strPDFMessage =" BT / n / F0 " fontSize " Tf / n "; ConvertToByteAndAddtoStream (strPDFMessage); // PDF document entity highly yPos = pageDepth - pageMargin; strPDFMessage = pageMargin "" yPos "Td / n"; ConvertToByteAndAddtoStream (strPDFMessage); strPDFMessage = leadSize "TL / n"; ConvertToByteAndAddtoStream (strPDFMessage); // substantial contents strPDFMessage = "(http: / / www.wenhui.org )TJ/N "; ConvertTobyteandAddTREAM (strpdfMessage); strpdfMessage =" et / n "; convertTobyTeandAddTream (StrPdfMessage); streamend = mpdf.length;
streamLen = streamEnd-streamStart; strPDFMessage = "endstream / nendobj / n"; ConvertToByteAndAddtoStream (strPDFMessage); // Version information xRefs.Add PDF document (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"; ConvertTobyteandAddTREAM (STRPDFMESSAGE);
Xrefs.add (MPDF.LENGTH); strpdfMessage = "4 0 obj / n << / type / pages / count 1 / n"; convertTOBYTEANDDTOSTREAM (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"; convertTOBYTEANDDTOSTREAM (STRPDFMESSAGE); XREFS.ADD (MPDF.Length); strpdfMessage = "5 0 obj / n << / type / Font / Subtype / Type1 / BaseFont / Courier / Encoding / Winansiencoding >> / NENDOBJ / N "; ConvertTobyteandAddTStream (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 = "startxref / n" streamstart "/ n %% EOF / N"; ConvertTobyTeandAddTStream (StrpdfMessage); MPDF.Writeto (PPDF.BaseStream);
MPDF.Close (); ppdf.close ();}}