KARşıLAşTıRMA

RawPrint .NET vs IronPDF: Teknik Karşılaştırma Rehberi

.NET geliştiricileri belge yazdirma ve PDF oluşturma cozumlerini degerlendirirken,RawPrint .NETveIronPDFfarkli yaklasimlar sunar ve ayri yetenekler saglar. RawPrint .NET, yazici sira yoneticilerine dogrudan ham baytlari gondermek icin alt duzey erişim saglarken, IronPDF, PDF belgelerini oluşturma, işleme ve yazdirma icin tam bir yuksek duzey API sunar. Bu teknik karsilastirma, profesyonel geliştiricilerin ve mimarların .NET uygulamaları icin belge işleme kararlari verirken en çok onem verdikleri boyutlarda her iki cozumu ele alir.

RawPrint .NET'i Anlamak

RawPrint .NET, hamm baytlari dogrudan yazici sira yoneticilerine gonderen bir alt duzey yazdirma aracidir. Uygulamalarin geleneksel yazici suruculerini atlayarak komut veri kümesi dogrudan yaziciya iletmesini saglar. Bu fonksiyonellik, ZPL (Zebra Programlama Dili) veya EPL (Eltron Programlama Dili) kullanan etiket yapici gibi ozel yazicilar icin özellikle faydalidir.

Kritik Fark:RawPrint .NETbir PDF kutuphanesi degildir. PDF belgeleri oluşturmaz, uretmez, işleme yapmaz veya işleme yetenegine sahip degildir. Tek fonksiyonu,Windowsyazdirma alt sistemi uzerinden yazıcı donanimina bayt transmidir.

Yaklaşım, geliştiricilerin Windows'a özgü DLL alımlarını winspool.Drv ile çalışmasını, yazıcı tutamacı idarelerini bir dizi fonksiyon çağrısıyla manuel olarak yönetmelerini gerektirir: OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter, EndDocPrinter, ve ClosePrinter.

RawPrint .NET'in mimarisi, yazici komut dillerinin derin bir anlasilmasini gerektirir. Belge formatlandirmasi icin geliştiricilere, bayt akisina gomulu kacak diziler olarak manuel PCL (Yazici Komut Dili) veya PostScript komutlari oluşturmalarini gerektirir.

IronPDF'yi Anlama

IronPDF, .NET uygulamalarinda PDF işlemleri icin tam bir yuksek duzey API saglar. Kutuphane, HTML, CSS ve JavaScript'i tam baglilıkla PDF belgelerine donusten Chromium-tabanli bir işleme motoru icerir. Genel uretimin otesinde, IronPDF, birlesime, bolmeye, duzenlemeye ve guvenlik özelliklerine olanak tanıyan PDF işleme yetenekleri sunar.

IronPDF'in mimarisi, belge işleme ve yazici iletisim karmaşıklığını soyutlar. ChromePdfRenderer sınıfı HTML'den PDF'e dönüşümü yönetirken, PdfDocument sınıfı kaynak yönetimi gerektirmeden manipülasyon ve yazdırma için yöntemler sağlar.

Temel Yetenek Boslugu

RawPrint .NET veIronPDFarasındaki temel fark amacları ve yeteneklerinde yatmaktadır:

GörevRawPrint .NETIronPDF
HTML'den PDF OluşturDesteklenmiyorEvet
URL'den PDF OluşturDesteklenmiyorEvet
PDF'leri Duzenle/DeğiştirDesteklenmiyorEvet
PDF'leri Birleştir/BölDesteklenmiyorEvet
Mevcut PDF'yi YazdirEvet (sadece ham baytlar)Evet (yüksek düzey API)
Yazdirma KontrolüTemelTam seçenekler
Çapraz PlatformYalnızca WindowsEvet

Bu karsilastirma,RawPrint .NETve IronPDF'in tamamen farkli kullanim durumlarina hizmet ettigini ortaya koyuyor.RawPrint .NETalt seviyede yazici iletişimini ele alırken,IronPDFtam PDF belge yasam dongusu yönetimi saglar.

HTML'den PDF'e Dönüşüm

RawPrint .NET veIronPDFarasindaki fark, HTML-to-PDF donusum senaryolari incelendiginde keskin sekilde ortaya cikar.

RawPrint .NET HTML İşleme

RawPrint .NET HTML'i PDF'e dönüştüremez. Sadece ham veriyi yazicilara gonderebilir:

// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;

class RawPrinterHelper
{
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public class DOCINFOA
    {
        [MarshalAs(UnmanagedType.LPStr)] public string pDocName;
        [MarshalAs(UnmanagedType.LPStr)] public string pOutputFile;
        [MarshalAs(UnmanagedType.LPStr)] public string pDataType;
    }

    [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);

    [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool ClosePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);

    [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndDocPrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool StartPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);

    public static bool SendStringToPrinter(string szPrinterName, string szString)
    {
        IntPtr pBytes;
        Int32 dwCount;
        dwCount = szString.Length;
        pBytes = Marshal.StringToCoTaskMemAnsi(szString);
        IntPtr hPrinter;
        if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
        {
            DOCINFOA di = new DOCINFOA();
            di.pDocName = "HTML Document";
            di.pDataType = "RAW";
            if (StartDocPrinter(hPrinter, 1, di))
            {
                if (StartPagePrinter(hPrinter))
                {
                    Int32 dwWritten;
                    WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
                    EndPagePrinter(hPrinter);
                }
                EndDocPrinter(hPrinter);
            }
            ClosePrinter(hPrinter);
            Marshal.FreeCoTaskMem(pBytes);
            return true;
        }
        return false;
    }
}

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        // RawPrint cannot directly convert HTML to PDF
        // It sends raw data to printer, no PDF generation capability
        RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html);
    }
}
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;

class RawPrinterHelper
{
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public class DOCINFOA
    {
        [MarshalAs(UnmanagedType.LPStr)] public string pDocName;
        [MarshalAs(UnmanagedType.LPStr)] public string pOutputFile;
        [MarshalAs(UnmanagedType.LPStr)] public string pDataType;
    }

    [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);

    [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool ClosePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);

    [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndDocPrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool StartPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool EndPagePrinter(IntPtr hPrinter);

    [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
    public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);

    public static bool SendStringToPrinter(string szPrinterName, string szString)
    {
        IntPtr pBytes;
        Int32 dwCount;
        dwCount = szString.Length;
        pBytes = Marshal.StringToCoTaskMemAnsi(szString);
        IntPtr hPrinter;
        if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
        {
            DOCINFOA di = new DOCINFOA();
            di.pDocName = "HTML Document";
            di.pDataType = "RAW";
            if (StartDocPrinter(hPrinter, 1, di))
            {
                if (StartPagePrinter(hPrinter))
                {
                    Int32 dwWritten;
                    WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
                    EndPagePrinter(hPrinter);
                }
                EndDocPrinter(hPrinter);
            }
            ClosePrinter(hPrinter);
            Marshal.FreeCoTaskMem(pBytes);
            return true;
        }
        return false;
    }
}

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        // RawPrint cannot directly convert HTML to PDF
        // It sends raw data to printer, no PDF generation capability
        RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html);
    }
}
Imports System
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Runtime.InteropServices
Imports System.Text

Class RawPrinterHelper
    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)>
    Public Class DOCINFOA
        <MarshalAs(UnmanagedType.LPStr)> Public pDocName As String
        <MarshalAs(UnmanagedType.LPStr)> Public pOutputFile As String
        <MarshalAs(UnmanagedType.LPStr)> Public pDataType As String
    End Class

    <DllImport("winspool.Drv", EntryPoint:="OpenPrinterA", SetLastError:=True, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function OpenPrinter(<MarshalAs(UnmanagedType.LPStr)> szPrinter As String, ByRef hPrinter As IntPtr, pd As IntPtr) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="ClosePrinter", SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function ClosePrinter(hPrinter As IntPtr) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="StartDocPrinterA", SetLastError:=True, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function StartDocPrinter(hPrinter As IntPtr, level As Integer, <[In], MarshalAs(UnmanagedType.LPStruct)> di As DOCINFOA) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="EndDocPrinter", SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function EndDocPrinter(hPrinter As IntPtr) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="StartPagePrinter", SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function StartPagePrinter(hPrinter As IntPtr) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="EndPagePrinter", SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function EndPagePrinter(hPrinter As IntPtr) As Boolean
    End Function

    <DllImport("winspool.Drv", EntryPoint:="WritePrinter", SetLastError:=True, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
    Public Shared Function WritePrinter(hPrinter As IntPtr, pBytes As IntPtr, dwCount As Integer, ByRef dwWritten As Integer) As Boolean
    End Function

    Public Shared Function SendStringToPrinter(szPrinterName As String, szString As String) As Boolean
        Dim pBytes As IntPtr
        Dim dwCount As Integer
        dwCount = szString.Length
        pBytes = Marshal.StringToCoTaskMemAnsi(szString)
        Dim hPrinter As IntPtr
        If OpenPrinter(szPrinterName, hPrinter, IntPtr.Zero) Then
            Dim di As New DOCINFOA()
            di.pDocName = "HTML Document"
            di.pDataType = "RAW"
            If StartDocPrinter(hPrinter, 1, di) Then
                If StartPagePrinter(hPrinter) Then
                    Dim dwWritten As Integer
                    WritePrinter(hPrinter, pBytes, dwCount, dwWritten)
                    EndPagePrinter(hPrinter)
                End If
                EndDocPrinter(hPrinter)
            End If
            ClosePrinter(hPrinter)
            Marshal.FreeCoTaskMem(pBytes)
            Return True
        End If
        Return False
    End Function
End Class

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        ' RawPrint cannot directly convert HTML to PDF
        ' It sends raw data to printer, no PDF generation capability
        RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html)
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu kod, RawPrint .NET'in sınırlamasını göstermektedir: ham HTML dizesini yaziciya gonderir, ancak bunun bir formatlanmis belge olarak islenmez. Cikti, bir web sayfası olarak islenmis değil, harfi harfine HTML markup metnidir.

IronPDF HTML Donusumu

IronPDF, tam işleme ile gerçek HTML-to-PDF donusumu saglar:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF yaklasimi RenderHtmlAsPdf metodunu kullanarak HTML icerigini duzgunce islenmis bir PDF belgesine dönüştürur. Chromium motoru CSS, JavaScript ve HTML'i isleyerek tarayici işleme ile uyumlu bir cikti uretir.

URL'den PDF'e Donusum

Canlı web sayfalarının PDF'e dönüştürülmesi yetenek farkını daha da belirginleştirir.

RawPrint .NET URL İşleme

RawPrint .NET web sayfalarını isleyemez—sadece ham veriyi iletebilir:

// NuGet: Install-Package System.Drawing.Common
using System;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;

class Program
{
    static void Main()
    {
        // RawPrint cannot render web pages - only sends raw text/data
        // This would just print HTML source code, not rendered content
        using (WebClient client = new WebClient())
        {
            string htmlSource = client.DownloadString("https://example.com");
            // This prints raw HTML, not a rendered PDF
            RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", htmlSource);
            Console.WriteLine("Raw HTML sent to printer (not rendered)");
        }
    }
}
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;

class Program
{
    static void Main()
    {
        // RawPrint cannot render web pages - only sends raw text/data
        // This would just print HTML source code, not rendered content
        using (WebClient client = new WebClient())
        {
            string htmlSource = client.DownloadString("https://example.com");
            // This prints raw HTML, not a rendered PDF
            RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", htmlSource);
            Console.WriteLine("Raw HTML sent to printer (not rendered)");
        }
    }
}
Imports System
Imports System.Net
Imports System.Runtime.InteropServices
Imports System.Text

Module Program
    Sub Main()
        ' RawPrint cannot render web pages - only sends raw text/data
        ' This would just print HTML source code, not rendered content
        Using client As New WebClient()
            Dim htmlSource As String = client.DownloadString("https://example.com")
            ' This prints raw HTML, not a rendered PDF
            RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", htmlSource)
            Console.WriteLine("Raw HTML sent to printer (not rendered)")
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Bu yaklaşım HTML kaynak kodunu indirir ve ham metin olarak yazıcıya gönderir. Sonuç, stilli, resimli veya düzeni olan bir web sayfası yerine baskılı HTML markup'tur.

IronPDF URL Dönüştürme

IronPDF canlı web sitelerini doğrudan PDF'e işler:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Render a live website directly to PDF with full CSS, JavaScript, and images
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Website rendered to PDF successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Render a live website directly to PDF with full CSS, JavaScript, and images
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Website rendered to PDF successfully");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        ' Render a live website directly to PDF with full CSS, JavaScript, and images
        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("Website rendered to PDF successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

RenderUrlAsPdf yöntemi URL'ye giderek JavaScript calistirir, CSS stilini uygular, resimleri yukler ve tamamiyla islenmis sayfayi bir PDF belgesi olarak yakalar.

Belge Formatlama Karsilastirmasi

Formatlama yetenekleri iki yaklasimin mimari farkliliklarini ortaya cikariyor.

RawPrint .NET Formatlama

RawPrint .NET, her turlu formatlama icin manuel PCL veya PostScript komutlari gerektirir:

// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;

class Program
{
    static void Main()
    {
        // RawPrint requires manual PCL/PostScript commands for formatting
        string pclCommands = "\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T";
        string text = "Plain text document - limited formatting";
        byte[] data = Encoding.ASCII.GetBytes(pclCommands + text);
        RawPrinterHelper.SendBytesToPrinter("HP LaserJet", data);
    }
}
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;

class Program
{
    static void Main()
    {
        // RawPrint requires manual PCL/PostScript commands for formatting
        string pclCommands = "\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T";
        string text = "Plain text document - limited formatting";
        byte[] data = Encoding.ASCII.GetBytes(pclCommands + text);
        RawPrinterHelper.SendBytesToPrinter("HP LaserJet", data);
    }
}
Imports System
Imports System.Drawing.Printing
Imports System.Runtime.InteropServices
Imports System.Text

Module Program
    Sub Main()
        ' RawPrint requires manual PCL/PostScript commands for formatting
        Dim pclCommands As String = ChrW(&H1B) & "&l0O" & ChrW(&H1B) & "(s0p16.66h8.5v0s0b3T"
        Dim text As String = "Plain text document - limited formatting"
        Dim data As Byte() = Encoding.ASCII.GetBytes(pclCommands & text)
        RawPrinterHelper.SendBytesToPrinter("HP LaserJet", data)
    End Sub
End Module
$vbLabelText   $csharpLabel

Kaçış dizileri (\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T), yazıcı yapılandırması için PCL komutlarını temsil eder. Geliriciler, yazıcıya özgü komut dillerini anlamalı ve format talimatlarını elle düzenlemelidir.

IronPDF Formatlama

IronPDF, zengin formatlama icin standart HTML ve CSS kullanir:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; margin: 40px; }
                    h1 { color: #2c3e50; font-size: 24px; }
                    p { line-height: 1.6; color: #34495e; }
                    .highlight { background-color: yellow; font-weight: bold; }
                </style>
            </head>
            <body>
                <h1>Formatted Document</h1>
                <p>This is a <span class='highlight'>beautifully formatted</span> document with CSS styling.</p>
                <p>Complex layouts, fonts, colors, and images are fully supported.</p>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("formatted.pdf");
        Console.WriteLine("Formatted PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; margin: 40px; }
                    h1 { color: #2c3e50; font-size: 24px; }
                    p { line-height: 1.6; color: #34495e; }
                    .highlight { background-color: yellow; font-weight: bold; }
                </style>
            </head>
            <body>
                <h1>Formatted Document</h1>
                <p>This is a <span class='highlight'>beautifully formatted</span> document with CSS styling.</p>
                <p>Complex layouts, fonts, colors, and images are fully supported.</p>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("formatted.pdf");
        Console.WriteLine("Formatted PDF created successfully");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "
            <html>
            <head>
                <style>
                    body { font-family: Arial; margin: 40px; }
                    h1 { color: #2c3e50; font-size: 24px; }
                    p { line-height: 1.6; color: #34495e; }
                    .highlight { background-color: yellow; font-weight: bold; }
                </style>
            </head>
            <body>
                <h1>Formatted Document</h1>
                <p>This is a <span class='highlight'>beautifully formatted</span> document with CSS styling.</p>
                <p>Complex layouts, fonts, colors, and images are fully supported.</p>
            </body>
            </html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("formatted.pdf")
        Console.WriteLine("Formatted PDF created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF mevcut web geliştirme becerilerini kullanir. Geliştirciler, yaziciya ozel komut dilleri yerine tanidik HTML ve CSS soz dizimini kullanir. Bu yaklasim, standart web teknolojileri araciligiyla kompleks düzenleri, yazı tiplerini, renkleri ve resimleri destekler.

API Eslestirme Referansi

RawPrint .NET geçişinde IronPDF'e geçmeyi değerlendiren ekipler bu işlem haritalarını referans alabilir.

RawPrint .NETIronPDF
Printer.SendBytesToPrinter()pdf.Print()
Printer.OpenPrinter()N/A
Printer.ClosePrinter()N/A
Printer.StartDocPrinter()N/A
Printer.WritePrinter()N/A
Printer.EndDocPrinter()N/A
N/AChromePdfRenderer
N/APdfDocument.Merge()
N/Apdf.ApplyWatermark()

Haritalama gösteriyor ki IronPDF, manul yazıcı kolu yonetimini tamamen ortadan kaldiriyor. RawPrint .NET'teki acik/kapat/başlat/sonlandırma cagrilari gerektiren işlemler, IronPDF'in yüksek düzey API'since otomatik olarak ele alınır.

Özellik Karşılaştırma Matrisi

ÖzellikRawPrint .NETIronPDF
PDF Oluşturma
HTML'den PDF'yeHayırEvet
URL'den PDF'yeHayırEvet
Sifirdan OluşturHayırEvet
PDF Manipulasyonu
PDF'leri birleştirHayırEvet
PDF'leri BölHayırEvet
Filigran EklemeHayırEvet
Mevcut Olanı DuzenleHayırEvet
Yazdırma
PDF'yi yazdırEvet (prime)Evet (yüksek duzeyde)
Yazdirma DiyaloğuHayırEvet
Coklu KopyalarSınırlıEvet
DPI KontrolüHayırEvet
Çift yönlüHayırEvet
Platform
WindowsEvetEvet
LinuxHayırEvet
macOSHayırEvet
DockerHayırEvet
Diğer
GüvenlikHayırEvet
Dijital İmzalarHayırEvet
PDF/AHayırEvet

Yazdırma Karşılaştırması

RawPrint .NET'in sağladığı tek özelliği olan mevcut belgelerin yazdırılması için, API karmaşıklığı önemli ölçüde farklılık gösterir.

RawPrint .NET Yazdırma

using RawPrint;
using System.IO;

byte[] pdfBytes = File.ReadAllBytes("document.pdf");
bool success = Printer.SendBytesToPrinter(
    "Brother HL-L2340D",
    pdfBytes,
    pdfBytes.Length
);

if (!success)
{
    throw new Exception("Print failed");
}
using RawPrint;
using System.IO;

byte[] pdfBytes = File.ReadAllBytes("document.pdf");
bool success = Printer.SendBytesToPrinter(
    "Brother HL-L2340D",
    pdfBytes,
    pdfBytes.Length
);

if (!success)
{
    throw new Exception("Print failed");
}
Imports RawPrint
Imports System.IO

Dim pdfBytes As Byte() = File.ReadAllBytes("document.pdf")
Dim success As Boolean = Printer.SendBytesToPrinter("Brother HL-L2340D", pdfBytes, pdfBytes.Length)

If Not success Then
    Throw New Exception("Print failed")
End If
$vbLabelText   $csharpLabel

RawPrint .NET, dosyayı byte olarak okumayı ve başarı/başarısızlık durumlarını manuel olarak yönetmeyi gerektirir.

IronPDF Yazdırma

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Simple print
pdf.Print();

// Or specify printer
pdf.Print("Brother HL-L2340D");
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Simple print
pdf.Print();

// Or specify printer
pdf.Print("Brother HL-L2340D");
Imports IronPdf

Dim pdf = PdfDocument.FromFile("document.pdf")

' Simple print
pdf.Print()

' Or specify printer
pdf.Print("Brother HL-L2340D")
$vbLabelText   $csharpLabel

IronPDF, yazıcı iletişimini otomatik olarak yönetmenin basit bir Yazdırma yöntemi sağlar. Gelişmiş senaryolar için IronPDF, kopyalar, DPI ve gri tonlamalı ayarlar da dahil olmak üzere yazdırma seçeneklerini destekler.

RawPrint .NETGeçişini Düşünen Ekipler İçin

Geliştirme ekipleriniRawPrint .NETalternatiflerini değerlendirmeye iten birkaç faktör vardır:

PDF oluşturma gereksinimleri, uygulamalar PDF belgeler oluşturmak zorunda olduğunda engel teşkil eder.RawPrint .NETPDF oluşturamaz—sadece byte'ları yazıcılara iletebilir. HTML'den PDF'e dönüştürme veya belge oluşturma gerektiren ekipler,RawPrint .NETile birlikte ek kütüphaneler kullanmak zorundadır.

Çapraz platform dağıtım gereksinimleri RawPrint .NET'in yeteneklerini aşmaktadır. Kütüphane, tamamenWindowsyazdırma alt sistemi ile winspool.Drv DLL alımlarına dayanır. Linux,macOSveDockerdağıtımları için farklı çözümler gereklidir.

API karmaşıklığı bakım yükü oluşturur. Açık/kapalı/başla/bitir sıralamalarıyla manuel yazıcı tutacağı yönetimi, hata potansiyelini ve kod karmaşıklığını yüksek seviye API'lere kıyasla artırır.

Sınırlı yazdırma kontrolü üretim gereksinimlerini etkiler. RawPrint .NET, kopya, DPI, çift taraflı baskı veya yazdırma diyaloğu seçenekleri olmadan temel byte iletim sağlar.

Güçlü Yönler ve Tavizler

RawPrint .NET Güçlü Yönleri

  • Özelleşmiş donanımlarda (etiket yazıcılar, ZPL/EPL cihazlar) doğrudan yazıcı erişimi
  • Ham byte iletimi için minimum ek yük
  • Temel yazdırma senaryoları için basit mimari -WindowsDLL'leri haricinde dış bağımlılık yok

RawPrint .NET Sınırlamaları

  • PDF oluşturma veya yaratma yeteneği yok
  • SadeceWindowsplatformu desteği
  • Manuel yazıcı tutacağı yönetimi gereklidir
  • HTML veya URL işleme yok
  • Sınırlı biçimlendirme (PCL/PostScript bilgisi gerektirir)
  • PDF düzenleme özellikleri yok

IronPDF'nin Gucleri

  • HTML, URL'ler ve koddon PDF oluşturma
  • Çapraz platform desteği (Windows, Linux, macOS, Docker)
  • Yüksek dereceli API, manuel kaynak yönetimini ortadan kaldırır
  • Chromium işleme ile tam CSS ve JavaScript desteği
  • PDF manipülasyonu (birleştirme, bölme, düzenleme, filigran)
  • Dijital imzalar ve güvenlik özellikleri
  • Profesyonel destek ve dokümantasyon

IronPDF dusunulecekler

  • Ticari lisanslama modeli
  • Chromium işleme motoru ayak izi
  • Ham yazıcı erişimi yerine PDF iş akışları için tasarlanmıştır

Sonuç

RawPrint .NET ve IronPDF, .NET belge işleme konusunda temel olarak farklı amaçlara hizmet eder. RawPrint .NET, etiket yazıcılar veya doğrudan komut iletimi gerektiren cihazlar gibi özelleşmiş yazdırma senaryoları için yazıcı spollerlarına ham baytların gönderilmesi için düşük seviye erişim sağlar. Ancak, PDF belgelerini oluştuma, işleme veya değiştirme yeteneğine sahip değildir.

PDF oluşturma, HTML'den PDF'e dönüştürme, belge manipülasyonu veya çapraz platform yazdırma gerektiren uygulamalar için IronPDF, RawPrint .NET'in sağlayamadığı kapsamlı yetenekler sunar. Yüksek seviye API, birleştirme, bölme, güvenlik ve dijital imzalar için özellikler eklerken manuel yazıcı tutacağı yönetimini ortadan kaldırır.

RawPrint .NET'ten IronPDF'e geçişi değerlendirirken, ekipler kendi özel gereksinimlerini göz önünde bulundurmalıdır. Birincil ihtiyaç PDF belge oluşturma ve manipülasyonu olup, yazdırma ikincil bir özellikse,IronPDFtüm iş akışını ele alır. .NET 10 ve C# 14 ile çapraz platform dağıtım gereksinimlerini hedefleyen ekipler için, IronPDF'nin mimarisi, Windows'a özgüRawPrint .NETyaklaşımından daha uygun bir temel sağlar.


Uygulama rehberliği için, .NET uygulamaları için PDF oluşturma ve yazdırma desenlerini ele alan IronPDF dokümantasyonu ve yazdırma öğreticilerini inceleyin.