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örev | RawPrint .NET | IronPDF |
|---|---|---|
| HTML'den PDF Oluştur | Desteklenmiyor | Evet |
| URL'den PDF Oluştur | Desteklenmiyor | Evet |
| PDF'leri Duzenle/Değiştir | Desteklenmiyor | Evet |
| PDF'leri Birleştir/Böl | Desteklenmiyor | Evet |
| Mevcut PDF'yi Yazdir | Evet (sadece ham baytlar) | Evet (yüksek düzey API) |
| Yazdirma Kontrolü | Temel | Tam seçenekler |
| Çapraz Platform | Yalnızca Windows | Evet |
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 ClassBu 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 ClassIronPDF 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 ModuleBu 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 ClassRenderUrlAsPdf 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 ModuleKaçış 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 ClassIronPDF 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 .NET | IronPDF |
|---|---|
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/A | ChromePdfRenderer |
| N/A | PdfDocument.Merge() |
| N/A | pdf.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
| Özellik | RawPrint .NET | IronPDF |
|---|---|---|
| PDF Oluşturma | ||
| HTML'den PDF'ye | Hayır | Evet |
| URL'den PDF'ye | Hayır | Evet |
| Sifirdan Oluştur | Hayır | Evet |
| PDF Manipulasyonu | ||
| PDF'leri birleştir | Hayır | Evet |
| PDF'leri Böl | Hayır | Evet |
| Filigran Ekleme | Hayır | Evet |
| Mevcut Olanı Duzenle | Hayır | Evet |
| Yazdırma | ||
| PDF'yi yazdır | Evet (prime) | Evet (yüksek duzeyde) |
| Yazdirma Diyaloğu | Hayır | Evet |
| Coklu Kopyalar | Sınırlı | Evet |
| DPI Kontrolü | Hayır | Evet |
| Çift yönlü | Hayır | Evet |
| Platform | ||
| Windows | Evet | Evet |
| Linux | Hayır | Evet |
| macOS | Hayır | Evet |
| Docker | Hayır | Evet |
| Diğer | ||
| Güvenlik | Hayır | Evet |
| Dijital İmzalar | Hayır | Evet |
| PDF/A | Hayır | Evet |
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 IfRawPrint .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")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.
