C # Generate the source code of the PDF

xiaoxiao2021-03-06  46

// 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 ();

}

}

转载请注明原文地址:https://www.9cbs.com/read-71471.html

New Post(0)