# C# .NET'te HTML'den PDF'e
IronPDF'nin geliştiricileri olarak, HTML'den PDF'e dönüşümün müşteri beklentilerini karşılayan doğru, yüksek kaliteli sonuçlar üretmesinin ne kadar önemli olduğunu biliyoruz. Bu C# eğitimi, uygulamalarınız, projeleriniz ve web siteleriniz için bir HTML'den PDF'e dönüştürücü oluşturma konusunda size rehberlik edecek. Bir C# HTML'den PDF'e dönüştürücü geliştireceğiz ve IronPDF'den çıkan PDF belgeleri, Google Chrome web tarayıcısı tarafından üretilen PDF'lerle piksel mükemmel olacak.
```cs
:title=Get started making PDFs now!
IronPdf.ChromePdfRenderer
.StaticRenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
```
<hr class="separator" />
<p class="main-content__segment-title">Genel Bakış</p>
<div class="hsg-featured-snippet">
<h2>C#'ta HTML'den PDF'e Nasıl Dönüştürülür</h2>
<img class="featured-snippet__image featured-snippet__image--float-right featured-snippet__image--html-pdf" src="/static-assets/pdf/images/html-to-pdf-converter-in-csharp.png" alt="C#'ta HTML'den PDF'e Nasıl Dönüştürülür" />
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronPdf/">HTML'den PDF'e C# kütüphanesini indirin ve yükleyin</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">Bir HTML Dizesi ile PDF Oluşturun</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">Bir HTML Dizesini PDF'e dönüştürmek için RenderHtmlAsPdf yöntemini kullanın</a></li>
<li><a href="#anchor-export-a-pdf-using-existing-url">Mevcut URL kullanarak bir PDF dışa aktarın</a></li>
<li><a href="#anchor-generate-a-pdf-from-a-html-page">Bir HTML sayfasından PDF oluşturun</a></li>
<li><a href="#anchor-add-custom-headers-and-footers">Özel Başlıklar ve Altbilgiler Ekleyin</a></li>
<li>PDF dosyasını bilgisayara kaydetmek için SaveAs çağrısı yapın</li>
<li><a href="#anchor-c-html-to-pdf-conversion-settings">Daha Fazlası</a></li>
</ol>
</div>
<br class="main-article__clear-both" />
## C# & VB.NET için HTML'den PDF'e Dönüştürücü
.NET'te programatik olarak PDF dosyaları oluşturmak sinir bozucu bir görev olabilir. PDF belge dosya formatı daha çok yazıcılar için tasarlanmıştır, geliştiriciler için değil. Ve C#'ta PDF oluşturma için uygun kütüphaneler veya yerleşik özellikler pek yoktur, birçok kütüphane ekstra kurulum gerektirir ve basit bir görevi gerçekleştirmek için birden fazla kod satırı gerektirdiğinde daha fazla hayal kırıklığına neden olur.
Bu eğitimde kullanacağımız C# HTML'den PDF'e dönüştürme aracı, Iron Software tarafından geliştirilen IronPDF'dir, oldukça popüler bir C# PDF oluşturma ve düzenleme kütüphanesidir. Bu kütüphane, tam PDF düzenleme ve oluşturma işlevselliğine sahiptir, kutudan çıktığı gibi çalışır, ihtiyacınız olanı en az satırda yapar ve [50'den fazla özelliğinin mükemmel belgelerine](/features/) sahiptir. IronPDF, **.NET 10, .NET 9, .NET 8, .NET 7, .NET 6 ve .NET 5**, .NET Core, .NET Standard ve .NET Framework'ü Windows, macOS, Linux, Docker, Azure ve AWS üzerinde desteklemesiyle öne çıkar.
C# ve IronPDF ile "<a href="/how-to/create-new-pdfs/">bir PDF belgesi oluşturmak</a>" veya "<a href="/examples/using-html-to-create-a-pdf/">HTML'den PDF'e dönüştürme</a>" mantığı basittir. IronPDF'nin gelişmiş Chrome Renderer'ı sayesinde, PDF belgesi tasarımı ve düzeninin çoğu veya tamamı mevcut HTML varlıklarını kullanacaktır.
.NET'te HTML5 ile dinamik PDF oluşturma yöntemi, konsol uygulamaları, Windows Forms uygulamaları, WPF, web siteleri ve MVC'de eşit derecede iyi çalışır.
**IronPDF ayrıca HTML'nizi Chrome ile hata ayıklama desteği sunar ve Piksel Mükemmel PDF'ler oluşturur. Bunu ayarlamak için bir eğitim <a href="/how-to/pixel-perfect-html-to-pdf/">burada</a> bulunabilir.**
IronPDF, .NET ekosisteminin içinde ve dışında birkaç dilde mevcuttur.
- [F# rehberi](/get-started/fsharp-pdf-library-html-to-pdf/)
- [VB.NET rehberi](/get-started/vb-net-pdf/)
- [Python](/python/tutorials/html-to-pdf/)
- [Java](/java/tutorials/html-to-pdf/)
- [Node.js](/nodejs/tutorials/html-to-pdf/)
IronPDF, geliştirme için ücretsizdir; canlı dağıtım ve deneme filigranını kaldırmak için bir lisans anahtarı gereklidir. [Buradan bir lisans satın alabilirsiniz](/licensing/) veya <a class='js-modal-open' data-modal-id='trial-license'>buradan ücretsiz 30 günlük deneme anahtarı için kaydolabilirsiniz</a>.
<hr class="separator" />
<p class="main-content__segment-title">Adım 1</p>
## HTML'den PDF'e C# Kütüphanesini İndirin ve Yükleyin
### Visual Studio - NuGet Paket Yöneticisi
Visual Studio'da, proje çözüm gezgininize sağ tıklayın ve "NuGet Paketlerini Yönet..." seçeneğini seçin. Buradan sadece IronPDF'yi arayın ve çözümünüze en son sürümü yükleyin... çıkan herhangi bir iletişim kutusuna Tamam deyin. Bu, VB.NET projelerinde de aynı şekilde çalışacaktır.
```shell
:ProductInstall
```
### NuGet Web Sitesinde IronPDF
IronPDF'nin özellikleri, uyumluluğu ve indirmeleri hakkında tam bir bilgi almak için lütfen IronPDF'yi NuGet'in resmi web sitesinde kontrol edin: <a class="js-modal-open" href="https://www.nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download">https://www.nuget.org/packages/IronPdf</a>
### DLL ile Yükleme
Başka bir seçenek de IronPDF DLL'ini doğrudan yüklemektir. IronPDF, <a class="js-modal-open" href="/packages/IronPdf.zip" data-modal-id="trial-license-after-download">https://ironpdf.com/packages/IronPdf.zip</a> adresinden indirilebilir ve projeye veya GAC'a manuel olarak yüklenebilir.
<hr class="separator" />
<p class="main-content__segment-title">Nasıl Yapılır Eğitimleri</p>
## C# .NET'te Bir HTML Dizesi ile PDF Oluşturun
**Nasıl Yapılır: HTML Dizesini PDF'e Dönüştürmek?** C#'ta *yeni bir PDF dosyası oluşturmak* çok verimli ve ödüllendirici bir beceridir.
Herhangi bir HTML (HTML5) dizesini PDF'e dönüştürmek için basitçe [ChromePdfRenderer.RenderHtmlAsPdf](/object-reference/api/IronPdf.ChromePdfRenderer.html) yöntemini kullanabiliriz. **C# HTML'den PDF'e render** işlemi, IronPDF NuGet paketi ile birlikte gelen Google Chromium motorunun tam işlevsel bir sürümü tarafından gerçekleştirilir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-1.cs
```
`RenderHtmlAsPdf`, HTML5, CSS3, JavaScript ve görüntüleri tam olarak destekler. Bu varlıklar bir sabit diskteyse, `RenderHtmlAsPdf`'in ikinci parametresini varlıkları içeren dizine ayarlamak isteyebiliriz. Bu yöntem, PDF bilgilerini tutmak için kullanılan bir sınıf olan **PdfDocument** nesnesini döndürür.
### IronPDF, HTML'nizi Chrome'da göründüğü gibi tam olarak render edecektir
HTML, CSS ve JavaScript'inizi düzenlerken orada gördüğünüz değişikliklerin IronPDF'den çıktığınızda piksel mükemmel aynı olduğundan emin olmak için Chrome'u tam HTML hata ayıklama için ayarlamanıza izin veren tam bir eğitimimiz var. Lütfen eğitimi burada bulun: [Chrome'da HTML'yi Hata Ayıklayarak Piksel Mükemmel PDF'ler Oluşturma](/how-to/pixel-perfect-html-to-pdf/).
**Temel URL yolu** (`BaseUrlOrPath` argümanı):
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
```
Tüm referans verilen CSS stil sayfaları, görüntüler ve JavaScript dosyaları bu temel yola göre göreceli olacak ve düzenli ve mantıklı bir yapıda tutulabilir. Ayrıca, elbette, Google Fonts gibi web yazı tipleri ve hatta jQuery dahil olmak üzere çevrimiçi görüntüler, stil sayfaları ve varlıklar referans vermeyi tercih edebilirsiniz.
<hr class="separator" />
## Mevcut URL Kullanarak PDF Dışa Aktarma | URL'den PDF'e
Mevcut URL'leri PDF olarak render etmek C# ile çok verimli ve sezgiseldir. Bu aynı zamanda ekiplerin PDF tasarımını ve arka uç PDF render işini birden fazla ekip arasında bölmesine olanak tanır.
Aşağıdaki örnekte Wikipedia.com'dan bir sayfa render edelim:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-3.cs
```
Bağlantıların ve hatta HTML formlarının C# kodumuz tarafından üretilen PDF içinde korunduğunu fark edeceksiniz.
Mevcut web sayfalarını render ederken uygulamak isteyebileceğimiz bazı püf noktaları vardır:
### Baskı ve Ekran CSS
CSS medya türleri, bir sayfanın baskı ve ekran için ayrı stiller taşımasına izin verir. IronPDF'ye genellikle daha basit olan "Baskı" CSS'sini render etmesini söyleyebiliriz. Varsayılan olarak "Ekran" CSS stilleri render edilecektir, bu da tarayıcıda gördüğünüzle eşleşir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
```
Ana Makale: [Piksel Mükemmel HTML'den PDF'e Karşılaştırma](/how-to/pixel-perfect-html-to-pdf/#decide-to-use-css-media-type-print-or-screen).
### JavaScript
IronPDF, JavaScript, jQuery ve hatta AJAX'ı destekler. Web sayfamızın bir anlık görüntüsünü render etmeden önce [IronPDF'ye JS veya ajax'ın **bitmesini** beklemesini](/how-to/javascript-to-pdf/) söylememiz gerekebilir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
```
JavaScript desteğini, sayfa yüklendiğinde JavaScript tarafından çizilen [d3.js chord-diagram dokümantasyon sayfasını](https://d3js.org/d3-chord) render ederek gösterebiliriz:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
```
### Duyarlı CSS
.NET'te duyarlı CSS kullanarak HTML'den PDF'e! [Duyarlı web sayfaları](/how-to/html-to-pdf-responsive-css/) tarayıcıda görüntülenmek üzere tasarlanmıştır. IronPDF, sunucunuzun işletim sistemi içinde gerçek bir tarayıcı penceresi açmaz. Bir tarayıcı görünüm alanı olmadan, duyarlı düzenler en dar kırılma noktasına geri dönebilir.
Bu sorunu aşmak için **Baskı** css medya türlerini kullanmanızı öneririz. Baskı CSS'si normalde duyarlı olmamalıdır.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
```
<hr class="separator" />
## Bir HTML Sayfasından PDF Oluşturma
Sabit diskimizdeki herhangi bir HTML sayfasını PDF olarak da render edebiliriz. CSS, görüntüler ve js gibi tüm göreceli varlıklar, dosya **file://** protokolü kullanılarak açılmış gibi render edilecektir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
```
Bu yöntem, geliştiriciye geliştirme sırasında HTML içeriğini bir tarayıcıda test etme fırsatı sunma avantajına sahiptir. IronPDF'nin render motorunun dayandığı web tarayıcısı olduğu için Chrome'u öneriyoruz.
[XML'i PDF'e dönüştürmek için XML içeriğinizi PDF'e yazdırmak için XSLT şablonlamayı kullanabilirsiniz](/how-to/xml-to-pdf/).
<hr class="separator" />
## Özel Başlıklar ve Altbilgiler Ekleyin
Başlıklar ve altbilgiler, IronPDF kullanılarak render edilirken veya mevcut PDF dosyalarına eklenebilir.
IronPDF ile, başlıklar ve altbilgiler *`TextHeaderFooter`* sınıfını kullanarak basit metin tabanlı içerik içerebilir - veya *`HtmlHeaderFooter`* sınıfını kullanarak görüntüler ve zengin HTML içeriği ile.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-9.cs
```
Aşağıdaki nasıl yapılır makalesinde tüm render seçeneklerini keşfedin: [Render Seçeneklerini Nasıl Kullanılır](/how-to/rendering-options/).
### HTML Başlıklar ve Altbilgiler
`HtmlHeaderFooter` sınıfı, HTML5 içeriği kullanarak zengin başlıklar ve altbilgiler oluşturulmasına olanak tanır ve bu içerik görüntüler ve stil sayfaları bile içerebilir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-10.cs
```
### PDF Başlıklarında ve Altbilgilerinde Dinamik Veri
Metin ve hatta başlıkların ve altbilgilerin HTML'sine aşağıdaki gibi yer tutucular kullanarak içerik "birleştirebiliriz":
- `{page}` için mevcut sayfa numarası
- `{total-pages}` için PDF'deki toplam sayfa sayısı
- `{url}` için render edilen PDF'nin URL'si, bir web sayfasından render edilmişse
- `{date}` için bugünün tarihi
- `{time}` için mevcut saat
- `{html-title}` için render edilen HTML belgesinin `<title>` etiketi
- `{pdf-title}` için belge başlığı, ChromePdfRenderOptions aracılığıyla ayarlanabilir
<hr class="separator" />
## C# HTML'den PDF'e Dönüştürme Ayarları
Kullanıcılarımızın ve müşterilerimizin PDF içeriğinin nasıl render edilmesini bekleyebileceği konusunda birçok nüans vardır.
`ChromePdfRenderer` sınıfı, bu seçenekleri ayarlamak için kullanılabilecek bir **RenderingOptions** özelliği içerir.
Örneğin, yalnızca "`print`" stil CSS3 direktiflerini kabul etmeyi seçmek isteyebiliriz:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-11.cs
```
Baskı marjlarımızın boyutunu değiştirerek sayfada daha fazla boşluk oluşturmak, büyük başlıklar veya altbilgiler için yer açmak veya broşürlerin veya posterlerin ticari baskısı için sıfır marjlar ayarlamak isteyebiliriz:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-12.cs
```
HTML öğelerinden arka plan görüntülerini açıp kapatmak da mümkündür:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-13.cs
```
Çıktı PDF'lerimizin herhangi bir sanal kağıt boyutunda render edilmesi de mümkündür - portre ve manzara boyutları ve hatta milimetre veya inç cinsinden ayarlanabilen özel boyutlar dahil.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-14.cs
```
Aşağıdaki nasıl yapılır makalesinde tüm render seçeneklerini keşfedin: "[Render Seçeneklerini Nasıl Kullanılır](/how-to/rendering-options/)."
<hr class="separator" />
## HTML Şablonlamayı Uygulama
İnternet ve web sitesi geliştiricileri için PDF'leri şablonlamak veya "toplu oluşturmak" yaygın bir gerekliliktir.
Bir PDF belgesinin kendisini şablonlamak yerine, IronPDF ile mevcut, iyi denenmiş teknolojileri kullanarak HTML'mizi şablonlayabiliriz. HTML şablonu bir sorgu dizesi veya veritabanından gelen verilerle birleştirildiğinde, dinamik olarak oluşturulmuş bir PDF belgesi elde ederiz.
En basit durumda, C# String.Format yöntemini kullanmak temel örnek için etkilidir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-15.cs
```
HTML dosyası daha uzunsa, genellikle `[[NAME]]` gibi keyfi yer tutucular kullanabiliriz ve bunları daha sonra gerçek verilerle değiştirebiliriz.
Aşağıdaki örnek, her biri bir kullanıcıya özel 3 PDF oluşturacaktır.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
```
### Handlebars.NET ile Gelişmiş Şablonlama
C# verilerini PDF oluşturma için HTML ile birleştirmenin sofistike bir yöntemi, Handlebars şablonlama dilini kullanmaktır.
Handlebars, C# nesnelerinden ve sınıf örneklerinden, veritabanı kayıtları dahil olmak üzere dinamik HTML oluşturmayı mümkün kılar. Handlebars, bir sorgunun bir fatura oluşturulması gibi bilinmeyen sayıda satır döndürebileceği durumlarda özellikle etkilidir.
Öncelikle projemize [Handlebars.Net NuGet paketi](https://www.nuget.org/packages/Handlebars.NET/) eklemeliyiz.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-17.cs
```
Bu HTML'yi render etmek için basitçe `RenderHtmlAsPdf` yöntemini kullanabiliriz.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-18.cs
```
Handlebars şablonlama dili ve C# uygulaması hakkında daha fazla bilgi edinebilirsiniz [GitHub](https://github.com/Handlebars-Net/Handlebars.Net).
### HTML5 Kullanarak Sayfa Sonları Ekleme
Bir PDF belgesinde yaygın bir gereklilik, sayfalandırmadır. Geliştiriciler, temiz ve okunabilir bir düzen için PDF sayfalarının nerede başlayıp bittiğini kontrol etmelidir.
Bunu yapmanın en kolay yolu, herhangi bir basılı HTML belgesine bir sayfa sonu render edecek daha az bilinen bir CSS hilesi ile yapmaktır.
```html
<div style='page-break-after: always;'> </div>
```
Verilen HTML çalışır, ancak en iyi uygulama değildir. Medya özniteliğini aşağıdaki örnekteki gibi ayarlamanızı öneririz. Çok sayfalı HTML içeriğini düzenlemenin bu kadar düzenli ve temiz bir yolu. IronPDF varsayılan olarak `screen` medya türü ile render ettiğinden, `media="print"` stil sayfası yalnızca `RenderingOptions.CssMediaType` `PdfCssMediaType.Print` olarak ayarlandığında uygulanır (yukarıdaki [Dönüştürme Ayarları](#anchor-c-html-to-pdf-conversion-settings) bölümüne bakın).
```html
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>This is Page 1</h1>
</div>
<div class="page">
<h1>This is Page 2</h1>
</div>
<div class="page">
<h1>This is Page 3</h1>
</div>
</body>
</html>
```
Nasıl Yapılır, [Sayfa Sonları ile İpuçları ve Püf Noktaları](/how-to/html-to-pdf-page-breaks/) hakkında daha fazla bilgi verir.
<hr class="separator" />
## Bir PDF'ye Kapak Sayfası Ekleme
IronPDF, PDF belgelerini birleştirmeyi kolaylaştırır. Bu tekniğin en yaygın kullanımı, mevcut bir render edilmiş PDF belgesine bir kapak sayfası veya arka sayfa eklemektir.
Bunu yapmak için önce bir kapak sayfası render ederiz ve ardından `PdfDocument.Merge()` statik yöntemini kullanarak iki belgeyi birleştiririz.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-19.cs
```
Tam bir kod örneği burada bulunabilir: [PDF Kapak Sayfası Kod Örneği](/examples/pdf-cover-page/).
<hr class="separator" />
## Filigran Ekleme
IronPDF'nin desteklediği son [C# PDF](/use-case/csharp-pdf/) özelliği, belgelere filigran eklemektir. Bu, bir belgenin her sayfasına "gizli" veya "örnek" olduğunu belirten bir not eklemek için kullanılabilir.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-20.cs
```
Tam bir kod örneği burada bulunabilir: [PDF Filigranlama Kod Örneği](/examples/pdf-watermarking/).
<hr class="separator" />
## C# Kaynak Kodunu İndirin
Bu eğitimin tam **ücretsiz HTML'den PDF'e dönüştürücü C# Kaynak Kodu**, bir ziplenmiş Visual Studio 2022 proje dosyası olarak indirilebilir. C#'ta PDF belge nesneleri oluşturmak için render motorunu kullanacaktır.
[Bu eğitimi bir Visual Studio projesi olarak indirin](/tutorials/html-to-pdf/downloads/CSharp-Html-To-Pdf-Tutorial.zip)
Ücretsiz indirme, HTML'den PDF'e oluşturmak için ihtiyacınız olan her şeyi içerir - çalışan C# PDF kod örnekleri dahil:
1. C# kullanarak bir HTML Dizesini PDF'e dönüştürme
2. C#'ta HTML Dosyasını PDF'e (CSS, JavaScript ve görüntüleri destekleyen)
3. C# HTML'den PDF'e bir URL kullanarak ("URL'den PDF'e")
4. C# PDF düzenleme ve ayar örnekleri
5. JavaScript tuval grafiklerini d3.js gibi bir PDF'e render etme
6. PDF Kütüphanesi için C#
### Sınıf Referansı
Geliştiriciler ayrıca `IronPdf.PdfDocument` Sınıf referansıyla ilgilenebilirler:
[IronPdf.PdfDocument sınıf referansı](https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html)
Bu nesne modeli, PDF belgelerinin nasıl:
- Şifrelenmiş ve parola korumalı
- Yeni HTML içeriği ile düzenlenmiş veya 'damgalanmış'
- Ön plan ve arka plan görüntüleri ile geliştirilmiş
- Sayfa veya belge düzeyinde birleştirilmiş, birleştirilmiş, kısaltılmış ve birleştirilmiş
- Düz metin ve görüntüleri çıkarmak için ayrıştırılmış veya IronOCR paketi ile OCR işlenmiş
<hr class="separator" />
## Blazor HTML'den PDF'e
Blazor sunucunuza HTML'den PDF'e işlevselliği eklemek kolaydır, sadece:
1. Yeni bir Blazor sunucu projesi oluşturun veya mevcut birini kullanın
2. Projenize IronPDF kütüphanesini NuGet kullanarak ekleyin
3. Yeni bir Razor Bileşeni ekleyin veya mevcut birini kullanın
4. Bir `InputTextArea` ekleyin ve IronPDF'ye bağlayın
5. IronPDF'nin geri kalanını halletmesine izin verin ve dağıtın
Daha fazla okuma için, [Blazor uygulamalarında HTML'den PDF'e dönüştürme](/how-to/blazor-tutorial/) için [tam adım adım kılavuza](/how-to/blazor-tutorial/) devam edin.
<img src="/static-assets/pdf/tutorials/blazor-tutorial/blazor-tutorial-3.webp" alt="IronPDF ile Blazor Sunucu sayfasından oluşturulan PDF" />
<hr class="separator" />
## Diğer PDF Kütüphaneleri ile Karşılaştırma
IronPDF, modern .NET geliştiricileri için özel olarak tasarlanmış güçlü ve tam özellikli bir PDF kütüphanesidir. Gelişmiş bir Chromium motoru tarafından desteklenen yerel HTML'den PDF'e dönüştürme, sezgisel bir API ve düzenli güncellemeler ile geliştirmeyi basitleştirirken yüksek kaliteli sonuçlar sağlar. Diğer araçlarla nasıl karşılaştırıldığını daha yakından inceleyelim:
### PDFSharp
- **Temel Özellikler**: PDFsharp, yönetilen kodda PDF belgeleri oluşturmak ve düzenlemek için açık kaynaklı (MIT) bir kütüphanedir. HTML render motoru yoktur, bu nedenle web içeriğini PDF'e dönüştürmek için ayrı bir üçüncü taraf render motoru gerekir.
- **Modern Standartlar**: IronPDF, Chromium tabanlı motoru aracılığıyla modern web teknolojilerini, HTML, CSS ve JavaScript dahil olmak üzere kullanır, bu da PDF'lerin çağdaş bir görünüm ve his korumasını sağlar.
- **Destek ve Güncellemeler**: PDFsharp açık kaynaklıdır ve her birkaç ayda bir sürüm yayınlar, ticari destek ise ayrı olarak satılır. IronPDF, aylık sürümler ve güvenlik yamaları yayınlar ve her lisans, kurumsal uygulamalar için önemli olan profesyonel mühendislik desteği içerir.
### wkhtmltopdf
- **Entegrasyon Kolaylığı**: wkhtmltopdf, bir C kütüphanesi ile bir komut satırı aracıdır; resmi bir .NET paketi yoktur, bu nedenle .NET'ten kullanmak, yerel ikili dosyayı başlatmak (veya DinkToPdf gibi üçüncü taraf bir sarmalayıcı aracılığıyla çağırmak) ve dağıttığınız her platform için bu ikili dosyayı göndermek anlamına gelir.
- **Render Teknolojisi**: wkhtmltopdf, QtWebKit ile render eder, Qt'nin 2015'te kullanımdan kaldırdığı ve Qt 5.6'da bıraktığı bir WebKit çatalı, bu nedenle modern JavaScript ve CSS özellikleri, özellikle dinamik, içerik açısından zengin web sitelerinde desteklenmez. IronPDF'nin Chromium motoru, güncel web standartlarını render eder.
- **Sürekli Geliştirme**: wkhtmltopdf'nin son sürümü Haziran 2020'de 0.12.6 idi ve GitHub deposu Ocak 2023'te arşivlendi, bu nedenle satıcı desteği yoktur. IronPDF, aylık güncellemeler ve özel müşteri hizmetleri ile gelişmeye devam ediyor.
### iTextSharp
- **HTML'den PDF'e Render**: iText, HTML'yi ayrı pdfHTML eklentisi aracılığıyla dönüştürür, bir CSS düzen motoru yerine bir tarayıcıdır ve eski iTextSharp 5 hattı artık yalnızca güvenlik düzeltmeleri alır. IronPDF, HTML'yi çekirdek pakette gömülü bir Chromium motoru ile render eder, ek bir eklenti gerekmez.
- **Geliştirici Deneyimi**: iText'in API'si, PDF nesneleri ve düzen öğeleri düzeyinde çalışır, bu güçlüdür ancak günlük görevler için daha fazla kod anlamına gelir. IronPDF, kodlamayı basitleştiren ve proje teslimatını hızlandıran temiz ve sezgisel bir C# API sunar.
- **Bakım ve Destek**: iText'in ücretsiz kullanımı AGPL altındadır, satıcı desteği ticari lisanslarla sınırlıdır ve iTextSharp 5.x, güvenlik düzeltmeleri dışında ömrünün sonundadır. IronPDF, her lisansla profesyonel destek ve aylık güncellemeler içerir.
### Aspose.PDF
- **Dönüştürme Kalitesi**: Aspose.PDF, HTML'yi kendi düzen motoru ile dönüştürür, bir tarayıcı ile değil. Belgeleri, bir web sayfasını önce `HttpClient` ile bir akışa indirerek ve ardından `HtmlLoadOptions` ile `Document`'e geçirerek dönüştürür, doğrudan bir URL'den render etmek yerine. Aşağıdaki r/nfl testimizde, çıktı neredeyse boştu: topluluk logosu, bir başlık ve birkaç boş kutu. IronPDF'nin Chromium motoru, bir URL'yi doğrudan render eder, JavaScript dahil.
- **API Kullanılabilirliği**: Aspose.PDF'nin API'si ayrıntılı olabilirken, IronPDF, kurulum süresini en aza indiren ve üretkenliği artıran geliştirici dostu bir deneyime odaklanır.
- **Çıktı Sadakati**: IronPDF, Chromium ile render ettiğinden, PDF, aynı HTML için Chrome'un gösterdiği ile eşleşir, bu da yüksek hacimli PDF oluşturma için tasarımı ve hata ayıklamayı öngörülebilir hale getirir.
### Syncfusion PDF
- **API Karmaşıklığı**: Syncfusion PDF, öğrenilecek daha büyük bir API yüzeyine sahip yetenekli bir kütüphanedir. IronPDF ise hızlı entegrasyon için basit bir API sağlar.
- **Render Motoru**: Syncfusion'un HTML dönüştürücüsü artık Chromium Blink motorunu kullanıyor; eski WebKit ve Internet Explorer motorları Essential Studio 2022 Volume 3'te kullanımdan kaldırıldı. Aşağıdaki r/nfl testimizde, Syncfusion'un çıktısı ana akışı korudu ancak gezinme ve topluluk panellerini düşürdü, IronPDF'nin Chromium motoru ise tüm sayfayı render etti.
- **Dönüştürmenin Ötesinde**: IronPDF paketi ayrıca dijital imzalar, açıklamalar, form doldurma ve barkod damgalama gibi işlemleri de kapsar, böylece aynı kütüphane belge iş akışının geri kalanını da yönetir.
### Render Karşılaştırması
Bu kütüphanelerin HTML'den PDF'e dönüştürme kalitesini karşılaştırmak için, dinamik içerik, canlı güncellemeler, modern CSS ve JavaScript tabanlı öğeler içeren bir Reddit topluluk sayfası, r/nfl kullandık:
`https://www.reddit.com/r/nfl/`

Her kütüphanenin varsayılan ayarlarıyla tek bir çalıştırmadan elde edilen sonuçlar burada. Syncfusion ve Aspose.PDF değerlendirme yapıları olarak çalıştırıldı, bu yüzden çıktıları değerlendirme filigranları taşıyor (*her görüntüyü büyütülmüş olarak görüntülemek için tıklayın*):
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">IronPDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp"
alt="IronPDF'nin r/nfl Reddit sayfasını HTML'den PDF'e dönüştürme çıktısı"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp" />
<small><strong>Dinamik içeriği ve modern stilizasyonu koruyan, iyi biçimlendirilmiş ve görsel olarak doğru PDF.</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">SyncFusion</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp"
alt="Syncfusion'un r/nfl Reddit sayfasını HTML'den PDF'e dönüştürme çıktısı"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp" />
<small><strong>Deneme yapısı ile dönüştürüldü. Ana akış, gönderi içeriği ve stilizasyon dar bir tek sütun düzeninde geldi, ancak sol gezinme ve sağdaki topluluk paneli düşürüldü.</strong></small>
</div>
</div>
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">Aspose.PDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp"
alt="Aspose.PDF'nin r/nfl Reddit sayfasını HTML'den PDF'e dönüştürme çıktısı"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp" />
<small><strong>Değerlendirme yapısı; HTML'yi önce indirmeniz gerekiyordu (Aspose.PDF, HTML'yi bir akıştan yükler, bir URL'den değil). Çıktı neredeyse boştu: topluluk logosu, bir başlık ve birkaç boş kutu.</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">Wkhtmltopdf</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp"
alt="wkhtmltopdf'nin r/nfl Reddit sayfasını HTML'den PDF'e dönüştürme çıktısı"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp" />
<small><strong>wkhtmltopdf dönüşümü tamamladı, ancak sonuç sayfanın metni ve görüntüleri, düzeni, stilizasyonu, dinamik öğeleri veya etkileşimi olmadan. Bu, wkhtmltopdf'yi modern, dinamik web sayfaları için uygun hale getirmez.</strong></small>
</div>
</div>
[{i:(PDFsharp'ın HTML render motoru yoktur ve iText, HTML'yi yalnızca ayrı pdfHTML eklentisi aracılığıyla dönüştürür, bu nedenle her ikisi de bu tarayıcı-render testi dahil edilmedi.)}]
### Sonuç
Modern ve güvenilir bir PDF çözümü arayan .NET geliştiricileri için IronPDF güçlü bir seçimdir. Chromium tabanlı HTML'den PDF'e dönüştürme, kullanım kolaylığı, düzenli güncellemeler ve geniş özellik seti ile IronPDF, üretkenliği artırırken eski veya desteklenmeyen kütüphanelerle ilişkili risklerden kaçınır. Ticari uygulamalar için tasarlanan IronPDF, projelerinizi bakımı yapılan ve desteklenen bir kütüphanede tutar.
Gerçek dünya dinamik bir web sayfası ile yaptığımız testte, IronPDF en eksiksiz ve doğru render'ı üretti. Syncfusion, gezinme ve topluluk panellerini düşürdü. Aspose.PDF, HTML'yi önce indirmenizi gerektirdi ve yine de sayfanın neredeyse hiçbirini render etmedi. wkhtmltopdf, sayfanın stilizasyonu olmadan metin ve görüntüleri üretti, modern siteler için kötü bir uyum.
Modern HTML'den PDF'e iş akışları için, bu render doğruluğu ve küçük, okunabilir bir API kombinasyonu, IronPDF'yi öne çıkaran şeydir.
**Dinamik, ağır CSS HTML'yi kolayca PDF'e dönüştüren IronPDF'nin tam özellikli paketini deneyimleyin. Şimdi [ücretsiz deneme](trial-license) ile deneyin.**
<hr class="separator" />
## C# Eğitim Videosunda HTML'den PDF'e İzleyin
<a name="video"></a>
PDF belgesi ile, [Chrome'un PDF'leri indirmek yerine tarayıcıda açmasını ayarlamayı](https://support.google.com/chrome/answer/114662) öğrenmek için aşağıdaki bağlantıyı ziyaret edebilirsiniz.
!!!--LIBRARY_GET_STARTED_WITH_PRODUCT_TRIAL_EXTENDED_BLOCK--!!!
IronPDF'nin geliştiricileri olarak, HTML'den PDF'e dönüşümün müşteri beklentilerini karşılayan doğru, yüksek kaliteli sonuçlar üretmesinin ne kadar önemli olduğunu biliyoruz. Bu C# eğitimi, uygulamalarınız, projeleriniz ve web siteleriniz için bir HTML'den PDF'e dönüştürücü oluşturma konusunda size rehberlik edecek. Bir C# HTML'den PDF'e dönüştürücü geliştireceğiz ve IronPDF'den çıkan PDF belgeleri, Google Chrome web tarayıcısı tarafından üretilen PDF'lerle piksel mükemmel olacak.
.NET'te programatik olarak PDF dosyaları oluşturmak sinir bozucu bir görev olabilir. PDF belge dosya formatı daha çok yazıcılar için tasarlanmıştır, geliştiriciler için değil. Ve C#'ta PDF oluşturma için uygun kütüphaneler veya yerleşik özellikler pek yoktur, birçok kütüphane ekstra kurulum gerektirir ve basit bir görevi gerçekleştirmek için birden fazla kod satırı gerektirdiğinde daha fazla hayal kırıklığına neden olur.
Bu eğitimde kullanacağımız C# HTML'den PDF'e dönüştürme aracı, Iron Software tarafından geliştirilen IronPDF'dir, oldukça popüler bir C# PDF oluşturma ve düzenleme kütüphanesidir. Bu kütüphane, tam PDF düzenleme ve oluşturma işlevselliğine sahiptir, kutudan çıktığı gibi çalışır, ihtiyacınız olanı en az satırda yapar ve 50'den fazla özelliğinin mükemmel belgelerine sahiptir. IronPDF, .NET 10, .NET 9, .NET 8, .NET 7, .NET 6 ve .NET 5, .NET Core, .NET Standard ve .NET Framework'ü Windows, macOS, Linux, Docker, Azure ve AWS üzerinde desteklemesiyle öne çıkar.
C# ve IronPDF ile "bir PDF belgesi oluşturmak" veya "HTML'den PDF'e dönüştürme" mantığı basittir. IronPDF'nin gelişmiş Chrome Renderer'ı sayesinde, PDF belgesi tasarımı ve düzeninin çoğu veya tamamı mevcut HTML varlıklarını kullanacaktır.
.NET'te HTML5 ile dinamik PDF oluşturma yöntemi, konsol uygulamaları, Windows Forms uygulamaları, WPF, web siteleri ve MVC'de eşit derecede iyi çalışır.
IronPDF ayrıca HTML'nizi Chrome ile hata ayıklama desteği sunar ve Piksel Mükemmel PDF'ler oluşturur. Bunu ayarlamak için bir eğitim burada bulunabilir.
IronPDF, .NET ekosisteminin içinde ve dışında birkaç dilde mevcuttur.
HTML'den PDF'e C# Kütüphanesini İndirin ve Yükleyin
Visual Studio - NuGet Paket Yöneticisi
Visual Studio'da, proje çözüm gezgininize sağ tıklayın ve "NuGet Paketlerini Yönet..." seçeneğini seçin. Buradan sadece IronPDF'yi arayın ve çözümünüze en son sürümü yükleyin... çıkan herhangi bir iletişim kutusuna Tamam deyin. Bu, VB.NET projelerinde de aynı şekilde çalışacaktır.
PM > Install-Package IronPdf
Install-Package IronPdf
NuGet Web Sitesinde IronPDF
IronPDF'nin özellikleri, uyumluluğu ve indirmeleri hakkında tam bir bilgi almak için lütfen IronPDF'yi NuGet'in resmi web sitesinde kontrol edin: https://www.nuget.org/packages/IronPdf
DLL ile Yükleme
Başka bir seçenek de IronPDF DLL'ini doğrudan yüklemektir. IronPDF, https://ironpdf.com/packages/IronPdf.zip adresinden indirilebilir ve projeye veya GAC'a manuel olarak yüklenebilir.
Nasıl Yapılır Eğitimleri
C# .NET'te Bir HTML Dizesi ile PDF Oluşturun
Nasıl Yapılır: HTML Dizesini PDF'e Dönüştürmek? C#'ta yeni bir PDF dosyası oluşturmak çok verimli ve ödüllendirici bir beceridir.
Herhangi bir HTML (HTML5) dizesini PDF'e dönüştürmek için basitçe ChromePdfRenderer.RenderHtmlAsPdf yöntemini kullanabiliriz. C# HTML'den PDF'e render işlemi, IronPDF NuGet paketi ile birlikte gelen Google Chromium motorunun tam işlevsel bir sürümü tarafından gerçekleştirilir.
using IronPdf;// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome enginevar renderer = new ChromePdfRenderer();// Render an HTML string. The result is a PdfDocument held in memoryvar pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");// Write the PDF to diskpdf.SaveAs("pixel-perfect.pdf");
using IronPdf;
// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();
// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");
ImportsIronPdf' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engineDim renderer = New ChromePdfRenderer()' Render an HTML string. The result is a PdfDocument held in memoryDim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")' Write the PDF to diskpdf.SaveAs("pixel-perfect.pdf")
Imports IronPdf
' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
Dim renderer = New ChromePdfRenderer()
' Render an HTML string. The result is a PdfDocument held in memory
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf")
RenderHtmlAsPdf, HTML5, CSS3, JavaScript ve görüntüleri tam olarak destekler. Bu varlıklar bir sabit diskteyse, RenderHtmlAsPdf'in ikinci parametresini varlıkları içeren dizine ayarlamak isteyebiliriz. Bu yöntem, PDF bilgilerini tutmak için kullanılan bir sınıf olan PdfDocument nesnesini döndürür.
IronPDF, HTML'nizi Chrome'da göründüğü gibi tam olarak render edecektir
HTML, CSS ve JavaScript'inizi düzenlerken orada gördüğünüz değişikliklerin IronPDF'den çıktığınızda piksel mükemmel aynı olduğundan emin olmak için Chrome'u tam HTML hata ayıklama için ayarlamanıza izin veren tam bir eğitimimiz var. Lütfen eğitimi burada bulun: Chrome'da HTML'yi Hata Ayıklayarak Piksel Mükemmel PDF'ler Oluşturma.
Temel URL yolu (BaseUrlOrPath argümanı):
using IronPdf;var renderer = new ChromePdfRenderer();// The second argument is the base path. Relative URLs in the HTML (the image// below, but also stylesheets, scripts and fonts) are resolved against it.var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");
Dim renderer = New ChromePdfRenderer()' The second argument is the base path. Relative URLs in the HTML (the image' below, but also stylesheets, scripts and fonts) are resolved against it.Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")pdf.SaveAs("C:\MyProject\Assets\output.pdf")
Dim renderer = New ChromePdfRenderer()
' The second argument is the base path. Relative URLs in the HTML (the image
' below, but also stylesheets, scripts and fonts) are resolved against it.
Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")
pdf.SaveAs("C:\MyProject\Assets\output.pdf")
Tüm referans verilen CSS stil sayfaları, görüntüler ve JavaScript dosyaları bu temel yola göre göreceli olacak ve düzenli ve mantıklı bir yapıda tutulabilir. Ayrıca, elbette, Google Fonts gibi web yazı tipleri ve hatta jQuery dahil olmak üzere çevrimiçi görüntüler, stil sayfaları ve varlıklar referans vermeyi tercih edebilirsiniz.
Mevcut URL Kullanarak PDF Dışa Aktarma | URL'den PDF'e
Mevcut URL'leri PDF olarak render etmek C# ile çok verimli ve sezgiseldir. Bu aynı zamanda ekiplerin PDF tasarımını ve arka uç PDF render işini birden fazla ekip arasında bölmesine olanak tanır.
Aşağıdaki örnekte Wikipedia.com'dan bir sayfa render edelim:
using IronPdf;var renderer = new ChromePdfRenderer();// Render a live web page straight from its URLvar pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");// The PDF is written next to the executablepdf.SaveAs("wikipedia.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Render a live web page straight from its URLDim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")' The PDF is written next to the executablepdf.SaveAs("wikipedia.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Render a live web page straight from its URL
Dim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
' The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf")
Bağlantıların ve hatta HTML formlarının C# kodumuz tarafından üretilen PDF içinde korunduğunu fark edeceksiniz.
Mevcut web sayfalarını render ederken uygulamak isteyebileceğimiz bazı püf noktaları vardır:
Baskı ve Ekran CSS
CSS medya türleri, bir sayfanın baskı ve ekran için ayrı stiller taşımasına izin verir. IronPDF'ye genellikle daha basit olan "Baskı" CSS'sini render etmesini söyleyebiliriz. Varsayılan olarak "Ekran" CSS stilleri render edilecektir, bu da tarayıcıda gördüğünüzle eşleşir.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Choose which CSS media type the page is rendered with.// Screen (the default) renders the page as a browser displays it;// Print applies the page's @media print rules instead.// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.
// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Choose which CSS media type the page is rendered with.' Screen (the default) renders the page as a browser displays it;' Print applies the page's @media print rules instead.' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screenrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Choose which CSS media type the page is rendered with.
' Screen (the default) renders the page as a browser displays it;
' Print applies the page's @media print rules instead.
' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
using IronPdf;var renderer = new ChromePdfRenderer();// Let the page's JavaScript run before the snapshot is takenrenderer.RenderingOptions.EnableJavaScript = true;// Give scripts and AJAX calls 500 milliseconds to finish before rendering.// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait// for a signal instead of a fixed delay.renderer.RenderingOptions.WaitFor.RenderDelay(500);
using IronPdf;
var renderer = new ChromePdfRenderer();
// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;
// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);
Dim renderer = New ChromePdfRenderer()' Let the page's JavaScript run before the snapshot is takenrenderer.RenderingOptions.EnableJavaScript = True' Give scripts and AJAX calls 500 milliseconds to finish before rendering.' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait' for a signal instead of a fixed delay.renderer.RenderingOptions.WaitFor.RenderDelay(500)
Dim renderer = New ChromePdfRenderer()
' Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = True
' Give scripts and AJAX calls 500 milliseconds to finish before rendering.
' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
' for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500)
using IronPdf;var renderer = new ChromePdfRenderer();// The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = true;renderer.RenderingOptions.WaitFor.RenderDelay(500);// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptvar pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");pdf.SaveAs("chart.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");
pdf.SaveAs("chart.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = Truerenderer.RenderingOptions.WaitFor.RenderDelay(500)' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptDim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")pdf.SaveAs("chart.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)
' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
Dim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")
pdf.SaveAs("chart.pdf")
Duyarlı CSS
.NET'te duyarlı CSS kullanarak HTML'den PDF'e! Duyarlı web sayfaları tarayıcıda görüntülenmek üzere tasarlanmıştır. IronPDF, sunucunuzun işletim sistemi içinde gerçek bir tarayıcı penceresi açmaz. Bir tarayıcı görünüm alanı olmadan, duyarlı düzenler en dar kırılma noktasına geri dönebilir.
Bu sorunu aşmak için Baskı css medya türlerini kullanmanızı öneririz. Baskı CSS'si normalde duyarlı olmamalıdır.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Responsive layouts are designed for a browser viewport, so render the page's// print stylesheet instead of its screen stylesheetrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
ImportsIronPdfImportsIronPdf.RenderingDim renderer As New ChromePdfRenderer()' Responsive layouts are designed for a browser viewport, so render the page's' print stylesheet instead of its screen stylesheetrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Responsive layouts are designed for a browser viewport, so render the page's
' print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Bir HTML Sayfasından PDF Oluşturma
Sabit diskimizdeki herhangi bir HTML sayfasını PDF olarak da render edebiliriz. CSS, görüntüler ve js gibi tüm göreceli varlıklar, dosya file:// protokolü kullanılarak açılmış gibi render edilecektir.
using IronPdf;var renderer = new ChromePdfRenderer();// Render an HTML file from disk. Relative CSS, image and script paths// resolve against the file's own folder, as if opened with file://var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");pdf.SaveAs("Invoice.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
Dim renderer = New ChromePdfRenderer()' Render an HTML file from disk. Relative CSS, image and script paths' resolve against the file's own folder, as if opened with file://Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")pdf.SaveAs("Invoice.pdf")
Dim renderer = New ChromePdfRenderer()
' Render an HTML file from disk. Relative CSS, image and script paths
' resolve against the file's own folder, as if opened with file://
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
Bu yöntem, geliştiriciye geliştirme sırasında HTML içeriğini bir tarayıcıda test etme fırsatı sunma avantajına sahiptir. IronPDF'nin render motorunun dayandığı web tarayıcısı olduğu için Chrome'u öneriyoruz.
Başlıklar ve altbilgiler, IronPDF kullanılarak render edilirken veya mevcut PDF dosyalarına eklenebilir.
IronPDF ile, başlıklar ve altbilgiler TextHeaderFooter sınıfını kullanarak basit metin tabanlı içerik içerebilir - veya HtmlHeaderFooter sınıfını kullanarak görüntüler ve zengin HTML içeriği ile.
using IronPdf;using IronPdf.Rendering;// Create a PDF from an existing HTML file with rendering options set up frontvar renderer = new ChromePdfRenderer{RenderingOptions = new ChromePdfRenderOptions { // Margins are in millimetersMarginTop = 50,MarginBottom = 50, // Render the page's print stylesheetCssMediaType = PdfCssMediaType.Print, // Plain-text header: the document title, centered, above a divider lineTextHeader = new TextHeaderFooter {CenterText = "{pdf-title}",DrawDividerLine = true,FontSize = 16 }, // Plain-text footer: date and time on the left, page numbers on the rightTextFooter = new TextHeaderFooter {LeftText = "{date} {time}",RightText = "Page {page} of {total-pages}",DrawDividerLine = true,FontSize = 14 } }};var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");pdf.SaveAs("Invoice.pdf");// Open the result in the default PDF viewerSystem.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo{FileName = "Invoice.pdf",UseShellExecute = true});
using IronPdf;
using IronPdf.Rendering;
// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Margins are in millimeters
MarginTop = 50,
MarginBottom = 50,
// Render the page's print stylesheet
CssMediaType = PdfCssMediaType.Print,
// Plain-text header: the document title, centered, above a divider line
TextHeader = new TextHeaderFooter
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
// Plain-text footer: date and time on the left, page numbers on the right
TextFooter = new TextHeaderFooter
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
}
}
};
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "Invoice.pdf",
UseShellExecute = true
});
ImportsIronPdfImportsIronPdf.Rendering' Create a PDF from an existing HTML file with rendering options set up frontDim renderer = New ChromePdfRendererWith { .RenderingOptions = New ChromePdfRenderOptionsWith { ' Margins are in millimeters .MarginTop = 50, .MarginBottom = 50, ' Render the page's print stylesheet .CssMediaType = PdfCssMediaType.Print, ' Plain-text header: the document title, centered, above a divider line .TextHeader = New TextHeaderFooterWith { .CenterText = "{pdf-title}", .DrawDividerLine = True, .FontSize = 16 }, ' Plain-text footer: date and time on the left, page numbers on the right .TextFooter = New TextHeaderFooterWith { .LeftText = "{date} {time}", .RightText = "Page {page} of {total-pages}", .DrawDividerLine = True, .FontSize = 14 } }}Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")pdf.SaveAs("Invoice.pdf")' Open the result in the default PDF viewerSystem.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfoWith { .FileName = "Invoice.pdf", .UseShellExecute = True})
Imports IronPdf
Imports IronPdf.Rendering
' Create a PDF from an existing HTML file with rendering options set up front
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
' Margins are in millimeters
.MarginTop = 50,
.MarginBottom = 50,
' Render the page's print stylesheet
.CssMediaType = PdfCssMediaType.Print,
' Plain-text header: the document title, centered, above a divider line
.TextHeader = New TextHeaderFooter With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
' Plain-text footer: date and time on the left, page numbers on the right
.TextFooter = New TextHeaderFooter With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
}
}
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
' Open the result in the default PDF viewer
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo With {
.FileName = "Invoice.pdf",
.UseShellExecute = True
})
HtmlHeaderFooter sınıfı, HTML5 içeriği kullanarak zengin başlıklar ve altbilgiler oluşturulmasına olanak tanır ve bu içerik görüntüler ve stil sayfaları bile içerebilir.
using IronPdf;var renderer = new ChromePdfRenderer();// An HTML footer can carry markup, styles and images.// {page} and {total-pages} are filled in for every page.renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter{HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"};
using IronPdf;
var renderer = new ChromePdfRenderer();
// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
Dim renderer = New ChromePdfRenderer()' An HTML footer can carry markup, styles and images.' {page} and {total-pages} are filled in for every page.renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooterWith { .HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim renderer = New ChromePdfRenderer()
' An HTML footer can carry markup, styles and images.
' {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
}
PDF Başlıklarında ve Altbilgilerinde Dinamik Veri
Metin ve hatta başlıkların ve altbilgilerin HTML'sine aşağıdaki gibi yer tutucular kullanarak içerik "birleştirebiliriz":
{page} için mevcut sayfa numarası
{total-pages} için PDF'deki toplam sayfa sayısı
{url} için render edilen PDF'nin URL'si, bir web sayfasından render edilmişse
{date} için bugünün tarihi
{time} için mevcut saat
{html-title} için render edilen HTML belgesinin <title> etiketi
{pdf-title} için belge başlığı, ChromePdfRenderOptions aracılığıyla ayarlanabilir
C# HTML'den PDF'e Dönüştürme Ayarları
Kullanıcılarımızın ve müşterilerimizin PDF içeriğinin nasıl render edilmesini bekleyebileceği konusunda birçok nüans vardır. ChromePdfRenderer sınıfı, bu seçenekleri ayarlamak için kullanılabilecek bir RenderingOptions özelliği içerir.
Örneğin, yalnızca "print" stil CSS3 direktiflerini kabul etmeyi seçmek isteyebiliriz:
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Render the page's @media print CSS rather than its screen stylesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Render the page's @media print CSS rather than its screen stylesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Printrenderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")
Baskı marjlarımızın boyutunu değiştirerek sayfada daha fazla boşluk oluşturmak, büyük başlıklar veya altbilgiler için yer açmak veya broşürlerin veya posterlerin ticari baskısı için sıfır marjlar ayarlamak isteyebiliriz:
using IronPdf;var renderer = new ChromePdfRenderer();// Page margins in millimeters. Larger margins leave room for headers and// footers; set them to 0 for edge-to-edge brochures and posters.renderer.RenderingOptions.MarginTop = 50;renderer.RenderingOptions.MarginBottom = 50;renderer.RenderingOptions.MarginLeft = 20;renderer.RenderingOptions.MarginRight = 20;
using IronPdf;
var renderer = new ChromePdfRenderer();
// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Page margins in millimeters. Larger margins leave room for headers and' footers; set them to 0 for edge-to-edge brochures and posters.renderer.RenderingOptions.MarginTop = 50renderer.RenderingOptions.MarginBottom = 50renderer.RenderingOptions.MarginLeft = 20renderer.RenderingOptions.MarginRight = 20
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Page margins in millimeters. Larger margins leave room for headers and
' footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
HTML öğelerinden arka plan görüntülerini açıp kapatmak da mümkündür:
using IronPdf;var renderer = new ChromePdfRenderer();// Include CSS background colors and images in the PDF (set false to drop them)renderer.RenderingOptions.PrintHtmlBackgrounds = true;var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");pdf.SaveAs("output.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");
pdf.SaveAs("output.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Include CSS background colors and images in the PDF (set false to drop them)renderer.RenderingOptions.PrintHtmlBackgrounds = TrueDim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")pdf.SaveAs("output.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")
pdf.SaveAs("output.pdf")
Çıktı PDF'lerimizin herhangi bir sanal kağıt boyutunda render edilmesi de mümkündür - portre ve manzara boyutları ve hatta milimetre veya inç cinsinden ayarlanabilen özel boyutlar dahil.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Standard paper sizes and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;// Or a custom size, in millimeters or inches// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Standard paper sizes and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape' Or a custom size, in millimeters or inches' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Or a custom size, in millimeters or inches
' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)
' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
Bu türden favori kütüphanem IronPDF'dir. PDF dosyalarının hızlı ve verimli bir şekilde işlenmesine olanak tanır. Ayrıca, PDF/A formatına dışa aktarma ve dijital imzalama gibi birçok değerli özelliğe sahiptir.
IronOCR, manuel işleme maliyetinden yıllık 40.000 USD tasarruf etmemizi sağlıyor, üretkenliği artırıyor ve yüksek etkili görevler için kaynakları serbest bırakıyor. Kesinlikle tavsiye ederim.
IronSuite, operasyonlarımızda kritik bir rol oynar. Bunlar, iş süreçlerinde verimliliği artıran, kat planları oluşturmak ve envanter yönetimini geliştirmek gibi araçlardır.
İnternet ve web sitesi geliştiricileri için PDF'leri şablonlamak veya "toplu oluşturmak" yaygın bir gerekliliktir.
Bir PDF belgesinin kendisini şablonlamak yerine, IronPDF ile mevcut, iyi denenmiş teknolojileri kullanarak HTML'mizi şablonlayabiliriz. HTML şablonu bir sorgu dizesi veya veritabanından gelen verilerle birleştirildiğinde, dinamik olarak oluşturulmuş bir PDF belgesi elde ederiz.
En basit durumda, C# String.Format yöntemini kullanmak temel örnek için etkilidir.
using IronPdf;var renderer = new ChromePdfRenderer();// Insert a value into an HTML template with string.Formatstring html = string.Format("<h1>Hello {0}!</h1>", "World");var pdf = renderer.RenderHtmlAsPdf(html);pdf.SaveAs("Hello.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Hello.pdf");
Dim renderer As New ChromePdfRenderer()' Insert a value into an HTML template with string.FormatDim html AsString = String.Format("<h1>Hello {0}!</h1>", "World")Dim pdf = renderer.RenderHtmlAsPdf(html)pdf.SaveAs("Hello.pdf")
Dim renderer As New ChromePdfRenderer()
' Insert a value into an HTML template with string.Format
Dim html As String = String.Format("<h1>Hello {0}!</h1>", "World")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Hello.pdf")
HTML dosyası daha uzunsa, genellikle [[NAME]] gibi keyfi yer tutucular kullanabiliriz ve bunları daha sonra gerçek verilerle değiştirebiliriz.
Aşağıdaki örnek, her biri bir kullanıcıya özel 3 PDF oluşturacaktır.
using IronPdf;var renderer = new ChromePdfRenderer();// A template with a placeholder to replacevar htmlTemplate = "<p>[[NAME]]</p>";var names = new[] { "John", "James", "Jenny" };// One personalized PDF per nameforeach (var name in names){ var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); var pdf = renderer.RenderHtmlAsPdf(htmlInstance); pdf.SaveAs(name + ".pdf");}
using IronPdf;
var renderer = new ChromePdfRenderer();
// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
// One personalized PDF per name
foreach (var name in names)
{
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs(name + ".pdf");
}
ImportsIronPdfDim renderer = New ChromePdfRenderer()' A template with a placeholder to replaceDim htmlTemplate = "<p>[[NAME]]</p>"Dim names = New String() {"John", "James", "Jenny"}' One personalized PDF per nameFor Each name In names Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name) Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance) pdf.SaveAs(name & ".pdf")Next
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' A template with a placeholder to replace
Dim htmlTemplate = "<p>[[NAME]]</p>"
Dim names = New String() {"John", "James", "Jenny"}
' One personalized PDF per name
For Each name In names
Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name)
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
pdf.SaveAs(name & ".pdf")
Next
Handlebars.NET ile Gelişmiş Şablonlama
C# verilerini PDF oluşturma için HTML ile birleştirmenin sofistike bir yöntemi, Handlebars şablonlama dilini kullanmaktır.
Handlebars, C# nesnelerinden ve sınıf örneklerinden, veritabanı kayıtları dahil olmak üzere dinamik HTML oluşturmayı mümkün kılar. Handlebars, bir sorgunun bir fatura oluşturulması gibi bilinmeyen sayıda satır döndürebileceği durumlarda özellikle etkilidir.
using HandlebarsDotNet;// A Handlebars template with two placeholdersvar source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>";// Compile it once, then fill it with any object that has matching propertiesvar template = Handlebars.Compile(source);var data = new { title = "My new post", body = "This is my first post!" };string html = template(data);// html now contains://// <div class="entry">// <h1>My new post</h1>// <div class="body">// This is my first post!// </div>// </div>
using HandlebarsDotNet;
// A Handlebars template with two placeholders
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);
var data = new { title = "My new post", body = "This is my first post!" };
string html = template(data);
// html now contains:
//
// <div class="entry">
// <h1>My new post</h1>
// <div class="body">
// This is my first post!
// </div>
// </div>
ImportsHandlebarsDotNet' A Handlebars template with two placeholdersDim source = "<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"' Compile it once, then fill it with any object that has matching propertiesDim template = Handlebars.Compile(source)Dim data = New With {.title = "My new post", .body = "This is my first post!"}Dim html AsString = template(data)' html now contains:'' <div class="entry">' <h1>My new post</h1>' <div class="body">' This is my first post!' </div>' </div>
Imports HandlebarsDotNet
' A Handlebars template with two placeholders
Dim source = "<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile it once, then fill it with any object that has matching properties
Dim template = Handlebars.Compile(source)
Dim data = New With {.title = "My new post", .body = "This is my first post!"}
Dim html As String = template(data)
' html now contains:
'
' <div class="entry">
' <h1>My new post</h1>
' <div class="body">
' This is my first post!
' </div>
' </div>
Bu HTML'yi render etmek için basitçe RenderHtmlAsPdf yöntemini kullanabiliriz.
using HandlebarsDotNet;using IronPdf;// Fill the Handlebars template, then render the resulting HTMLvar template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");string html = template(new { title = "My new post", body = "This is my first post!" });var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(html);pdf.SaveAs("Handlebars.pdf");
using HandlebarsDotNet;
using IronPdf;
// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Handlebars.pdf");
ImportsHandlebarsDotNetImportsIronPdf' Fill the Handlebars template, then render the resulting HTMLDim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")Dim html AsString = template(New With {.title = "My new post", .body = "This is my first post!"})Dim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf(html)pdf.SaveAs("Handlebars.pdf")
Imports HandlebarsDotNet
Imports IronPdf
' Fill the Handlebars template, then render the resulting HTML
Dim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")
Dim html As String = template(New With {.title = "My new post", .body = "This is my first post!"})
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Handlebars.pdf")
Handlebars şablonlama dili ve C# uygulaması hakkında daha fazla bilgi edinebilirsiniz GitHub.
HTML5 Kullanarak Sayfa Sonları Ekleme
Bir PDF belgesinde yaygın bir gereklilik, sayfalandırmadır. Geliştiriciler, temiz ve okunabilir bir düzen için PDF sayfalarının nerede başlayıp bittiğini kontrol etmelidir.
Bunu yapmanın en kolay yolu, herhangi bir basılı HTML belgesine bir sayfa sonu render edecek daha az bilinen bir CSS hilesi ile yapmaktır.
Verilen HTML çalışır, ancak en iyi uygulama değildir. Medya özniteliğini aşağıdaki örnekteki gibi ayarlamanızı öneririz. Çok sayfalı HTML içeriğini düzenlemenin bu kadar düzenli ve temiz bir yolu. IronPDF varsayılan olarak screen medya türü ile render ettiğinden, media="print" stil sayfası yalnızca RenderingOptions.CssMediaTypePdfCssMediaType.Print olarak ayarlandığında uygulanır (yukarıdaki Dönüştürme Ayarları bölümüne bakın).
IronPDF, PDF belgelerini birleştirmeyi kolaylaştırır. Bu tekniğin en yaygın kullanımı, mevcut bir render edilmiş PDF belgesine bir kapak sayfası veya arka sayfa eklemektir.
Bunu yapmak için önce bir kapak sayfası render ederiz ve ardından PdfDocument.Merge() statik yöntemini kullanarak iki belgeyi birleştiririz.
using IronPdf;var renderer = new ChromePdfRenderer();// The document body, rendered from a web pagevar pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");// Prepend an existing PDF as the cover page. Merge returns a new document.var cover = PdfDocument.FromFile("CoverPage.pdf");var pdfMerged = PdfDocument.Merge(cover, pdf);pdfMerged.SaveAs("Combined.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);
pdfMerged.SaveAs("Combined.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The document body, rendered from a web pageDim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")' Prepend an existing PDF as the cover page. Merge returns a new document.Dim cover = PdfDocument.FromFile("CoverPage.pdf")Dim pdfMerged = PdfDocument.Merge(cover, pdf)pdfMerged.SaveAs("Combined.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The document body, rendered from a web page
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
' Prepend an existing PDF as the cover page. Merge returns a new document.
Dim cover = PdfDocument.FromFile("CoverPage.pdf")
Dim pdfMerged = PdfDocument.Merge(cover, pdf)
pdfMerged.SaveAs("Combined.pdf")
IronPDF'nin desteklediği son C# PDF özelliği, belgelere filigran eklemektir. Bu, bir belgenin her sayfasına "gizli" veya "örnek" olduğunu belirten bir not eklemek için kullanılabilir.
using IronPdf;using IronPdf.Editing;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.// The watermark is HTML, so any markup, styling or image can be used.pdf.ApplyWatermark( "<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation: 30, opacity: 50, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center);pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
using IronPdf.Editing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
"<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
rotation: 30,
opacity: 50,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
ImportsIronPdfImportsIronPdf.EditingDim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.' The watermark is HTML, so any markup, styling or image can be used.pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)pdf.SaveAs("C:\Path\To\Watermarked.pdf")
Imports IronPdf
Imports IronPdf.Editing
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
' The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
Bu eğitimin tam ücretsiz HTML'den PDF'e dönüştürücü C# Kaynak Kodu, bir ziplenmiş Visual Studio 2022 proje dosyası olarak indirilebilir. C#'ta PDF belge nesneleri oluşturmak için render motorunu kullanacaktır.
IronPDF, modern .NET geliştiricileri için özel olarak tasarlanmış güçlü ve tam özellikli bir PDF kütüphanesidir. Gelişmiş bir Chromium motoru tarafından desteklenen yerel HTML'den PDF'e dönüştürme, sezgisel bir API ve düzenli güncellemeler ile geliştirmeyi basitleştirirken yüksek kaliteli sonuçlar sağlar. Diğer araçlarla nasıl karşılaştırıldığını daha yakından inceleyelim:
PDFSharp
Temel Özellikler: PDFsharp, yönetilen kodda PDF belgeleri oluşturmak ve düzenlemek için açık kaynaklı (MIT) bir kütüphanedir. HTML render motoru yoktur, bu nedenle web içeriğini PDF'e dönüştürmek için ayrı bir üçüncü taraf render motoru gerekir.
Modern Standartlar: IronPDF, Chromium tabanlı motoru aracılığıyla modern web teknolojilerini, HTML, CSS ve JavaScript dahil olmak üzere kullanır, bu da PDF'lerin çağdaş bir görünüm ve his korumasını sağlar.
Destek ve Güncellemeler: PDFsharp açık kaynaklıdır ve her birkaç ayda bir sürüm yayınlar, ticari destek ise ayrı olarak satılır. IronPDF, aylık sürümler ve güvenlik yamaları yayınlar ve her lisans, kurumsal uygulamalar için önemli olan profesyonel mühendislik desteği içerir.
wkhtmltopdf
Entegrasyon Kolaylığı: wkhtmltopdf, bir C kütüphanesi ile bir komut satırı aracıdır; resmi bir .NET paketi yoktur, bu nedenle .NET'ten kullanmak, yerel ikili dosyayı başlatmak (veya DinkToPdf gibi üçüncü taraf bir sarmalayıcı aracılığıyla çağırmak) ve dağıttığınız her platform için bu ikili dosyayı göndermek anlamına gelir.
Render Teknolojisi: wkhtmltopdf, QtWebKit ile render eder, Qt'nin 2015'te kullanımdan kaldırdığı ve Qt 5.6'da bıraktığı bir WebKit çatalı, bu nedenle modern JavaScript ve CSS özellikleri, özellikle dinamik, içerik açısından zengin web sitelerinde desteklenmez. IronPDF'nin Chromium motoru, güncel web standartlarını render eder.
Sürekli Geliştirme: wkhtmltopdf'nin son sürümü Haziran 2020'de 0.12.6 idi ve GitHub deposu Ocak 2023'te arşivlendi, bu nedenle satıcı desteği yoktur. IronPDF, aylık güncellemeler ve özel müşteri hizmetleri ile gelişmeye devam ediyor.
iTextSharp
HTML'den PDF'e Render: iText, HTML'yi ayrı pdfHTML eklentisi aracılığıyla dönüştürür, bir CSS düzen motoru yerine bir tarayıcıdır ve eski iTextSharp 5 hattı artık yalnızca güvenlik düzeltmeleri alır. IronPDF, HTML'yi çekirdek pakette gömülü bir Chromium motoru ile render eder, ek bir eklenti gerekmez.
Geliştirici Deneyimi: iText'in API'si, PDF nesneleri ve düzen öğeleri düzeyinde çalışır, bu güçlüdür ancak günlük görevler için daha fazla kod anlamına gelir. IronPDF, kodlamayı basitleştiren ve proje teslimatını hızlandıran temiz ve sezgisel bir C# API sunar.
Bakım ve Destek: iText'in ücretsiz kullanımı AGPL altındadır, satıcı desteği ticari lisanslarla sınırlıdır ve iTextSharp 5.x, güvenlik düzeltmeleri dışında ömrünün sonundadır. IronPDF, her lisansla profesyonel destek ve aylık güncellemeler içerir.
Aspose.PDF
Dönüştürme Kalitesi: Aspose.PDF, HTML'yi kendi düzen motoru ile dönüştürür, bir tarayıcı ile değil. Belgeleri, bir web sayfasını önce HttpClient ile bir akışa indirerek ve ardından HtmlLoadOptions ile Document'e geçirerek dönüştürür, doğrudan bir URL'den render etmek yerine. Aşağıdaki r/nfl testimizde, çıktı neredeyse boştu: topluluk logosu, bir başlık ve birkaç boş kutu. IronPDF'nin Chromium motoru, bir URL'yi doğrudan render eder, JavaScript dahil.
API Kullanılabilirliği: Aspose.PDF'nin API'si ayrıntılı olabilirken, IronPDF, kurulum süresini en aza indiren ve üretkenliği artıran geliştirici dostu bir deneyime odaklanır.
Çıktı Sadakati: IronPDF, Chromium ile render ettiğinden, PDF, aynı HTML için Chrome'un gösterdiği ile eşleşir, bu da yüksek hacimli PDF oluşturma için tasarımı ve hata ayıklamayı öngörülebilir hale getirir.
Syncfusion PDF
API Karmaşıklığı: Syncfusion PDF, öğrenilecek daha büyük bir API yüzeyine sahip yetenekli bir kütüphanedir. IronPDF ise hızlı entegrasyon için basit bir API sağlar.
Render Motoru: Syncfusion'un HTML dönüştürücüsü artık Chromium Blink motorunu kullanıyor; eski WebKit ve Internet Explorer motorları Essential Studio 2022 Volume 3'te kullanımdan kaldırıldı. Aşağıdaki r/nfl testimizde, Syncfusion'un çıktısı ana akışı korudu ancak gezinme ve topluluk panellerini düşürdü, IronPDF'nin Chromium motoru ise tüm sayfayı render etti.
Dönüştürmenin Ötesinde: IronPDF paketi ayrıca dijital imzalar, açıklamalar, form doldurma ve barkod damgalama gibi işlemleri de kapsar, böylece aynı kütüphane belge iş akışının geri kalanını da yönetir.
Render Karşılaştırması
Bu kütüphanelerin HTML'den PDF'e dönüştürme kalitesini karşılaştırmak için, dinamik içerik, canlı güncellemeler, modern CSS ve JavaScript tabanlı öğeler içeren bir Reddit topluluk sayfası, r/nfl kullandık:
https://www.reddit.com/r/nfl/
Her kütüphanenin varsayılan ayarlarıyla tek bir çalıştırmadan elde edilen sonuçlar burada. Syncfusion ve Aspose.PDF değerlendirme yapıları olarak çalıştırıldı, bu yüzden çıktıları değerlendirme filigranları taşıyor (her görüntüyü büyütülmüş olarak görüntülemek için tıklayın):
IronPDF
Dinamik içeriği ve modern stilizasyonu koruyan, iyi biçimlendirilmiş ve görsel olarak doğru PDF.
SyncFusion
Deneme yapısı ile dönüştürüldü. Ana akış, gönderi içeriği ve stilizasyon dar bir tek sütun düzeninde geldi, ancak sol gezinme ve sağdaki topluluk paneli düşürüldü.
Aspose.PDF
Değerlendirme yapısı; HTML'yi önce indirmeniz gerekiyordu (Aspose.PDF, HTML'yi bir akıştan yükler, bir URL'den değil). Çıktı neredeyse boştu: topluluk logosu, bir başlık ve birkaç boş kutu.
Wkhtmltopdf
wkhtmltopdf dönüşümü tamamladı, ancak sonuç sayfanın metni ve görüntüleri, düzeni, stilizasyonu, dinamik öğeleri veya etkileşimi olmadan. Bu, wkhtmltopdf'yi modern, dinamik web sayfaları için uygun hale getirmez.
Lütfen dikkate alın: PDFsharp'ın HTML render motoru yoktur ve iText, HTML'yi yalnızca ayrı pdfHTML eklentisi aracılığıyla dönüştürür, bu nedenle her ikisi de bu tarayıcı-render testi dahil edilmedi.
Sonuç
Modern ve güvenilir bir PDF çözümü arayan .NET geliştiricileri için IronPDF güçlü bir seçimdir. Chromium tabanlı HTML'den PDF'e dönüştürme, kullanım kolaylığı, düzenli güncellemeler ve geniş özellik seti ile IronPDF, üretkenliği artırırken eski veya desteklenmeyen kütüphanelerle ilişkili risklerden kaçınır. Ticari uygulamalar için tasarlanan IronPDF, projelerinizi bakımı yapılan ve desteklenen bir kütüphanede tutar.
Gerçek dünya dinamik bir web sayfası ile yaptığımız testte, IronPDF en eksiksiz ve doğru render'ı üretti. Syncfusion, gezinme ve topluluk panellerini düşürdü. Aspose.PDF, HTML'yi önce indirmenizi gerektirdi ve yine de sayfanın neredeyse hiçbirini render etmedi. wkhtmltopdf, sayfanın stilizasyonu olmadan metin ve görüntüleri üretti, modern siteler için kötü bir uyum.
Modern HTML'den PDF'e iş akışları için, bu render doğruluğu ve küçük, okunabilir bir API kombinasyonu, IronPDF'yi öne çıkaran şeydir.
Dinamik, ağır CSS HTML'yi kolayca PDF'e dönüştüren IronPDF'nin tam özellikli paketini deneyimleyin. Şimdi ücretsiz deneme ile deneyin.
IronPDF kullanarak C#'ta HTML'yi PDF'ye nasıl dönüştürebilirim?
IronPDF kullanarak HTML'yi PDF'ye dönüştürmek için ChromePdfRenderer'ı başlatmanız, RenderHtmlAsPdf yöntemiyle HTML içeriğini PDF olarak oluşturmanız ve ardından PDF'yi bir dosyaya kaydetmeniz gerekir.
IronPDF için sistem gereksinimleri nelerdir?
IronPDF, Windows, macOS, Linux, Docker, Azure ve AWS üzerinde .NET 10, .NET 9, .NET 8, .NET 7, .NET 6, .NET 5, .NET Core, .NET Standard ve .NET Framework'ü destekler.
IronPDF'yi diğer programlama dilleriyle kullanabilir miyim?
Evet, IronPDF, .NET ekosisteminin içinde ve dışında F#, VB.NET, Python, Java ve Node.js dahil olmak üzere birden fazla dille kullanılabilir.
IronPDF kullanarak bir PDF'ye özel başlıklar ve altbilgiler nasıl ekleyebilirim?
IronPDF ile, metin tabanlı içerik için TextHeaderFooter sınıfını veya zengin HTML içeriği için HtmlHeaderFooter sınıfını kullanarak başlıklar ve altbilgiler ekleyebilirsiniz.
IronPDF ile mevcut bir URL'den PDF oluşturmak mümkün mü?
Evet, IronPDF'de RenderUrlAsPdf yöntemini kullanarak mevcut bir URL'den PDF oluşturabilirsiniz.
IronPDF gelişmiş CSS ve JavaScript oluşturmayı destekliyor mu?
Evet, IronPDF, modern web tasarımlarının doğru bir şekilde oluşturulmasını sağlayan gelişmiş CSS3 ve JavaScript, jQuery ve AJAX'ı destekler.
IronPDF'de toplu PDF oluşturma için HTML şablonlama uygulayabilir miyim?
Evet, IronPDF ile dinamik olarak PDF'ler oluşturmak için String.Format ve Handlebars.NET dahil olmak üzere C# şablonlama tekniklerini kullanabilirsiniz.
IronPDF diğer PDF kütüphaneleriyle nasıl karşılaştırılır?
IronPDF, HTML'yi gömülü bir Chromium motoruyla işler, aylık güncellemeler sunar ve kompakt bir C# API'sine sahiptir. Eğitim, PdfSharp, wkhtmltopdf, iTextSharp, Aspose.PDF ve Syncfusion PDF ile karşılaştırmalar içerir ve dinamik bir web sayfasının yan yana oluşturma testini içerir.
IronPDF ile PDF'lere filigran ekleyebilir miyim?
Evet, IronPDF, PDF belgelerinize metin veya resim filigranları eklemenize olanak tanır.
IronPDF için deneme sürümü mevcut mu?
Evet, bir lisans satın almadan önce IronPDF'nin özelliklerini test etmek için ücretsiz 30 günlük bir deneme anahtarına kaydolabilirsiniz.
Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.