PDF dosyalarını yazdır C#

Birçok şirket kağıt kullanımını büyük ölçüde azaltıyor. Ancak, yazdırmanın önemli olduğu bazı senaryolar vardır. Örneğin, bir sistem çevrimiçi siparişin ayrıntılarını PDF formatında içerebilir. Teslimat için çevrimiçi bir sipariş gönderirken PDF yazdırmaları gerekir. Öğeleri büyük ölçekte işlerler, bu nedenle her belgeyi manuel olarak yazdırmak oldukça zor olabilir. Aspose.PDF for .NET API, diğer birçok dosya işleme ve dönüştürme özelliğine ek olarak, PDF dosyalarının verimli şekilde yazdırılmasını destekler. C# kullanarak .NET uygulamalarında PDF dosyalarını yazdırmayla ilgili aşağıdaki kullanım örneklerini keşfedelim:

C# ile PDF Dosyasını Yazdır

PDF dosyalarının yazdırılması, .NET uygulamalarınızda C# veya VB.net kullanılarak otomatikleştirilebilir. Aşağıdaki basit adımları izleyerek PDF dosyalarını yazdırabilirsiniz:

  1. PdfViewer Sınıfından bir nesne oluşturun
  2. Giriş PDF belgesini yükle
  3. PDF dosyasını yazdır

Aşağıdaki kod parçacığı, C# kullanarak PDF dosyasının nasıl yazdırılacağını gösterir:

//PdfViewer nesnesi oluştur
PdfViewer viewer = new PdfViewer();
//Giriş PDF dosyasını aç
viewer.BindPdf(dataDir + "Test.pdf");
//PDF belgesini yazdır
viewer.PrintDocument();
//PDF dosyasını kapat
viewer.Close();

C# ile Birden Fazla PDF Dosyası Yazdırın

İşinizin doğası gereği birden fazla dosya yazdırmanız gerekiyorsa, bu özellik zaten Aspose.PDF for .NET API tarafından desteklenmektedir. Yukarıdaki kod parçacığıyla birden fazla PDF dosyasını tek tek yazdırmak biraz yavaş olabilir. Bu nedenle, süreci kolaylaştırmak için PDF yazdırmayı bir adım daha ileri götürelim. Burada, her bir PDF dosyasının adını bu listeye eklerken Listeyi kullanacağız. Aşağıdaki adımlar, birden çok PDF dosyasını nasıl yazdıracağımızı açıklar:

  1. Bir Dize türü Listesini başlat
  2. Listeye PDF dosyaları ekleyin
  3. Giriş PDF dosyasını yükle
  4. Birden fazla PDF dosyası yazdırın

Kod parçacığı, C# kullanarak birden çok PDF dosyasının nasıl yazdırılacağını gösterir:

var files = new List<string>();
files.Add(dataDir + "First.pdf");
files.Add(dataDir + "Second.pdf");

foreach (String file in files)
{
    //PdfViewer nesnesi oluştur
    PdfViewer viewer = new PdfViewer();
    //Giriş PDF dosyasını aç
    viewer.BindPdf(file);
    //PDF belgesini yazdır
    viewer.PrintDocument();
    //PDF dosyasını kapat
    viewer.Close();
}

C# ile PDF’nin Belirli Sayfalarını Yazdır

PDF belgelerinin belirli sayfalarını yazdırma özelliği API’de mevcuttur. Birden çok sayfa aralığı yazdırmayı içeren bir örneği ele alacağız. Başlangıç ve bitiş sayfa numaralarını aşağıdaki adımlarda açıklandığı gibi belirtmeniz gerekir:

  • Dosya giriş ve çıkış yollarını ayarlayın
  • Bir aralık tanımlayarak belirli sayfaların yazdırılmasını ayarlayın
  • Yazdırma parametrelerini belirtin
  • Sayfaları önceden belirtildiği gibi yazdırın

Aşağıdaki kod parçacığı, C# kullanarak belgenin belirli sayfalarının nasıl yazdırılacağını gösterir:

string inPdf = dataDir + "Test.pdf";
string output = dataDir;
IList<PrintingJobSettings> printingJobs = new List<PrintingJobSettings>();
PrintingJobSettings printingJob1 = new PrintingJobSettings();
printingJob1.FromPage = 2;
printingJob1.ToPage = 3;
printingJobs.Add(printingJob1);

PrintingJobSettings printingJob2 = new PrintingJobSettings();
printingJob2.FromPage = 5;
printingJob2.ToPage = 7;
printingJobs.Add(printingJob2);

{
   for (var printingJobIndex = 0; printingJobIndex < printingJobs.Count; printingJobIndex++)
    {
        System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
        System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
        ps.PrinterName = "Microsoft Print to PDF";
        ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;
        ps.FromPage = printingJobs[printingJobIndex].FromPage;
        ps.ToPage = printingJobs[printingJobIndex].ToPage;
        System.Console.WriteLine(ps.FromPage);
        System.Console.WriteLine(ps.ToPage);
        System.Console.WriteLine(printingJobIndex);
        using (var theViewer = new Aspose.Pdf.Facades.PdfViewer())
        {
            // Belge yazdırma kodu buraya gelir
            // Yazıcı ve sayfa ayarlarını kullanarak belge yazdırın                    
            theViewer.BindPdf(inPdf);
            theViewer.AutoResize = true;
            theViewer.AutoRotate = true;
            theViewer.PrintPageDialog = false;
            theViewer.PrintDocumentWithSettings(pgs, ps);
            theViewer.Close();
        }
    }
}

Güvenli PDF dosyasını C# ile yazdırın

Bir PDF dosyası bir parola ile güvenli hale getirilebilir ve korunabilir. Ancak, parola Kullanıcı ve Sahip parolası olmak üzere iki türde olabilir. Kullanıcı parolasıyla güvence altına alınan PDF dosyalarının, şifrelenmiş PDF dosyasını açmak ve görüntülemek için bir parolaya ihtiyacı vardır. Öte yandan, güvenli ve parola korumalı PDF dosyasının içeriğini değiştirmek için sahip parolası gerekir. Aşağıdaki adımlar, güvenli PDF’nin yazdırılmasını açıklar:

  1. Güvenli PDF’yi şifreyle yükleyin
  2. PdfViewer nesnesi oluştur
  3. Güvenli PDF dosyasını yazdır

Aşağıdaki kod parçacığı, C# kullanarak güvenli bir PDF dosyasının nasıl yazdırılacağını gösterir:

//Kullanıcı veya Sahip parolasını belirtirken güvenli PDF belgesi yükleyin
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//PdfViewer nesnesi oluştur
PdfViewer viewer = new PdfViewer();
//Giriş PDF dosyasını aç
viewer.BindPdf(document);
//PDF belgesini yazdır
viewer.PrintDocument();
//PDF dosyasını kapat
viewer.Close();

C# ile Bir Yazıcının Belirli Kağıt Tepsisine PDF Yazdırma

Aspose.PDF for .NET API ile bir PDF’yi belirli bir kağıt tepsisine yazdırabilirsiniz. Örneğin, çok sayıda fotoğraf içeren bir PDF’yi farklı bir kağıt tepsisine ve metin içeren bir PDF dosyasını farklı bir kağıt tepsisine yazdırmak isteyebilirsiniz. PDF dosyalarını yazdırmak üzere çıkış tepsisini veya bölmesini ayarlamak için aşağıdaki adımları izleyin:

  1. Giriş PDF dosyasını yükle
  2. Yazdırma için öznitelikleri ayarla
  3. PageSettings ve PaperSource‘u belirtin
  4. PrintDocumentWithSettings yöntemini çağırın

Burada yazıcının adını değiştirebileceğiniz dikkat çekiyor. Burada örnek olarak Microsoft Print to PDF’yi kullanacağız. Aşağıdaki kod parçacığı, bu adımları izler ve C# ile bir yazıcının belirli bir kağıt tepsisine veya bölmesine bir belgenin nasıl yazdırılacağını gösterir:

Document doc = new Document("Test.pdf");
PdfViewer viewer = new PdfViewer();
viewer.BindPdf(doc);
viewer.PrinterJobName = System.IO.Path.GetFileName(doc.FileName);
viewer.Resolution = 110;
// Yazdırma için öznitelikleri ayarla
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = false; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.RenderingOptions.UseNewImagingEngine = true;
// Yazıcı ve sayfa ayarları ve PrintDocument için nesneler oluşturun
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// Yazıcı adını ayarla
ps.PrinterName = "Microsoft Print to PDF";
pgs.PaperSize = new System.Drawing.Printing.PaperSize(paperTypeName, paperWidth, paperHeight);
pgs.Margins = new System.Drawing.Printing.Margins(margins.Left, margins.Right, margins.Top, margins.Bottom);
pgs.PaperSource = GetPaperSource(printerName, trayName);
// Yazıcı ve sayfa ayarlarını kullanarak belge yazdırın
viewer.PrintDocumentWithSettings(pgs, ps);

///<summary>
/// Sağlanan yazıcı ve tepsi adı için PaperSource nesnesini döndürün.
///</summary>
///<param name="printerName"></param>
///<param name="trayName"></param>
///<returns></returns>
public static System.Drawing.Printing.PaperSource GetPaperSource(string printerName, string trayName)
{
    System.Drawing.Printing.PaperSource ps = null;
    System.Drawing.Printing.PrintDocument prtDoc = new System.Drawing.Printing.PrintDocument();
    prtDoc.PrinterSettings.PrinterName = printerName;
   for (int i = 0; i < prtDoc.PrinterSettings.PaperSources.Count; i++)
    {
        if (prtDoc.PrinterSettings.PaperSources[i].SourceName.ToLower().Equals(trayName.ToLower()))
        {
            ps = prtDoc.PrinterSettings.PaperSources[i];
            break;
        }
    }
    return ps;
}

C# Kullanarak Sayfa Aralığını Farklı Kağıt Kaynaklarına Yazdırma

Bir PDF belgesinin farklı sayfalarını farklı kağıt tepsilerine veya çöp kutusuna yazdırmanız gerekebilecek senaryolar olabilir. Örneğin, kapak sayfası için farklı ve diğer sayfalar için farklı bir kağıt kaynağı. Aynı baskı işi içerisinde farklı kağıt kaynaklarına sayfa aralıklarını yazdırmak için aşağıdaki adımları mutlaka takip edebilirsiniz:

  1. PdfViewer sınıfından bir nesne başlatın
  2. PdfQueryPageSettings olay işleyici temsilcisini kullanın
  3. Sayfa ve yazıcı ayarlarını ayarla
  4. PrintDocumentWithSettings yöntemini çağırın

Aşağıdaki kod parçacığı, C# kullanarak bu adımların nasıl izleneceğini ve farklı sayfa aralıklarının farklı kağıt kaynaklarına veya tepsilere nasıl yazdırılacağını gösterir:

Aspose.Pdf.Facades.PdfViewer pdfv = new Aspose.Pdf.Facades.PdfViewer();

pdfv.PdfQueryPageSettings += PdfvOnPdfQueryPageSettings;

System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrinterSettings prin = new System.Drawing.Printing.PrinterSettings();

pdfv.BindPdf(dataDir + "Print-PageRange.pdf");
prin.PrinterName = "HP LaserJet M9050 MFP PCL6";
prin.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);

Aspose.Pdf.Facades.PdfPageEditor pageEditor = new Aspose.Pdf.Facades.PdfPageEditor();
pageEditor.BindPdf(dataDir + "input.pdf");

pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
pgs.PaperSize = prin.DefaultPageSettings.PaperSize;

pdfv.PrintDocumentWithSettings(pgs, prin);
pdfv.Close();

private static void PdfvOnPdfQueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs queryPageSettingsEventArgs, PdfPrintPageInfo currentPageInfo)
{
    bool isOdd = currentPageInfo.PageNumber % 2 != 0;

    System.Drawing.Printing.PrinterSettings.PaperSourceCollection paperSources = queryPageSettingsEventArgs.PageSettings.PrinterSettings.PaperSources;

    if (isOdd)
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[0];
    else
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[1];
}

C# ile PDF Yazdırırken Yazdırma İşi Durumunu Kontrol Edin

PDF dosyalarını farklı yazıcılarda yazdırabilirsiniz. Örneğin, Microsoft Print to PDF, Microsoft XPS Document Writer veya herhangi bir fiziksel yazıcı. Ancak, çok büyük PDF belgeleri için yazdırma işlemi uzun sürebilir veya herhangi bir nedenle yazdırma işlemi başarısız olabilir. Bu nedenle API, aşağıdaki adımlarla yazdırma işi durumunu kontrol etmenizi sağlayan bir özellik sunar:

  1. Giriş PDF dosyasını yükle
  2. Sayfa ayarlarını belirtin
  3. Yazıcı adını ayarla
  4. PrintDocumentWithSettings ile PDF belgesi yazdırın

Aşağıdaki kod parçacığı, C# kullanarak yazdırma işi durumunun veya PDF’nin yazdırma ilerlemesinin nasıl kontrol edileceğini gösterir:

// PdfViewer nesnesini somutlaştırın
PdfViewer viewer = new PdfViewer();

// Bağlama kaynağı PDF dosyası
viewer.BindPdf(dataDir + "Sample Document with Bookmark.pdf");
viewer.AutoResize = true;

// Yazdırma iletişim kutusunu gizle
viewer.PrintPageDialog = false;

// Yazıcı Ayarları nesnesi oluştur
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();

// Yazıcı adını belirtin
//ps.PrinterName = "Microsoft XPS Belge Yazıcısı";
ps.PrinterName = "Microsoft Print to PDF";

// Sonuç Çıktı adı
//ps.PrintFileName = "ResultantPrintout.xps";
ps.PrintFileName = "ResultantPrintout.pdf";

// Çıktıyı dosyaya yazdır
ps.PrintToFile = true;
ps.FromPage = 1;
ps.ToPage = 2;
ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;

// Çıktının sayfa boyutunu belirtin
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
ps.DefaultPageSettings.PaperSize = pgs.PaperSize;
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);

// Belgeyi yukarıda belirtilen ayarlarla yazdırın
viewer.PrintDocumentWithSettings(pgs, ps);

// Yazdırma durumunu kontrol edin
if (viewer.PrintStatus != null)
{
    // Bir istisna atıldı
    Exception ex = viewer.PrintStatus as Exception;
    if (ex != null)
    {
        // İstisna mesajı al
    }
}
else
{
    // Hata bulunamadı. Yazdırma işi başarıyla tamamlandı
    Console.WriteLine("printing completed without any issue..");
}

Sonuç olarak, bu kod parçacığı, .NET uygulamasının konsolunda PDF dosyasının yazdırma durumu hakkında yazdırır:

C# Pdf Yazdır

Çözüm

Özetlemek gerekirse, programlama uygulamalarınızda C# veya VB NET ile parola korumalı ve güvenli olmayan PDF dosyalarını yazdırmaya yönelik farklı yaklaşımlar ve kullanım durumları öğrendik. Ayrıca, tüm PDF belgelerinin yazdırılmasını da inceledik. Aynı şekilde, bazı sayfa aralıklarını belirli sayfa tepsileri, bölmeler veya kağıt kaynaklarına göre yazdırmayı öğrendik. Ayrıca, C# kullanarak belgelerin yazdırma durumunun veya yazdırma ilerlemesinin nasıl izleneceğini de kontrol ettik.

Ayrıca bakınız