IRONSOFTWAREHOME
IRONPDF KULLANARAK

C# içinde Raporlama Uygulaması nasıl oluşturulur.

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

Varsayılan görüntüleyicide bir PDF açmak, .NET uygulama geliştirmede yaygın bir işlemdir. IronPDF kullanarak programlı olarak PDF dosyaları oluşturduktan sonra, genellikle bunları kullanıcıların seçtiği varsayılan uygulamada -- Adobe Acrobat veya Microsoft Edge gibi -- hemen görüntülemeniz gerekir. Bu kılavuz size IronPDF kullanarak PDF dosyalarını oluşturmanın ve System.Diagnostics.Process.Start ile Windows'ta otomatik olarak açmanın adımlarını göstermektedir.

IronPDF'nin güçlü HTML'den PDF'e dönüştürme yetenekleri ile basit Process başlatma yöntemi birleşerek, kullanıcıların makinelerindeki varsayılan uygulamada profesyonel PDF dosyaları yaratıp göstermeleri için pratik bir iş akışı oluşturur.

IronPDF bir .NET Projesine Nasıl Yüklenir?

Önce herhangi bir PDF oluşturmadan veya açmadan, projenize IronPDF yüklemeniz gerekir. NuGet Package Manager Konsolu veya .NET CLI kullanın:

PM > Install-Package IronPdf

Kurulumdan sonra, tam işlevselliği etkinleştirmek için lisans anahtarınızı ekleyin veya ücretsiz bir deneme ile başlayın. IronPDF belgeleri, NuGet üzerinden yüklemeyi de içeren tüm yapılandırma seçeneklerini ayrıntılı olarak kapsar.

Yüklendikten sonra, URL oluşturma, PDF birleştirme, filigranlama, dijital imzalama ve daha fazlasını içeren IronPDF özelliklerinin tam setine erişiminiz olacaktır.

PDF Dosyası Nasıl Oluşturulur ve Açılır?

En basit yaklaşım üç adım içerir:

  1. IronPDF ile bir PDF belgesi oluşturun.
  2. Dosyayı bir dizine kaydedin.
  3. PDF'yi varsayılan uygulamada Process.Start kullanarak açın.

Yeni bir Console App projesi ile Visual Studio'da deneyebileceğiniz tam bir çalışma örneği:

using IronPdf;
using System.Diagnostics;

// Create a new PDF renderer
var renderer = new ChromePdfRenderer();

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <body>
            <h1>Invoice #12345</h1>
            <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            <table>
                <tr><td>Product</td><td>Price</td></tr>
                <tr><td>IronPDF License</td><td>$299</td></tr>
            </table>
        </body>
    </html>");

// Save the PDF to a file
string outputPath = "invoice.pdf";
pdf.SaveAs(outputPath);

// Open the PDF in the default viewer
Process.Start(new ProcessStartInfo
{
    FileName = outputPath,
    UseShellExecute = true
});

Bu kod ilk olarak bir ChromePdfRenderer örneği oluşturur, bu da IronPDF'nin HTML'yi PDF'e dönüştürmek için ana sınıfıdır. RenderHtmlAsPdf metodu, HTML dizesini bir PDF belge nesnesine dönüştürür. Bu yaklaşım hakkında daha fazla bilgi için IronPDF'in HTML'den PDF'e kılavuzunu inceleyin.

PDF'yi SaveAs kullanarak kaydettikten sonra, kod Process.Start ile ProcessStartInfo kullanarak dosyayı varsayılan PDF görüntüleyicisinde açar. Burada anahtar ayar UseShellExecute = true, bu da PDF dosyasının varsayılan uygulama ile açılması için Windows'a talimat verir.

Çıktı

Aşağıdaki resimde gösterildiği gibi, IronPDF başarılı bir şekilde PDF dosyasını üretir ve sistemde yapılandırılmış varsayılan görüntüleyiciyle görüntüler -- bu durumda Opera GX.

C#'ta Varsayılan Görüntüleyici ile PDF'leri Açma: Şekil 1 - Varsayılan görüntüleyici kullanılarak gösterilen PDF

Neden Üst Düzey Beyanlar?

.NET 10 ve modern C# versiyonları ile üst seviye ifadeler, Program sınıfı sarmalayıcısına olan ihtiyacı ortadan kaldırır. Kod dosyanın üstünden doğrudan çalışır, örnekleri daha kısa ve takip etmeyi kolaylaştırır. Bu kılavuzdaki tüm örnekler bu deseni kullanır.

PDF Belgelerini Açarken UseShellExecute Neden Önemlidir?

.NET Core ve modern .NET versiyonlarında (.NET 5'ten .NET 10'a kadar), UseShellExecute parametresi varsayılan olarak false olur. Açıkça true olarak ayarlanmadan, PDF dosyası başlatılmaya çalışıldığında uygulamanız hata verecektir.

using IronPdf;
using System.Diagnostics;
using System.IO;

// Generate a report with IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Save to temp directory for immediate viewing
string tempPath = Path.Combine(Path.GetTempPath(), $"URL_{Guid.NewGuid()}.pdf");
pdf.SaveAs(tempPath);

// IMPORTANT: Set UseShellExecute = true for .NET Core/5+
var startInfo = new ProcessStartInfo
{
    FileName = tempPath,
    UseShellExecute = true  // Required in .NET Core/5+ to open PDF in default viewer
};
Process.Start(startInfo);

UseShellExecute özelliği sürecin işletim sistemi kabuğu ile başlatılıp başlatılmayacağını belirler. true ayarlandığında, Windows hangi varsayılan PDF okuyucunun dosyayı açması gerektiğini belirlemek için dosya ilişkilendirme kayıt defterini kullanır. Modern .NET versiyonlarında bu ayar olmadan, dosya açılamayacağını belirten bir çalışma zamanı hatasıyla karşılaşırsınız.

Benzersiz bir dosya adı içeren geçici bir dizin kullanmak (Guid.NewGuid() aracılığıyla), hızlı bir şekilde birden fazla PDF oluşturulduğunda dosya çakışmalarını önler. Varsayılan geçici klasör OS tarafından düzenli olarak otomatik olarak temizlenir.

Çıktı

C#'ta Varsayılan Görüntüleyici ile PDF'leri Açma: Şekil 2 - URL'den PDF oluşturma ve varsayılan görüntüleyici kullanarak gösterim

Dosya Yollarını Doğru Şekilde Nasıl Yönetirsiniz?

Boşluklar ve özel karakterler içeren dosya yolları dikkatli bir şekilde ele alınmalıdır. Eksik bir dizin veya hatalı bir yol Process.Start'ye ulaşılmadan sessizce başarısız olur veya bir istisna fırlatır. İşte dizin oluşturma ve dosya varlığı kontrol etmeyi içeren bir yaklaşım:

using IronPdf;
using System.Diagnostics;
using System.IO;

// Generate PDF from HTML file
var renderer = new ChromePdfRenderer();
var htmlContent = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Create output directory if it doesn't exist
string outputDir = @"C:\PDF Reports\Monthly";
Directory.CreateDirectory(outputDir);

// Build file path with timestamp
string fileName = $"Report_{DateTime.Now:yyyyMMdd_HHmmss}.pdf";
string fullPath = Path.Combine(outputDir, fileName);

// Save the PDF
pdf.SaveAs(fullPath);

// Verify file exists before opening in default PDF viewer
if (File.Exists(fullPath))
{
    Process.Start(new ProcessStartInfo
    {
        FileName = fullPath,
        UseShellExecute = true
    });
}
else
{
    Console.WriteLine($"Error: PDF file not found at {fullPath}");
}

Bu kod, birkaç en iyi uygulamayı gösterir: hangi işletim sistemi olursa olsun dosya yollarını doğru oluşturmak için Path.Combine kullanımı, gerekirse dizin oluşturmayı Directory.CreateDirectory ile ve PDF'yi varsayılan görüntüleyicide açmayı denemeden önce dosya varlığını doğrulamayı içerir.

Dosya adındaki zaman damgası, benzersizlik sağlar ve her PDF'nin ne zaman üretildiğine dair net bir kayıt verir. PDF'leri birleştirme veya ayırma, filigranlar ekleme, dijital imzalama ve başlıklar ve alt bilgiler gibi gelişmiş PDF manipülasyon seçenekleri için IronPDF'in nasıl yapılır kılavuzlarını keşfedin.

Boşluk İçeren Yollar Ne Olacak?

Path.Combine, yolları kabuk genişlemesine güvenmek yerine dizeler olarak oluşturduğu için boşlukları doğru şekilde işler. ProcessStartInfo sınıfı ayrıca, UseShellExecute = true yaparken alıntılanmış yolları doğru şekilde işler. Bir kabuk komutuna doğrudan bir yol geçirdiğinizde, her zaman çift tırnakla çevreleyin. Process.Start ile, FileName özelliği manuel alıntılama gerektirmez.

Üretime Hazır En İyi Uygulamaları Nasıl Uygularsınız?

Üretim uygulamaları için, hata işleme, yapılandırılabilir render ayarları ve öngörülebilir çıktı dizinlerini içeren PDF yaşam döngüsünü ele alan daha eksiksiz bir iş akışını düşünün:

using IronPdf;
using IronPdf.Rendering;
using System.Diagnostics;
using System.IO;

static void GenerateAndDisplayPdf(string htmlContent, string documentName)
{
    try
    {
        // Configure IronPDF renderer with production settings
        var renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                PaperSize = PdfPaperSize.A4,
                PrintHtmlBackgrounds = true,
                CreatePdfFormsFromHtml = true
            }
        };

        // Generate the PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Use the user's Documents folder for better accessibility
        string documentsPath = Environment.GetFolderPath(
            Environment.SpecialFolder.MyDocuments);
        string pdfFolder = Path.Combine(documentsPath, "Generated PDFs");
        Directory.CreateDirectory(pdfFolder);
        string outputPath = Path.Combine(pdfFolder, $"{documentName}.pdf");

        pdf.SaveAs(outputPath);

        // Open PDF in default viewer without waiting for it to close
        Process.Start(new ProcessStartInfo
        {
            FileName = outputPath,
            UseShellExecute = true  // Essential for opening PDF in default application
        });

        Console.WriteLine($"PDF opened: {outputPath}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error generating or opening PDF: {ex.Message}");
    }
}

Bu örnek, yapısal hata işlemeyi içerir ve PDF'leri kullanıcının Belgeler klasörüne kaydeder, bu da uygulama nasıl başlatılırsa başlatılsın erişilebilir durumda olur. Ayrıca, IronPDF'i ticari belgeler için uygun render seçenekleriyle yapılandırır: A4 kağıt boyutu, HTML arka plan baskısı etkin, ve HTML form elemanlarından otomatik form alanı yaratma.

IronPDF'in nasıl yapılır kütüphanesinde etkileşimli PDF formlarını ve özel filigranları öğrenebilirsiniz.

Yöntem PDF görüntüleyicisinin kapanmasını beklemez, bu da kullanıcı belgeyi görüntülerken uygulamanızın çalışmaya devam etmesine olanak tanır. Microsoft'un Process.Start belgelendirmesine göre, bu yaklaşım uygun kaynak yönetimini garanti eder ve uygulamanızın uzun süreli bir görüntüleyici işlemi üzerinde takılmasını engeller. Microsoft Learn'deki ProcessStartInfo sınıf referansı, pencere stili, fiil (aç, yazdır) ve çalışma dizini gibi yapılandırabileceğiniz tüm özelliklerin tam bir listesini sunar.

C#'ta Varsayılan Görüntüleyici ile PDF'leri Açma: Şekil 3 - PDF oluşturma ve görüntüleme Süreç iş akışı

Rendering Seçeneklerinin Yapılandırılması

ChromePdfRenderOptions sınıfı, çıktı PDF üzerinde ayrıntılı kontrol sağlar. Yaygın ayarlar şunları içerir:

  • PaperSize -- PdfPaperSize.A4, Letter veya herhangi bir standart boyuta ayarlanır.
  • HtmlArkaPlanRenkleriniBas -- HTML'den arka plan renkleri ve resimler oluşturur.
  • CreatePdfFormsFromHtml -- HTML <input> ve <select> öğelerini etkileşimli PDF form alanlarına dönüştürür.
  • Üst Kenar Boşluğu / Alt Kenar Boşluğu / Sol Kenar Boşluğu / Sağ Kenar Boşluğu -- Sayfa kenar boşluklarını milimetre olarak kontrol eder.

Bu ayarlar, ister HTML dizeleri gönderin, ister yerel HTML dosyaları ister uzaktan URL'ler olsun, aynı şekilde geçerlidir.

Oluşturulan PDF'lerden Veri Nasıl Çıkarılır?

Bir PDF oluşturulup açıldığında, içeriğini geri okumanız da gerekebilir. IronPDF, günlükleme, doğrulama veya sonraki işlem aşamaları için kullanışlı olan PDF dosyalarından metin çıkarmayı destekler.

Görüntü ağırlıklı belgeler için, ayrıca PDF'den görüntüye dönüştürme kullanarak sayfaları PNG veya JPEG dosyaları olarak görüntüleyebilirsiniz. Bu, önizleme oluşturma ve küçük resim iş akışlarında yaygındır.

Her iki özellik de aynı IronPDF kütüphanesi aracılığıyla erişilebilirdir ve ek bağımlılıklar gerektirmez. Eksiksiz IronPDF API belgeleri, tüm çıkarma ve dönüştürme işlemleri için yöntem seviyesinde referanslar sağlar.

Hiç PDF Görüntüleyici Yüklü Değilse Ne Olur?

Hedef makinede hiç PDF görüntüleyici yüklü değilse, Windows kullanıcıdan bir uygulama seçmesini veya bir tanesini bulmak için Microsoft Store'u ziyaret etmesini isteyen bir iletişim kutusu görüntüleyecektir. Bu, standart Windows davranışıdır ve Process.Start'nin kontrolü dışındadır.

Bu durumu kabul edilebilir bir şekilde üretim kodunda yönetmek için, .pdf dosya uzantısı için kayıtlı bir işlemci bulunmadığında Process.Start tarafından atılan Win32Exception hatasını yakalayabilirsiniz:

using System.ComponentModel;
using System.Diagnostics;

try
{
    Process.Start(new ProcessStartInfo
    {
        FileName = outputPath,
        UseShellExecute = true
    });
}
catch (Win32Exception ex) when (ex.NativeErrorCode == 1155)
{
    // Error 1155: No application associated with the file extension
    Console.WriteLine("No PDF viewer is installed. Please install a PDF reader such as Adobe Acrobat Reader.");
}

Hata kodu 1155, dosya türü için herhangi bir uygulama kaydedilmediğinde Windows'un döndürdüğü ERROR_NO_ASSOCIATION ile eşleşir. Bu spesifik hatayı yakalamak, çökmeniz yerine yardımcı bir mesaj görüntülemenizi sağlar. Windows sistem hata kodlarının tam listesi, Microsoft Learn'deki Win32 hata kodları referansında belgelenmiştir.

Uygulamanız İçin Doğru Yaklaşımı Nasıl Seçersiniz?

Bir PDF'yi açmak için seçtiğiniz yöntem, inşa ettiğiniz uygulamanın türüne bağlıdır:

Farklı uygulama türleri için PDF açma stratejilerinin karşılaştırması
Uygulama TürüÖnerilen YaklaşımAna Dikkat
Konsol veya masaüstü uygulamasıUseShellExecute = true ile Process.StartBasit, ekstra bağımlılık yok
Windows ServisiDiske kaydedin; kullanıcıyı IPC veya mesaj kuyruğu ile bilgilendirinServisler masaüstü oturumu olmadan çalışır
Web uygulaması (ASP.NET)PDF'yi dosya indirme veya tarayıcıda içeri gömülü olarak akıtmaProcess.Start web sunucu bağlamlarında geçerli değildir
MAUI veya WinFormsProcess.Start veya gömülü PDF kontrolüGömülü görüntüleme, uygulama içerisinde daha iyi bir deneyim sunar

ASP.NET Core ile oluşturulmuş web uygulamaları için Process.Start kullanmayın. Sunucu işlemi başsız bir ortamda çalışır ve masaüstü uygulamaları açamaz. Bunun yerine, PDF'yi File() ile application/pdf MIME türü kullanarak bir dosya sonucu olarak döndürün ve tarayıcının gösterimi yönetmesine izin verin.

Konsol ve masaüstü uygulamaları için, Process.Start ile UseShellExecute = true en basit ve güvenilir seçenek olarak kalır.

Lütfen dikkate alın: Not: Eğer yüklü bir PDF görüntüleyiciniz yoksa, Windows bir diyalog kutusu göstererek bir tane seçmenizi veya indirmenizi isteyebilir.

PDF oluşturma ve görüntüleme ile .NET uygulamanızda başlamak hazır mısınız? ücretsiz deneme ile tam özellik setine erişin veya projeniz için doğru planı bulmak için IronPDF lisans sayfasını inceleyin.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez