C# - .PDF állományok generálása

forráskód letöltése
A .PDF kiterjesztésű állományok egyre népszerűbb formái a dokumentációk prezentálásának. Tetszőleges szövegek, képek tárolhatók az állományokban, de táblázatokat is kreálhatunk. A PDF dokumentum készítéséhez ismernünk kell a PDF dokumentumok speciális kódolását. Ehhez a művelethez azonban nem állnak rendelkezésünkre .NET-es osztályok. Cikkünkben bemutatjuk, milyen alternatív eszközökkel készíthetünk mégis ilyen állományokat.
A projekt fordítása és kipróbálása előtt olvassa el a cikk Kapcsolódó információk című szakaszát.
Kapcsolódó információk
Annak ellenére, hogy a .NET Framework nem biztosít osztályokat a .PDF (Portable Document Format) kiterjesztésű állományok létrehozásához, nem kell feltétlenül feladnunk abbéli szándékunkat, hogy információinkat PDF formátumban publikáljuk. Létezik ugyanis megoldás.
Mindössze annyit kell tennünk, hogy el kell látogatnunk a TallComponents BV cég honlapjára, és letölteni a PDF dokumentumok létrehozását lehetővé tevő .NET assembly-t, majd felhasználni osztályait. A letölthető csomag neve TallPDF.NET 2.0 Professional, mely telepítés után a <meghajtó>:\\Program Files\TallComponents\TallPDF.NET 2.0 Professional mappába kerül, a szükséges dokumentációval együtt.
A csomag elérhető a következő webhelyről:
http://www.tallcomponents.com/default.aspx?section=downloads
A lapon található ComboBox kontrolban válasszuk ki a TallPDF.NET 2.0 Professional nevet, és adjunk meg egy létező elektronikus levélcímet.
A csomag ingyenesen letölthető és felhasználható. A szépséghibája annyi, hogy a létrehozott dokumentumok oldalainak fej-, és lábléceiben egy-egy CopyRight szöveget olvashatunk.
A DLL felhasználása igen egyszerű, ugyanis elegendő referenciaként a projekthez adni a kapott TALLPDF.DLL állományt, és hivatkozni az assembly TallComponents.PDF.Layout névterére.
A csomag letöltése és telepítése után másolja a TALLPDF.DLL állományt a cikk mellékletét képező projekt mappájába, majd fordítsa le a projektet.
Az alkalmazás két funkció elvégzésére képes: az első funkcióval létrehozhatunk egy Sample.pdf állományt, mely a projekt mappájába generálódik, a másik funkcióval meg is tekinthetjük a PDF-et.
Ez utóbbi művelet előtt gondoskodnunk kell arról, hogy az Acrobat Reader valamely verziója, vagy egy, a PDF állományokat betölteni képes szoftver legyen telepítve a rendszerben. Az Acrobat Reader legfrissebb, ingyenes disztribúcióját megtalálhatjuk a cég webhelyén, a következő linken:
http://www.adobe.com/products/acrobat/readermain.html
A közölt URL-ekkel kapcsolatban megemlítendő, hogy a cikk írásakor léteztek, azóta természetesen megváltozhattak, vagy megszűnhettek.
A TALLPDF.DLL használata
Az assembly referenciaként történő hozzáadása után a fent említett névtérre a kódban is hivatkoznunk kell.
using TallComponents.PDF.Layout;
Ezt követően elkezdhetjük a példaállomány létrehozását. A művelet egy FileStream objektum létrehozásával kezdődik, ahol megadjuk, milyen néven generáljuk az állományt.
fs = new FileStream(Application.StartupPath + "\\Sample.pdf", FileMode.Create );
Létrehozunk egy Document osztályt, melynek funkciója összefogni a PDF dokumentum tartalmát, alkotóit.
Document pdfdoc = new Document();
A dokumentumok Section objektumokra tagolódnak, melyek további alegységekre, paragrafusokra bonthatók. A paragrafusok szövegegységeit a Fragment osztály reprezentálja. Ezek létrehozása és összerendezése a következő lépés.
Section section = new Section();
TextParagraph textParag = new TextParagraph();
Fragment fragment = new Fragment();
A Fragment típusú objektum Text property-je tartalmazza a kiírandó szöveget. A Fragment objektumot ezt követően elhelyezzük a létrehozott paragrafusban.
fragment.Text = "Software Online";
textParag.Fragments.Add(fragment);
A Section objektum paragrafusai közé felvesszük a szöveget tartalmazó paragrafusunkat, majd ezt az objektumot hozzáadjuk a dokumentumhoz.
section.Paragraphs.Add(textParag);
pdfdoc.Sections.Add(section);
Utolsó lépésként a Document osztály Write metódusának egyik változatát meghívva kiírjuk az adathalmazt a létrehozott adatfolyamba, és lezárjuk azt.
pdfdoc.Write(fs);
fs.Close();
Amennyiben a számítógépen telepítve van a fent említett PDF megjelenítő, akkor a Process osztály Start metódusával meg is tekinthető a létrehozott dokumentum.
Process.Start(Application.StartupPath + "\\Sample.pdf");