Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

Pdfium'dan IronPDF'e C# ile Nasıl Geçilir

Bir PDFium .NET sarmalayıcıdan IronPDF'ye geçiş yapmak, .NET PDF iş akışınızı, yerel ikili bağımlılıklara sahip bir render odaklı motordan, platforma özgü karmaşıklık olmaksızın oluşturma, manipülasyon ve render'i yöneten kapsamlı bir PDF çözümüne taşır. Bu kılavuz, yerel bağımlılık yönetimini ortadan kaldırırken, PDFium'un kendisinin sağlamadığı yetenekleri ekleyen adım adım bir geçiş yolu sağlar.

Neden PDFium Sarmalayıcıdan IronPDF'ye Geçiş Yapmalısınız

PDFium .NET Sarmalayıcılarını Anlamak

PDFium, Google'ın BSD-3-Clause C++ PDF render ve ayrıştırma motorudur — Chrome'un yerleşik PDF görüntüleyicisini besleyen motorla aynıdır. Google tarafından sağlanmış resmi .NET bağlayıcısı yoktur; bunun yerine, .NET ekosistemi, PDFium'u topluluk sarmalayıcıları aracılığıyla tüketir. En sık atıfta bulunulan dört NuGet paketi PdfiumViewer (pvginkel; Apache 2.0; Ağustos 2019'da arşivlendi, son sürüm 2.13.0 Kasım 2017'de, .NET Framework 2.0+), PdfiumViewer.Updated (.NET Core / .NET 6'ya taşınmış bir çatal), PDFiumCore (Dtronix; .NET Standard 2.1 P/Invoke bağları) ve Pdfium.Net.SDK (Patagames; ticari, süresiz lisans SDK'sı).

API'leri farklıdır, ancak ortak bir özelliği paylaşırlar: PDFium'un kendisi, bir render ve ayrıştırma motorudur, HTML'den PDF veya belge yazımı motoru değildir. PDFium'da HTML ayrıştırıcı yoktur, bu yüzden herhangi bir sarmalayıcı HTML'yi PDF'ye dönüştüremez. Bu kılavuz, API'si en yaygın atıfta bulunulan 'öncesi' kod parçacıkları için temsilci sarıcı olarak PdfiumViewer kullanır; dört tanesinden herhangi biri için geçiş yaklaşımı aynıdır.

Kritik PDFium Sarmalayıcı Kısıtlamaları

  1. Önce Render: PDFium'un HTML ayrıştırıcısı yoktur, bu yüzden herhangi bir sarmalayıcı HTML, URL'ler veya rastgele görüntülerden PDF oluşturamaz.

  2. Kısıtlı Manipülasyon Açık Kaynak Sarmalayıcılarda:PdfiumViewer/PDFiumCore, görüntüleme ve sayfa başına metin çıkarımını sağlar; patagames Pdfium.Net.SDK'de birleştirme / ayırma / form düzenleme kısmidir ve ücretsiz sarmalayıcılarda büyük ölçüde yoktur.

  3. Yerel İkili Bağımlılıklar: Her RID için platforma özgü PDFium ikilileri gerektirir (pdfium.dll / .so / .dylib).

  4. Kurulum Karmaşıklığı: x86, x64 ve çalışma zamanı klasörlerinde her platform için yerel ikililerin paketlenmesi ve yönetilmesi gerekir.

  5. Temel Metin Çıkarma: PdfiumViewer, GetPdfText(int) aracılığıyla sayfa başına ham metin sağlar; düzen / format meta verileri sunulmaz.

  6. HTML'den PDF Yok: PDFium'un HTML ayrıştırıcısı yoktur; web içeriği doğrudan dönüştürülemez.

  7. Dahili Üstbilgi/Altbilgi Yok: Yüksek düzeyde sayfa-üstü API yok.

  8. Dahili Filigran Yok: Damga temel primi yok.

  9. Formlar: Ücretsiz sarmalayıcılar içinde salt okunur veya yok; Patagames Pdfium.Net.SDK'de mevcuttur.

  10. Güvenlik: Şifreleme / izinler ücretsiz sarmalayıcılar tarafından sunulmaz; Patagames Pdfium.Net.SDK'de mevcuttur.

PDFium Sarmalayıcılar vs IronPDF Karşılaştırması

Aspekt PDFium .NET sarmalayıcıları IronPDF
Temel Odak İşleme/görüntüleme Tam PDF çözümü
Render Doğruluğu Yüksek doğrulukta render Yüksek, özellikle HTML/CSS/JS için
HTML'den PDF Oluşturma None Evet (HTML, URL, resimler)
PDF Manipülasyonu Ücretsiz sarmalayıcılar: yok; Patagames: kısmi Evet (birleştir, böl, düzenle)
HTML'den PDF'ye None Evet (Chromium motoru)
Filigranlar Dahili değil Evet
Başlıklar/Altbilgiler Dahili değil Evet
Form Doldurma Ücretsiz sarmalayıcılar: yok; Patagames: evet Evet
Güvenlik Ücretsiz sarmalayıcılar: yok; Patagames: evet Evet
Yerel Bağımlılıklar Gereklidir Paketlenmiş / NuGet tarafından yönetilen
Çapraz Platform Manuel yerel ikili yönetimi Otomatik
Dağıtım Kolaylığı Yerel bağımlılıklar tarafından karmaşıklaştırılır Daha kolay; daha az bağımlılık karmaşıklığı

Modern .NET'i hedefleyen ekipler için IronPDF, kapsamlı PDF oluşturma ve manipülasyon yetenekleri eklerken yerel ikili yönetimini ortadan kaldıran tamamen yönetilen bir temel sağlar.


Başlamadan Önce

Ön Koşullar

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Remove whichever PDFium wrapper you used:
#  PdfiumViewer           (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
# Remove whichever PDFium wrapper you used:
#  PdfiumViewer           (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

PDFium Sarmalayıcı Kullanımını Tanımlayın

# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
SHELL

Tam API Referansı

Ad Alanı Değişiklikleri

// PDFium wrappers (use the one you installed)
using PdfiumViewer;             //PdfiumViewer/PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PDFium wrappers (use the one you installed)
using PdfiumViewer;             //PdfiumViewer/PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer 'PdfiumViewer/PdfiumViewer.Updated
Imports PDFiumCore ' Dtronix PDFiumCore (P/Invoke bindings)
Imports Patagames.Pdf ' Patagames Pdfium.Net.SDK
Imports Patagames.Pdf.Net ' Patagames Pdfium.Net.SDK

Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Çekirdek Sınıf Eşlemeleri

PdfiumViewer IronPDF Notlar
PdfiumViewer.PdfDocument IronPdf.PdfDocument Farklı ad alanlarında aynı basit isim
PdfRenderer (WinForms kontrolü) (uygulanamaz) PdfiumViewer ayrıca UI kontrolleri gönderir;IronPDF başsızdır
(mevcut değil) ChromePdfRenderer HTML / URL → PDF
(mevcut değil) HtmlHeaderFooter Başlıklar/altbilgiler

Belge Yükleme Eşlemeleri

PdfiumViewer IronPDF Notlar
PdfDocument.Load(path) PdfDocument.FromFile(path) Dosyadan yükle
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Akıştan yükle
_(MemoryStream'e byte'ları sar) PdfDocument.FromBinaryData(bytes) Baytlardan yükle

Belge Özellikleri Eşleşmeleri

PdfiumViewer IronPDF Notlar
document.PageCount document.PageCount Aynı
document.PageSizes (IList<SizeF>) document.Pages[index].Width / Height PdfiumViewer boyutları gösterir; pages are not first-class objects
document.PageSizes[i].Width document.Pages[i].Width Sayfa başına genişlik puan olarak

Metin Çıkarma Eşleşmeleri

PdfiumViewer IronPDF Notlar
document.GetPdfText(pageIndex) document.Pages[index].Text Sayfa başına
(manuel döngü) document.ExtractAllText() Tüm sayfalar

Belgeleri Kaydetme Eşleşmeleri

PdfiumViewer IronPDF Notlar
document.Save(stream) document.SaveAs(path) PdfiumViewer bir Stream alır;IronPDF bir yol alır
(mevcut değil) document.Stream Ham akışa erişim
(mevcut değil) document.BinaryData Baytları al

Sayfa Render Eşleşmeleri

PdfiumViewer IronPDF Notlar
document.Render(page, width, height, dpiX, dpiY, flags) pdf.RasterizeToImageFiles(path, DPI) Rasterize et
document.Render(i, ...) üzerinde manuel döngü pdf.RasterizeToImageFiles("page_*.png") Tüm sayfalar arasında toplu render
Manuel ölçek hesaplama DPI = 72 * scale DPI'ye ölçek dönüşümü

PDFium Sarmalayıcılarda Mevcut Olmayan Yeni Özellikler

IronPDF Özelliği Açıklama
ChromePdfRenderer.RenderHtmlAsPdf() HTML'den Oluştur
ChromePdfRenderer.RenderUrlAsPdf() URL'den Oluştur
ChromePdfRenderer.RenderHtmlFileAsPdf() HTML dosyasından oluştur
PdfDocument.Merge() PDF'leri birleştir
pdf.CopyPages() Sayfaları çıkar
pdf.RemovePages() Sayfaları sil
pdf.InsertPdf() Konumda PDF ekle
pdf.ApplyWatermark() Filigran ekleme
pdf.AddHtmlHeaders() Başlık ekle
pdf.AddHtmlFooters() Alt başlık ekle
pdf.SecuritySettings Parola koruması
pdf.SignWithDigitalSignature() Dijital imzalar
pdf.Form Form doldurma

Kod Göç Örnekleri

Örnek 1: PDF'ten Metin Çıkarma

Önce (PdfiumViewer):

// NuGet: Install-PackagePdfiumViewer (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-PackagePdfiumViewer (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main()
        Dim pdfPath As String = "document.pdf"

        Using document = PdfDocument.Load(pdfPath)
            Dim text As New StringBuilder()

            For i As Integer = 0 To document.PageCount - 1
                ' PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                ' No layout / format metadata is exposed.
                Dim pageText As String = document.GetPdfText(i)
                text.AppendLine(pageText)
            Next

            Console.WriteLine(text.ToString())
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfPath As String = "document.pdf"

        Dim pdf = PdfDocument.FromFile(pdfPath)
        Dim text As String = pdf.ExtractAllText()

        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

Buradaki fark önemli. PdfiumViewer, her sayfada GetPdfText(int) ile manuel döngü gerektirir ve uygun bertaraf için using ifadesini yöneten StringBuilder oluşturur ve döndürülen metin, düzen / format meta verileri olmadan sayfa başına ham metindir.

IronPDF bunu birkaç satıra indirir: PdfDocument.FromFile() ile yükleyin, ExtractAllText() ile çıkartın ve çıktıyı alın. ExtractAllText() yöntemi tüm sayfaları otomatik olarak ele alır. Sayfa başına çıkarma ihtiyacınız varsa, pdf.Pages[index].Text kullanabilirsiniz. Diğer seçenekler için metin çıkarma belgelerine bakın.

Örnek 2: PDF Birleştirme

Önce (PdfiumViewer):

// NuGet: Install-PackagePdfiumViewer (representative open-source PDFium wrapper)
//PdfiumViewerand PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported byPdfiumViewer/PDFiumCore.");
    }
}
// NuGet: Install-PackagePdfiumViewer (representative open-source PDFium wrapper)
//PdfiumViewerand PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported byPdfiumViewer/PDFiumCore.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' To merge PDFs from a PDFium wrapper you must reach for another library
        ' (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        ' document-edit APIs.

        Console.WriteLine("PDF merging is not supported by PdfiumViewer/PDFiumCore.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' PdfDocument.Merge accepts an IEnumerable(Of PdfDocument), so load each file first.
        Dim docs = pdfFiles.Select(Function(path) PdfDocument.FromFile(path)).ToList()
        Dim merged = PdfDocument.Merge(docs)
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Bu örnek bir yetenek boşluğu ortaya çıkarıyor. Ücretsiz PDFium sarmalayıcıları (PdfiumViewer, PDFiumCore) birleşme API'lerini açıklamaz; Patagames Pdfium.Net.SDK bazı belge düzenleme işlemlerini sunar ancak ticari.

IronPDF, her girdi dosyasını önce PdfDocument.FromFile() ile yükleyip, ortaya çıkan belgeleri birleştiren PdfDocument.Merge() statik yöntemi ile yerel birleştirme sağlar. Sonuç, SaveAs() ile kaydettiğiniz yeni bir PdfDocument olur. Daha fazla bilgi edinin PDF birleştirme ve bölme.

Örnek 3: HTML'den PDF'e Dönüştürme

Önce (PdfiumViewer):

// NuGet: Install-PackagePdfiumViewer (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
// NuGet: Install-PackagePdfiumViewer (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Drawing.Printing

Module Program
    Sub Main()
        ' PDFium has no native HTML-to-PDF capability.
        ' Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        ' IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim renderer As New ChromePdfRenderer()
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Bu örnek, en önemli yetenek farkını gösterir. PDFium'un HTML ayrıştırıcısı yoktur, bu yüzden çevresinde herhangi bir .NET sarmalayıcı HTML'yi kendi başına PDF'ye dönüştüremez.

IronPDF, HTML, CSS ve JavaScript'in doğru bir şekilde işlenmesi için dahili olarak bir Chromium motoru kullanan ChromePdfRenderer aracılığıyla yerel HTML'den PDF'ye dönüşüm sağlar. RenderHtmlAsPdf() yöntemi, HTML dizgilerini doğrudan PDF belgelerine dönüştürür.IronPDF ayrıca, URL'leri RenderUrlAsPdf() ve HTML dosyalarını RenderHtmlFileAsPdf() ile render alabilir. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.


Yerel Bağımlılıkların Kaldırılması

PDFium sarmalayıcıdan IronPDF'ye geçişin en önemli avantajlarından biri, yerel ikili yönetimini ortadan kaldırmaktır.

Önce (PDFium sarmalayıcı) - Karmaşık Dağıtım

MyApp/
├── bin/
│ ├── MyApp.dll
│   ├── PdfiumViewer.dll      # or PDFiumCore.dll / Patagames.Pdf.dll
│ ├── x86/
│   │   └── pdfium.dll
│ └── x64/
│       └── pdfium.dll
├── runtimes/
│   ├── win-x86/native/
│   │   └── pdfium.dll
│   ├── win-x64/native/
│   │   └── pdfium.dll
│   ├── linux-x64/native/
│   │   └── libpdfium.so
│   └── osx-x64/native/
│       └── libpdfium.dylib

Sonra (IronPDF) - Temiz Dağıtım

MyApp/
├── bin/
│ ├── MyApp.dll
│   └── IronPdf.dll  # Her şey dâhil

Yerel İkili Referansların Kaldırılması

# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
SHELL

Kritik Taşıma Notları

Ölçekten DPI Dönüşümüne

PdfiumViewer'ın Render(...) explicit dpiX/dpiY alır ve PDFium'un altındaki işleme ölçek odaklıdır (1.0 = 72 DPI). IronPDF, DPI'yi doğrudan kullanır:

// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
' Formula: IronPDF DPI = 72 × PDFium scale
' PDFium scale 2.0 → IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI:=144)
$vbLabelText   $csharpLabel

Belge Yükleme Yöntemi Değişikliği

// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)

' IronPDF
PdfDocument.FromFile(path)
$vbLabelText   $csharpLabel

Kaydetme Yöntemi Değişikliği

//PdfiumViewer(takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
//PdfiumViewer(takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
' PdfiumViewer (takes a Stream)
document.Save(stream)

' IronPDF (takes a path)
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Atılma Deseni Basitleştirmesi

// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
Imports PdfiumViewer

' PdfiumViewer: explicit disposal of document and the rendered Image
Using document = PdfDocument.Load(path)
    Using bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None)
        bitmap.Save("output.png")
    End Using
End Using

' IronPDF: Simplified
Dim pdf = PdfDocument.FromFile(path)
pdf.RasterizeToImageFiles("output.png")
$vbLabelText   $csharpLabel

Platforma Özgü Kodların Kaldırılması

// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
$vbLabelText   $csharpLabel

Özellik Karşılaştırması Özeti

Özellik PDFium .NET sarmalayıcıları IronPDF
PDF yükle Evet Evet
Resim olarak İşleme Evet Evet
Metin Çıkarma Evet (temel, sayfa başına) Evet (mantıklı / görsel sıra)
Sayfa Bilgileri Evet Evet
HTML'den Oluştur None Evet
URL'den Oluştur None Evet
PDF'leri birleştir Ücretsiz sarmalayıcılar: yok; Patagames: kısmi Evet
PDF Ayırma Ücretsiz sarmalayıcılar: yok; Patagames: kısmi Evet
Filigran Ekle Dahili değil Evet
Başlıklar/Altbilgiler Dahili değil Evet
Form Doldurma Ücretsiz sarmalayıcılar: yok; Patagames: evet Evet
Dijital İmzalar Ücretsiz sarmalayıcılar: yok; Patagames: evet Evet
Şifre Koruması Ücretsiz sarmalayıcılar: yok; Patagames: evet Evet
Yerel Bağımlılıklar Gereklidir Paketlenmiş / NuGet tarafından yönetilen
Platformlar Arası Karmaşık (RID başına yerel ikililer) Otomatik
Bellek Yönetimi Manuel atılma Basitleştirilmiş

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Hangi PDFium sarmalayıcının kullanıldığını belirleyin (PdfiumViewer / PdfiumViewer.Updated / PDFiumCore / Pdfium.Net.SDK)
  • Mevcut render boyutlarını / DPI / ölçeklerini belgeleyin
  • Projeye yerel ikili dosyaların yerlerini listeleyin (RID başına)
  • Platforma özgü yükleme kodunu kontrol edin
  • PDF oluşturma ihtiyaçlarını belirleyin (şu anda ayrı araçlar kullanıyor musunuz?)
  • Dönüşüm için atma desenlerini gözden geçirin -IronPDF lisans anahtarını edinin

Paket Değişiklikleri

  • PDFium sarıcı NuGet paketi(lerini) kaldırın: PdfiumViewer, PdfiumViewer.Updated, PDFiumCore, veya Pdfium.Net.SDK
  • Yerel pdfium.dll / .so / .dylib ikililerini x86/, x64/, runtimes/ klasörlerinden silin
  • Platforma özgü koşullu derlemeyi kaldırın
  • Yerel ikili referansları kaldırmak için .csproj güncelleyin
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf

Kod Değişiklikleri

Başlangıçta lisans anahtarı yapılandırmasını ekleyin

  • PdfDocument.Load() yerine PdfDocument.FromFile() ile değiştirin
  • document.Save() yerine pdf.SaveAs() ile değiştirin
  • document.GetPdfText(i) döngülerini pdf.ExtractAllText() ile değiştirin
  • Ölçek faktörlerini DPI değerlerine dönüştür (DPI = 72 × ölçek)
  • Atılma desenlerini basitleştirin (iç içe using ifadelerini kaldırın)
  • Platforma özgü kodları kaldırın

Geçiş Sonrası

  • Render çıkış kalitesini test edin
  • Metin çıkarma sonuçlarını karşılaştırın
  • Platformlar arası dağıtımı test edin
  • Yeni yetenekler ekleyin (HTML'den PDF'e, birleştirme, filigranlar, güvenlik)
  • Belgeleri güncelleyin

Lütfen dikkate alınPDFium, Google LLC'nin bir projesi olup BSD-3-Clause altında yayımlanmıştır. PdfiumViewer, PDFiumCore ve Pdfium.Net.SDK kendi sahiplerinin ticari markalarıdır (sırasıyla pvginkel, Dtronix ve Patagames Software Ltd). Bu site, Google, Chromium Project veya herhangi bir sarmalayıcı yazarları ile bir bağlantısı, onayı veya sponsorluğu yoktur. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara