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örev | RawPrint .NET | IronPDF |
|---|---|---|
| HTML'den PDF Oluştur | Desteklenmiyor | Evet |
| URL'den PDF Oluştur | Desteklenmiyor | Evet |
| PDF'leri Düzenleme/Değiştirme | Desteklenmiyor | Evet |
| PDF'leri Birleştir/Böl | Desteklenmiyor | Evet |
| Mevcut PDF Basma | Evet (sadece ham veri) | Evet (yüksek seviyeli API) |
| Baskı Kontrolü | Temel | Tüm seçenekler |
| Platformlar Arası | SadeceWindows | Evet |
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 ClassBu 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 ClassIronPDF 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 ModuleBu 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 ClassRenderUrlAsPdf 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 ModuleKaçış 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 ClassIronPDF, 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 .NET | IronPDF |
|---|---|
Printer.SendBytesToPrinter() | pdf.Print() |
Printer.OpenPrinter() | Yok |
Printer.ClosePrinter() | Yok |
Printer.StartDocPrinter() | Yok |
Printer.WritePrinter() | Yok |
Printer.EndDocPrinter() | Yok |
| Yok | ChromePdfRenderer |
| Yok | PdfDocument.Merge() |
| Yok | pdf.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
| Özellik | RawPrint .NET | IronPDF |
|---|---|---|
| PDF Oluşturma | ||
| HTML'den PDF'ye | Hayır | Evet |
| URL'yi PDF'ye çevir | Hayır | Evet |
| Sıfırdan Oluştur | Hayır | Evet |
| PDF Manipülasyonu | ||
| PDF'leri birleştir | Hayır | Evet |
| PDF Ayırma | Hayır | Evet |
| Filigran Ekle | Hayır | Evet |
| Mevcut Düzenle | Hayır | Evet |
| Baskı | ||
| PDF Yazdır | Evet (ham) | Evet (yüksek seviyeli) |
| Baskı Diyaloğu | Hayır | Evet |
| Çoklu Kopya | Sınırlı | Evet |
| DPI Kontrolü | Hayır | Evet |
| Çift taraflı yazdırma | 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 | Yes |
| PDF/A | Hayır | Evet |
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 IfRawPrint .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")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.
