KARşıLAşTıRMA

RawPrint .NET ve IronPDF Karşılaştırması: Teknik Kılavuz

.NET geliştiricileri belge baskısı ve PDF üretim çözümlerini değerlendirirken,RawPrint .NETveIronPDFtemelde farklı yaklaşımlar sunar ve belirgin yetenekler sunar. RawPrint .NET, yazıcı havuzlarına doğrudan ham veri göndermek için düşük seviyeli erişim sağlarken, IronPDF, PDF belgelerinin oluşturulması, manipülasyonu ve basılmasına ilişkin eksiksiz yüksek seviyeli bir API sunar. Bu teknik karşılaştırma, .NET uygulamaları için belge işleme kararları alan profesyonel geliştiriciler ve mimarlar için en önemli olan boyutlarda her iki çözümü de inceler.

RawPrint .NETAnlamanı

RawPrint .NET, yazıcı havuzlarına doğrudan ham veriler gönderen düşük seviyeli bir baskı aracıdır. Uygulamaların geleneksel yazıcı sürücülerini atlayarak komut verilerini doğrudan yazıcılara aktarmalarını sağlar. Bu işlevsellik, ZPL (Zebra Programlama Dili) veya EPL (Eltron Programlama Dili) kullanan etiket oluşturucular gibi özel yazıcılar için özellikle yararlıdır.

Önemli Fark:RawPrint .NETbir PDF kütüphanesi değildir. PDF belgeleri oluşturmaz, üretmez, render etmez veya manipüle etmez. Tek işlevi,Windowsbaskı alt sistemi aracılığıyla yazıcı donanımına veri aktarımıdır.

Bu yaklaşım, geliştiricilerin winspool.Drv'dan Windows'a özgü DLL içe aktarımları ile çalışmasını gerektirir, yazıcı tanıtıcılarını bir dizi fonksiyon çağrısı ile manuel olarak yönetir: OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter, EndDocPrinter ve ClosePrinter.

RawPrint .NET'in mimarisi, yazıcı komut dillerinin derin bir şekilde anlaşılmasını gerektirir. Belge biçimlendirmesi için, geliştiriciler PCL (Yazıcı Komut Dili) ya da PostScript komutlarını bayt akışında yerleştirilmiş kaçış dizileri olarak manuel oluşturmalıdır.

IronPDF'yi Anlamak

IronPDF .NET uygulamalarında PDF işlemleri için eksiksiz bir yüksek seviyeli API sağlar. Kütüphane, HTML, CSS ve JavaScript'i aslına uygun olarak PDF belgelerine dönüştüren Chromium tabanlı bir görüntüleme motoru içerir. Oluşturmanın ötesinde, IronPDF, birleştirme, ayırma, düzenleme ve güvenlik özellikleri dahil olmak üzere PDF manipülasyon kabiliyetleri sunar.

IronPDF'nin mimarisi, belge render etme ve yazıcı iletişimini karmaşıklıktan soyutlar. ChromePdfRenderer sınıfı, HTML'den PDF'e dönüştürmeyi yönetirken, PdfDocument sınıfı, manuel kaynak yönetimi gerektirmeden manipülasyon ve yazdırma için yöntemler sağlar.

Temel Yetenek Boşluğu

RawPrint .NET veIronPDFarasındaki temel fark, amaçları ve yeteneklerinde yatar:

GörevRawPrint .NETIronPDF
HTML'den PDF OluşturDesteklenmiyorEvet
URL'den PDF OluşturDesteklenmiyorEvet
PDF'leri Düzenleme/DeğiştirmeDesteklenmiyorEvet
PDF'leri Birleştir/BölDesteklenmiyorEvet
Mevcut PDF BasmaEvet (sadece ham veri)Evet (yüksek seviyeli API)
Baskı KontrolüTemelTüm seçenekler
Platformlar ArasıSadeceWindowsEvet

Bu karşılaştırma,RawPrint .NETve IronPDF'nin tamamen farklı kullanım durumlarına hizmet ettiğini ortaya koymaktadır. RawPrint .NET, düşük seviyeli yazıcı iletişimini ele alır,IronPDFise tüm PDF belge yaşam döngüsü yönetimini sağlar.

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

RawPrint .NET veIronPDFarasındaki zıtlık, HTML-PDF dönüştürme senaryoları incelendiğinde daha belirgin hale gelir.

RawPrint .NETHTML İşleme

RawPrint .NET HTML'yi PDF'ye dönüştüremez. Sadece ham veriyi yazıcılara gönderebilir:

// 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österir: formatlanmış bir belge olarak oluşturmaktansa ham HTML dizesini yazıcıya gönderir. Çıktı, render edilmiş bir web sayfası değil, yalnızca ham HTML kodu olacaktır.

IronPDFHTML Dönüştürme

IronPDF, tam render ile gerçek HTML-PDF dönüştürme sağlar:

// 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 yaklaşımı, HTML içeriğini doğru şekilde biçimlendirilmiş bir PDF belgesine dönüştürmek için RenderHtmlAsPdf yöntemini kullanır. Chromium motoru, CSS, JavaScript ve HTML'yi işleyerek tarayıcı renderingine uygun bir çıktı üretir.

URL'den PDF'ye Dönüştürme

Canlı web sayfalarının PDF'ye dönüştürülmesi yetenek farkını daha da gösterir.

RawPrint .NETURL İşleme

RawPrint .NET, web sayfalarını render edemez; yalnızca 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ç, stiller, görüntüler veya düzen olmaksızın yazdırılmış HTML kodu olur.

IronPDFURL Dönüşümü

IronPDF, canlı web sitelerini doğrudan PDF'ye dönüştürür:

// 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 gider, JavaScript'i çalıştırır, CSS stillerini uygular, görüntüleri yükler ve tam render edilmiş sayfayı PDF belgesi olarak yakalar.

Belge Biçimlendirme Karşılaştırması

Biçimlendirme becerileri, iki yaklaşım arasındaki mimari farklılıkları ortaya koyar.

RawPrint .NETBiçimlendirme

RawPrint .NET, herhangi bir biçimlendirme için manuel PCL veya PostScript komutları 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. Geliştiriciler, yazıcıya özgü komut dillerini anlamalı ve manuel olarak biçimlendirme talimatları oluşturmalıdır.

IronPDFBiçimlendirme

IronPDF, zengin biçimlendirme için standart HTML ve CSS kullanır:

// 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 becerilerinden yararlanır. Geliştiriciler, yazıcıya özgü komut dilleri yerine tanıdık HTML ve CSS sözdizimini kullanırlar. Bu yaklaşım, karmaşık tasarımlar, yazı tipleri, renkler ve görüntüler için standart web teknolojileri aracılığıyla destekler.

API Eşleme Başvurusu

RawPrint .NET geçişini değerlendiren ekipler, bu işlem haritasını referans alabilir:

RawPrint .NETIronPDF
Printer.SendBytesToPrinter()pdf.Print()
Printer.OpenPrinter()Yok
Printer.ClosePrinter()Yok
Printer.StartDocPrinter()Yok
Printer.WritePrinter()Yok
Printer.EndDocPrinter()Yok
YokChromePdfRenderer
YokPdfDocument.Merge()
Yokpdf.ApplyWatermark()

Harita, IronPDF'nin manuel yazıcı tutamağı yönetimini tamamen ortadan kaldırdığını gösteriyor. RawPrint .NET'te açık/kapalı/başlat/bitir çağrısı gerektiren işlemler, IronPDF'nin yüksek seviyeli API'si tarafından otomatik olarak ele alınır.

Özellik Karşılaştırma Matrisi

ÖzellikRawPrint .NETIronPDF
PDF Oluşturma
HTML'den PDF'yeHayırEvet
URL'yi PDF'ye çevirHayırEvet
Sıfırdan OluşturHayırEvet
PDF Manipülasyonu
PDF'leri birleştirHayırEvet
PDF AyırmaHayırEvet
Filigran EkleHayırEvet
Mevcut DüzenleHayırEvet
Baskı
PDF YazdırEvet (ham)Evet (yüksek seviyeli)
Baskı DiyaloğuHayırEvet
Çoklu KopyaSınırlıEvet
DPI KontrolüHayırEvet
Çift taraflı yazdırmaHayırEvet
Platform
WindowsEvetEvet
LinuxHayırEvet
macOSHayırEvet
DockerHayırEvet
Diğer
GüvenlikHayırEvet
Dijital İmzalarHayırYes
PDF/AHayırEvet

Baskı Karşılaştırması

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

RawPrint .NETYazdı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ı bayt olarak okumayı ve başarı/başarısızlık durumlarını manuel olarak yönetmeyi gerektirir.

IronPDFYazdı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öneten basit bir Yazdırma yöntemi sağlar. Gelişmiş senaryolar için IronPDF, kopyalar, DPI ve gri tonlama ayarları dahil olmak üzere baskı seçeneklerini destekler.

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

Geliştirme ekiplerini RawPrint .NET'e alternatifleri değerlendirmeye yönlendiren birkaç faktör vardır:

PDF oluşturma gereksinimleri uygulamaların PDF belgeleri oluşturması gerektiğinde engel oluşturur.RawPrint .NETPDF oluşturmaları yapamaz; sadece baytları yazıcılara iletebilir. HTML-PDF dönüştürme veya belge oluşturma gerektiren ekipler,RawPrint .NETile birlikte ek kütüphaneler kullanmalıdır.

Çapraz platform dağıtım gereksinimleri, RawPrint .NET'in yeteneklerini aşar. Kütüphane, winspool.Drv DLL içe aktarımları aracılığıyla tamamenWindowsyazdırma alt sistemine dayanır. Linux,macOSveDockerdağıtımları için farklı çözümler gereklidir.

API karmaşıklığı, bakım yükü oluşturur. Manuel yazıcı tutamağı yönetimi, açık/kapalı/başlat/bitir dizileri ile yüksek seviyeli API'lere kıyasla artan kod karmaşıklığı ve hata potansiyeli oluşturur.

Sınırlı baskı kontrolü üretim gereksinimlerini etkiler. RawPrint .NET, kopyalar, DPI, çift yönlü baskı veya baskı diyalogları için seçenekler olmaksızın temel bayt iletimini sağlar.

Güçlü Yönler ve Uzlaşmalar

RawPrint .NETGüçlü Yönleri

  • Etiket yazıcıları, ZPL/EPL cihazları gibi özel donanım için doğrudan yazıcı erişimi
  • Ham bayt iletimi için minimum yük
  • Basit baskı senaryoları için basit mimari -WindowsDLL'leri dışında harici bağımlılık yok

RawPrint .NETSınırlamaları

  • PDF oluşturma veya üretim yeteneği yok
  • YalnızcaWindowsplatform desteği
  • Manuel yazıcı tutamağı yönetimi gerekli
  • HTML veya URL rendering yok
  • Sınırlı biçimlendirme (PCL/PostScript bilgisi gerektirir)
  • PDF manipülasyon özellikleri yok

IronPDFGüçlü Yönleri

PDF oluşturma - HTML, URL ve koddan

  • Çapraz platform desteği (Windows, Linux, macOS, Docker)
  • Yüksek seviyeli API, manuel kaynak yönetimi
  • Chromium verelendirme ile tüm CSS ve JavaScript desteği
  • PDF manipülasyonu (birleştirme, ayırma, düzenleme, filigran)
  • Dijital imzalar ve güvenlik özellikleri
  • Profesyonel destek ve dokümantasyon

IronPDFDikkate Alınacaklar

  • Ticari lisanslama modeli
  • Chromium render 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şlemede temelde farklı amaçlara hizmet eder. RawPrint .NET, etiket yazıcıları veya doğrudan komut iletimi gerektiren cihazlarla uzmanlaşmış baskı senaryoları için yararlı olan yazıcı havuzlarına ham bayt gönderimi için düşük seviye erişim sağlar. Ancak, PDF belgeleri oluşturamaz, render edemez veya manipüle edemez.

PDF oluşturma, HTML-PDF dönüştürme, belge manipulasyonu veya çapraz platform baskı gerektiren uygulamalar için IronPDF, RawPrint .NET'in sunmadığı kapsamlı yetenekler sağlar. Yüksek seviyeli API, manuel yazıcı tutamağı yönetimi gereksinimini ortadan kaldırır ve birleştirme, ayırma, güvenlik ve dijital imzalar için özellikler ekler.

RawPrint .NET'den IronPDF'e geçişi değerlendirirken, ekipler özel gereksinimlerini dikkate almalıdır. Öncelikli ihtiyaç PDF belge oluşturma ve manipülasyonu ve baskı ikincil özellikse,IronPDFtüm iş akışını kapsar. 2026'da .NET 10 ve C# 14'ü hedefleyen ve çapraz platform dağıtım gereksinimlerine sahip olan ekipler için, IronPDF'nin mimarisi Windows'a özelleşmişRawPrint .NETyaklaşımından daha uygun bir temel sağlar.


Uygulama rehberliği için IronPDF belgeleri ve .NET uygulamaları için PDF oluşturma ve baskı desenlerini kapsayan baskı öğreticilerini keşfedin.

Lütfen dikkate alınRawPrint, ilgili sahibinin tescilli markasıdır. Bu site, RawPrint ile ilişkili, onaylı veya sponsorlu değildir. 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.