ASP

ASP ile pdf oluşturma

ASP ile pdf oluşturma

ASP ile pdf oluşturma

Merhaba Arkadaşlar bu asp.net makalesinde ise sizlerle beraner asp.net de pdf dosyası nasıl oluşturulu? hangi kodlar veya komutlar kullanılır? onları inceleyeceğiz.

 

şimdi işe koyulalım;

Öncelikle temel olarak basit bir örnek oluşturacağız, sonrasında her nesne için detaylı kullanımları göreceğiz. 


//Document class'ı temel PDF dosyamızın temelini içeriyor. 
//PageSize ile dosya boyutunu belirtebiliyoruz. Bunun yerine Rectangle da kullanabiliriz.
iTextSharp.text.Document doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4);
//MemoryStream Response'a binary olarak gönderip, çıktıyı üretmemizi sağlayacak olan Class'ımız.
MemoryStreamoutput = new MemoryStream();
//PdfWriter PDF dosyamız ile stream'i eşitleyen class'ımız.
iTextSharp.text.pdf.PdfWriter.GetInstance(doc, output);
//Dosya işlemleri öncesinde değişiklikler için Open() methodunu çağırıyoruz.
doc.Open();
//Add() methodu ile en basit anlamda bir metni PDF dosyamızın içerisine ekliyoruz.
doc.Add(new iTextSharp.text.Paragraph("Deneme..."));
//Dosya işlemlerinin bittiğini belirtmek için Close() methodunu çağırıyoruz.
doc.Close();
//Ekran çıktısını temizliyoruz.
Response.Clear();
//Dosya ismini belirtiyoruz.
Response.AddHeader("content-disposition", "attachment;filename=Export.pdf");
//Dosya tipini PDF olarak belirtiyoruz.
Response.ContentType = "application/pdf";
//Dosyanın içeriğini Response içerisine aktarıyoruz.
Response.BinaryWrite(output.ToArray());
//Son aşama da işlemleri bitirip, ekran çıktısına ulaşıyoruz.
Response.End()

 

Bu sınıf temel olarak PDF dosyamızı temsil ediyor. Daha sonradan göreceğimiz içerik bilgilerinin tutulduğu Paragraph, Image, PdfTable vs. gibi nesneleri içerisinde barındırır. Author, Creator, Keywords, Subject Title vs. gibi dosyaya özel bilgileri de tutar.

//Author bilgisi eklemek için kullanılır.
doc.AddAuthor("Gökhan BAĞCI");
//Title bilgisi eklemek için kullanılır.
doc.AddTitle("ASP.Net ile PDF Dosyası Oluşturmak");
//Subject bilgisi eklemek için kullanılır.
doc.AddSubject("... [Özel içeriğimiz] ...");

//Standart kağıt ölçüleri için PageSize kullanabilirsiniz.
iTextSharp.text.Document doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4);
//Özel olarak boyut vermek istersek Rectangle kullanabiliriz.
iTextSharp.text.Document doc = new iTextSharp.text.Document(new iTextSharp.text.Rectangle(800, 200)); - See more at: http://www.yazilimgunlugu.com/aspnet-ile-pdf-dosya-olusturmak-makalesi/858.aspx#sthash.Z1YUhwiB.dpuf

Font & Color

Bu kısımda belirteceğimiz Font ve Color System.Drawing altında nesneler değil. iTextSharp’ın kendine özel Font ve Color sınıflarını kullanmak zorundayız.

//Bu kısımda FontFamily altındaki standart fontları kullanabiliyoruz. TIMES_ROMAN, COURIER, HELVETICA gibi...
//9 adet Constructor 'ı bulunuyor. Sırasıyla Font'un adını, boyutunu ve stilini belirtebiliyoruz.
iTextSharp.text.Font normalFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.COURIER, 10f, iTextSharp.text.Font.NORMAL);
iTextSharp.text.Font italikFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 10f, iTextSharp.text.Font.ITALIC);

 

//Farklı bir font eklemek istediğimizde aşağıdaki gibi BaseFont sınıfını kullanabiliriz.
iTextSharp.text.Font hariciFont = new iTextSharp.text.Font(iTextSharp.text.pdf.BaseFont.CreateFont(Server.MapPath("MyriadPro-Cond.otf"), iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED));

//Sistemde var olan fontlar içinde FontFactory sınıfı kullanılabilir.
iTextSharp.text.Font tahomaFont = iTextSharp.text.FontFactory.GetFont("Tahoma", 10f);

 

//SetStyle() Stil eklemek için kullanılır. 0: Normal, 1:Bold, 2:Italic temsil eder.
tahomaFont.SetStyle(1);

//Standart renkler için BaseColor sınıfı kullanılabilir.
iTextSharp.text.BaseColor redColor = iTextSharp.text.BaseColor.RED;
//RGB ve CMYK için değerleri belirterekte renk kullanabiliriz.
iTextSharp.text.BaseColor rgbColor = new iTextSharp.text.BaseColor(000, 019, 127);
iTextSharp.text.BaseColor cmykColor = new iTextSharp.text.BaseColor(000, 019, 127, 50);
//.Net için System.Drawing.Color kullanımı için aşağıdaki örnek kullanılabilir.
iTextSharp.text.BaseColor netColor = new iTextSharp.text.BaseColor(System.Drawing.Color.Navy);

- See more at: http://www.yazilimgunlugu.com/aspnet-ile-pdf-dosya-olusturmak-makalesi/858.aspx#sthash.Z1YUhwiB.dpuf

Paragraph
HTML ile karşılaştıracak olursak <p> tag’ine denk geldiğini söyleyebiliriz. Belli sözcük gruplarını içinde tutabilen nesnemizi ifade ediyor. Font, Color, Aligment vs. gibi bilgilerini verebiliyoruz.

//En basit şekliyle Add() methodu ile içerisine string olarak metin belirleyebiliriz.
p.Add("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
//Her hangi bir nesneye font atamak için .Font ile eşleştirme yapabiliriz.
p.Font = tahomaFont;
//Alignment ile hizalama işlemlerini yapabiliriz. 0:Left, 1:Center, 2:Right, 3:Justify
p.Alignment = 3;
//Satır yüksekliği ayarlamak için kullanılır
p.Leading = 12f;
//İlk satırın iç boşluğunu belirtmek için kullanabiliriz.
p.FirstLineIndent = 20;
//IndentationLeft sol taraftan komple boşluk bırakmak için kullanılır. HTML'deki padding ile karşılaştırabiliriz.
p.IndentationLeft = 50;

Image

//Ekleyeceğimiz resmi Image nesnemize atıyoruz.
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(Server.MapPath("~/Koala.jpg"));
//Boyutlandırma için ScaleToFit() methodunu ya da ScalePercent() methodunu kullanabiliriz.
img.ScaleToFit(200, 100);
//Çerçeve vermek için aşağıdaki özelliklerini kullanabiliriz.
img.Border = iTextSharp.text.Rectangle.BOX;
img.BorderColor = iTextSharp.text.BaseColor.BLACK;
img.BorderWidth = 5f;
//Sonrasında diğer nesnelerdeki gibi Document içine yada Paragraph içerisine ekleyebiliriz.
doc.Add(img); 

 Chunk
HTML ile karşılaştıracak olursak <span> tagine denk geldiğini söyleyebiliriz. 

//Paragraph gibi font belirleyebiliyoruz, buradaki amaç aynı paragraph içindeki farklı font, color vs. değerleri birbirinden ayırabilmek
iTextSharp.text.Chunk c = new iTextSharp.text.Chunk("Deneme mesajı...", italikFont);
p.Add(c); 

 

Umarım bu makale yararlı olmuştur sorularınız için yorum da paylaşabilirsiniz. 

HENÜZ YORUM YAPILMAMIŞ

YORUM GÖNDER