28 Haziran 2012 Perşembe

C# ile Print İşlemleri

Selam Webkolog okurları! Bugün C# .Net Framework 4 ve Visual Studio 2010'u kullanarak uygulamalarımızda yazdırma işlemlerini nasıl yapacağımıza bakacağız. Kullanıcıların belgeleri, raporları veya herhangi bir şeyi kolayca yazdırabilmesi, uygulamalarımızın kullanımını gerçekten kolaylaştırır. Bu yazıda, yazdırma sürecini adım adım ele alacak ve temel şeyleri örneklerle açıklayacağım. Hazırsanız, Visual Studio 2010'u açın ve yazdırma dünyasına dalalım!

Yazdırma İşlemlerinde Kullanılan Temel Kontroller ve Sınıflar

C# .Net Framework, yazdırma işlemlerini kolaylaştırmak için bir sürü kontrol ve sınıf sunar. İşte en önemlileri:

  • PageSetupDialog: Yazdırılacak sayfanın boyutunu, yönünü ve kenar boşluklarını ayarlamak için kullanılan bir diyalog kontrolüdür.
  • PrintDialog: Yazdırma ayarlarını (yazıcı seçimi, kopya sayısı, yazdırılacak sayfalar vb.) ayarlamak ve yazdırma işlemini başlatmak için kullanılan bir diyalog kontrolüdür.
  • PrintDocument: Yazdırılacak içeriği temsil eden ve yazdırma işlemini yöneten bir sınıftır.
  • PrintPreviewDialog: Yazdırılacak belgenin önizlemesini görmek için kullanılan bir diyalog kontrolüdür.

Yazdırma işlemi sırasında yazı tipi, rengi, konumu gibi şeyleri ayarlamak için de "Font", "SolidBrush" gibi sınıflar kullanılır.

1. PrintDocument Sınıfı

PrintDocument sınıfı, yazdırma işleminin temelini oluşturur. Yazdırılacak içeriği ve yazdırma ayarlarını yönetir. Bu sınıfı kullanabilmek için projenize "System.Drawing.Printing" namespace'ini eklemeniz gerekir.

// Örnek: PrintDocument nesnesi oluşturma ve yazdırma işlemini başlatma
PrintDocument yaziciCiktisi = new PrintDocument();
yaziciCiktisi.Print();

Ama bu kod, yazdırma işlemini başlatır ama neyin yazdırılacağını belirtmez. Yazdırılacak içeriği PrintPage olayında belirtmemiz gerekir.

2. PrintPageEventArgs Sınıfı

PrintPage olayı, PrintDocument tarafından tetiklenir ve yazdırılacak her sayfa için bir kez çalışır. Bu olaya ait PrintPageEventArgs nesnesi, yazdırma işlemini kontrol etmek için çeşitli özellikler sunar:

  • Graphics: Yazdırılacak içeriği çizmek için kullanılan grafik nesnesidir.
  • HasMorePages: Yazdırılacak başka sayfalar olup olmadığını belirtir. Çok sayfalı belgeler için önemlidir.
  • PageBounds: Yazdırılacak sayfanın boyutlarını temsil eden bir dikdörtgen yapıdır.
  • PageSettings: Sayfa ayarlarını (kağıt boyutu, yönlendirme vb.) içeren bir nesnedir.
  • Cancel: Yazdırma işlemini iptal etmek için kullanılan bir özelliktir. true olarak ayarlanırsa yazdırma işlemi iptal edilir.

3. PrinterSettings Sınıfı

PrinterSettings sınıfı, yazıcının özelliklerini ve yazdırma ayarlarını almak veya ayarlamak için kullanılır:

  • Collate: Yazdırılan kopyaların harmanlanıp harmanlanmayacağını belirtir.
  • Copies: Yazdırılacak kopya sayısını belirtir.
  • DefaultPageSettings: Yazıcının varsayılan sayfa ayarlarını verir.
  • Duplex: Yazıcının çift taraflı yazdırma (duplex) özelliğini destekleyip desteklemediğini ve bu özelliğin etkin olup olmadığını belirtir.
  • PrinterName: Kullanılacak yazıcının adını belirtir.
  • IsDefaultPrinter: Belirtilen yazıcının sistemde varsayılan yazıcı olup olmadığını gösterir.
  • IsValid: Belirtilen yazıcının sistemde geçerli bir yazıcı olup olmadığını gösterir.
  • PaperSizes: Yazıcı tarafından desteklenen kağıt boyutlarını gösterir.
  • FromPage, ToPage: Yazdırılacak sayfa aralığını belirtir.
  • CanDuplex: Yazıcının çift taraflı yazdırmayı destekleyip desteklemediğini gösterir.

4. Font ve Brush Sınıfları

Yazdırılacak metnin görünümünü kontrol etmek için Font ve Brush sınıflarını kullanırız:

  • Font: Yazı tipini, boyutunu ve stilini (kalın, italik vb.) belirtir.
    • Örnek: Font yaziTipi = new Font("Arial", 12, FontStyle.Bold); // Arial, 12 punto, kalın
  • Brush: Yazdırılacak metnin veya şekillerin rengini ve desenini belirtir.
    • Örnek: SolidBrush firca = new SolidBrush(Color.Black); // Siyah renkli dolgu

5. PrintDialog Kontrolü

PrintDialog kontrolü, kullanıcıya yazdırma seçeneklerini sunan standart bir diyalog penceresi açar. Bu pencerede yazıcı seçimi, kopya sayısı, yazdırılacak sayfalar gibi ayarlar yapılabilir.

PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == DialogResult.OK) {
    // Yazdırma işlemi burada gerçekleşir.
}

PrintDialog sınıfının önemli özellikleri:

AllowSelection: Kullanıcının sadece seçili metni yazdırmasına izin verilip verilmeyeceğini kontrol eder.
AllowSomePages: Kullanıcının belirli sayfa aralıklarını yazdırmasına izin verilip verilmeyeceğini kontrol eder.
ShowHelp: Yazdırma diyalogunda Yardım butonu gösterilip gösterilmeyeceğini kontrol eder.
ShowNetwork: Ağ yazıcılarının gösterilip gösterilmeyeceğini kontrol eder.
PrintToFile: Yazdırma işleminin bir dosyaya yapılıp yapılmayacağını kontrol eder.

6. PrintPreviewDialog Kontrolü

`PrintPreviewDialog` kontrolü, yazdırma işleminden önce belgenin nasıl görüneceğini gösteren bir önizleme penceresi açar. Bu, hataları önlemek ve yazdırmadan önce son kontrolü yapmak için çok faydalıdır.

PrintPreviewDialog onizleme = new PrintPreviewDialog();
onizleme.Document = printDocument1; // Önizlenecek belgeyi belirtir.
onizleme.ShowDialog();

7. PageSetupDialog Kontrolü

PageSetupDialog kontrolü, yazdırma işleminden önce sayfa ayarlarını (kağıt boyutu, yönlendirme, kenar boşlukları) yapılandırmak için standart bir diyalog kutusu görüntüler.

pageSetupDialog1.Document = printDocument1; // Kontrolün hangi belgeyle ilişkili olduğunu belirtir.
pageSetupDialog1.AllowMargins = true;  // Kenar boşluklarının ayarlanmasına izin verir.
pageSetupDialog1.AllowOrientation = true;  // Sayfa yönlendirmesinin (yatay/dikey) ayarlanmasına izin verir.
pageSetupDialog1.AllowPaper = true;  // Kağıt boyutunun seçilmesine izin verir.
pageSetupDialog1.AllowPrinter = true; // Yazıcı seçimine izin verir.
pageSetupDialog1.ShowNetwork = true; // Ağ yazıcılarını gösterir.
pageSetupDialog1.ShowHelp = true;    // Yardım butonu görüntüler.
pageSetupDialog1.EnableMetric = true;  // Ölçü biriminin metrik (mm) olup olmadığını belirler.
// Diyalog kutusunu göster ve sonucu kontrol et
if (pageSetupDialog1.ShowDialog() == DialogResult.OK) {
  // Kullanıcı Tamam'a tıkladıysa, sayfa ayarlarını PrintDocument'e uygula
  printDocument1.DefaultPageSettings = pageSetupDialog1.PageSettings;
}

Örnek Bir Yazdırma İşlemi

Şimdi, bir TextBox kontrolündeki metni yazdıran basit bir örnek yapalım:

private void buttonYazdir_Click(object sender, EventArgs e) {
    PrintDocument kagit = new PrintDocument();
    kagit.PrintPage += new PrintPageEventHandler(kagit_PrintPage); // PrintPage olayını bağla
    kagit.Print(); // Yazdırma işlemini başlat
}
private void kagit_PrintPage(object sender, PrintPageEventArgs e) {
    SolidBrush firca = new SolidBrush(Color.Black);
    Font printFont = new Font("Times New Roman", 12, FontStyle.Regular);
    e.Graphics.DrawString(textBox1.Text, printFont, firca, 10, 10); // Metni belirtilen konumda yazdır
}

Bu örnekte, buttonYazdir_Click olayı yazdırma işlemini başlatır. kagit_PrintPage metodu ise yazdırılacak içeriği ve biçimini tanımlar. e.Graphics.DrawString metodu, belirtilen metni, yazı tipini, rengi ve konumu kullanarak yazdırır.

Umarım bu makale, C# .Net Framework 4 ile yazdırma işlemlerini anlamanıza yardımcı olur. Başka bir konuda yardıma ihtiyacınız olursa çekinmeyin!

Webkolog'u takipte kalın!

Hepinize bol kodlu günler dilerim!

0 yorum:

Yorum Gönder