Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von RawPrint zu IronPDF in C#

Migrieren Sie von RawPrintzu IronPDF: Vollständiger C#-Migrationsleitfaden

Die Migration von RawPrintzuIronPDFverwandelt Ihren Dokumenten-Workflow von einer einfachen Übertragung von Drucker-Bytes in eine umfassende PDF-Erstellungs- und Drucklösung. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der es Ihnen ermöglicht, PDFs mit High-Level-APIs zu erstellen, zu bearbeiten und zu drucken, anstatt manuelle Druckerhandles zu verwalten.

Warum von RawPrintzuIronPDFmigrieren

RawPrintverstehen

RawPrint ist eine Sammlung von Implementierungen, die es ermöglichen, Rohdaten direkt an einen Drucker zu senden. Sie ist unerlässlich für Anwendungen, die eine direkte Befehlsübermittlung an Drucker erfordern, um herkömmliche Druckertreiber zu umgehen. Diese Funktionalität ist besonders nützlich in Szenarien, in denen spezielle Drucker, wie z. B. Etikettenersteller mit ZPL (Zebra Programming Language) oder EPL (Eltron Programming Language), eingesetzt werden.

Eine Stärke von RawPrintist die Einfachheit, mit der Datenströme direkt an einen Drucker gesendet werden können. Für Entwickler, die auf Windows-spezifische Umgebungen abzielen und eine direkte Druckerkommunikation benötigen, bietet RawPrinteinen effizienten Weg, der Zwischenschichten wie Treiber oder grafische Schnittstellen umgeht.

RawPrint ist jedoch KEINE PDF-Bibliothek - es überträgt lediglich Daten an Drucker. Aufgrund dieser grundlegenden Einschränkung ist es für die meisten Szenarien der Dokumentenerstellung die falsche Wahl.

Das Kernproblem: Keine PDF-Erstellung

RawPrint hat bemerkenswerte Einschränkungen, die es für moderne Dokumenten-Workflows ungeeignet machen:

  1. Keine PDF-Erstellung: RawPrintkonzentriert sich ausschließlich auf die Datenübertragung und bietet keine Funktionen für die Erstellung, das Rendering oder die Manipulation von PDF-Dateien.

  2. Sehr niedriges Niveau: Da die Entwickler direkt mit rohen Bytes arbeiten, müssen sie ein tiefes Verständnis der Befehlssprache des Druckers haben, was ihn für einfache Dokumentdruckaufgaben weniger geeignet macht.

  3. Plattformspezifisch: Es hängt von Windows-Druckspoolern ab, was seine plattformübergreifende Anwendbarkeit einschränkt.

  4. Keine Dokumentenverarbeitung: Nur Byte-Übertragung ohne Rendering-Funktionen.

  5. Beschränkte Kontrolle: Minimale Konfigurationsmöglichkeiten für Druckaufträge.

Vergleich zwischen RawPrintund IronPDF

Feature RawPrint IronPDF
Funktionalität Sendet Druckrohdaten direkt an den Drucker Umfassende PDF-Erstellung und -Bearbeitung
Anwendungsfall Spezialisierte Drucksachen wie Etiketten Allgemeine Verwaltung und Erstellung von Dokumenten
Plattform-Abhängigkeit Windows-spezifisch Plattformübergreifend
Komplexität Low-Level, erfordert Kenntnisse der Druckerbefehle Benutzerfreundliche API auf hohem Niveau
PDF-Erstellung Nein Ja
PDF aus HTML erstellen Nein Ja
PDF von URL erstellen Nein Ja
PDFs bearbeiten/ändern Nein Ja
PDFs zusammenführen/aufteilen Nein Ja
Vorhandenes PDF ausdrucken Ja (Rohbytes) Ja (API auf hoher Ebene)
Drucksteuerung Basic Vollständige Optionen
Ideal für Direkter Druckerzugriff erforderlich PDF-bezogene Aufgaben in Web- und Desktop-Anwendungen
Flexibilität Begrenzt durch die Verarbeitung von Rohbytes Umfangreich mit mehreren Funktionalitäten

Im Gegensatz zu RawPrintbietetIronPDFeine robuste und vielseitige API für den umfassenden Umgang mit PDFs. Als etablierter Name in der .NET-Umgebung ermöglichtIronPDFEntwicklern die mühelose plattformübergreifende Erstellung, Bearbeitung und Konvertierung von PDFs.

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFplattformübergreifende Kompatibilität, die RawPrintnicht bieten kann.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Access: Fähigkeit, NuGet-Pakete zu installieren
  3. IronPDF Lizenz: Beziehen Sie Ihren Lizenzschlüssel von ironPdf.com

NuGet-Paketänderungen

# Remove RawPrint
dotnet remove package RawPrint

# Install IronPDF
dotnet add package IronPdf
# Remove RawPrint
dotnet remove package RawPrint

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Finden Sie die Verwendung von RawPrint

# Identify all RawPrintusage
grep -r "using RawPrint" --include="*.cs" .
grep -r "Printer\|SendBytesToPrinter" --include="*.cs" .
# Identify all RawPrintusage
grep -r "using RawPrint" --include="*.cs" .
grep -r "Printer\|SendBytesToPrinter" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// Before: RawPrint(Windows interop)
using System.Runtime.InteropServices;
using System.Drawing.Printing;

// After: IronPDF
using IronPdf;
// Before: RawPrint(Windows interop)
using System.Runtime.InteropServices;
using System.Drawing.Printing;

// After: IronPDF
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Kern-API-Zuordnungen

RawPrint IronPDF Notizen
Printer.SendBytesToPrinter() pdf.Print() Drucken auf hohem Niveau
Drucker.ÖffnenDrucker() Nicht anwendbar Nicht erforderlich
Drucker.SchließenDrucker() Nicht anwendbar Automatisch
Drucker.StartDocPrinter() Nicht anwendbar Automatisch
Drucker.WriteDrucker() Nicht anwendbar Automatisch
Drucker.EndDocDrucker() Nicht anwendbar Automatisch
Nicht anwendbar ChromePdfRenderer PDFs erstellen
Nicht anwendbar PdfDocument.Merge() PDFs zusammenführen
Nicht anwendbar pdf.ApplyWatermark() Wasserzeichen hinzufügen

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (RawPrint):

// 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>";
        // RawPrintcannot 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>";
        // RawPrintcannot directly convert HTML to PDF
        // It sends raw data to printer, no PDF generation capability
        RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht den grundlegenden architektonischen Unterschied. RawPrinterfordert mehr als 60 Zeilen Code mit mehreren DLL-Importen aus winspool.Drv, manuellem Drucker-Handle-Management (OpenPrinter, StartDocPrinter, WritePrinter, EndDocPrinter, ClosePrinter) und Memory-Marshaling - und kann trotzdem kein PDF erstellen. Es werden nur Rohdaten an den Drucker gesendet, die nicht gerendert werden können.

IronPDF erledigt die Aufgabe in 5 Zeilen: Erstellen eines ChromePdfRenderer, Aufruf von RenderHtmlAsPdf() und SaveAs(). Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (RawPrint):

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

class RawPrinterHelper
{
    // ... (same DLL imports as above) ...

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

class Program
{
    static void Main()
    {
        // RawPrintcannot 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 RawPrinterHelper
{
    // ... (same DLL imports as above) ...

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

class Program
{
    static void Main()
    {
        // RawPrintcannot 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)");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RawPrint kann keine Webseiten rendern - es sendet nur Rohtext/Daten. Der RawPrint-Ansatz lädt den HTML-Quelltext herunter und sendet ihn direkt an den Drucker, so dass nur der rohe HTML-Code gedruckt wird und keine gerenderten Inhalte. IronPDFs RenderUrlAsPdf() erfasst die vollständig gerenderte Webseite mit CSS, JavaScript und Bildern. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Dokumentformatierung

Vor (RawPrint):

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

class RawPrinterHelper
{
    // ... (same DLL imports) ...

    public static bool SendBytesToPrinter(string szPrinterName, byte[] pBytes)
    {
        IntPtr pUnmanagedBytes = Marshal.AllocCoTaskMem(pBytes.Length);
        Marshal.Copy(pBytes, 0, pUnmanagedBytes, pBytes.Length);
        IntPtr hPrinter;
        if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
        {
            DOCINFOA di = new DOCINFOA();
            di.pDocName = "Raw Document";
            di.pDataType = "RAW";
            if (StartDocPrinter(hPrinter, 1, di))
            {
                if (StartPagePrinter(hPrinter))
                {
                    Int32 dwWritten;
                    WritePrinter(hPrinter, pUnmanagedBytes, pBytes.Length, out dwWritten);
                    EndPagePrinter(hPrinter);
                }
                EndDocPrinter(hPrinter);
            }
            ClosePrinter(hPrinter);
            Marshal.FreeCoTaskMem(pUnmanagedBytes);
            return true;
        }
        return false;
    }
}

class Program
{
    static void Main()
    {
        // RawPrintrequires 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 RawPrinterHelper
{
    // ... (same DLL imports) ...

    public static bool SendBytesToPrinter(string szPrinterName, byte[] pBytes)
    {
        IntPtr pUnmanagedBytes = Marshal.AllocCoTaskMem(pBytes.Length);
        Marshal.Copy(pBytes, 0, pUnmanagedBytes, pBytes.Length);
        IntPtr hPrinter;
        if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
        {
            DOCINFOA di = new DOCINFOA();
            di.pDocName = "Raw Document";
            di.pDataType = "RAW";
            if (StartDocPrinter(hPrinter, 1, di))
            {
                if (StartPagePrinter(hPrinter))
                {
                    Int32 dwWritten;
                    WritePrinter(hPrinter, pUnmanagedBytes, pBytes.Length, out dwWritten);
                    EndPagePrinter(hPrinter);
                }
                EndDocPrinter(hPrinter);
            }
            ClosePrinter(hPrinter);
            Marshal.FreeCoTaskMem(pUnmanagedBytes);
            return true;
        }
        return false;
    }
}

class Program
{
    static void Main()
    {
        // RawPrintrequires 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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RawPrint erfordert manuelle PCL/PostScript-Befehle ("\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T") selbst für grundlegende Formatierungen. Die Entwickler müssen ein tiefes Verständnis der Befehlssprache des Druckers haben.IronPDFverwendet Standard-HTML und CSS für die Formatierung - komplexe Layouts, Schriftarten, Farben und Bilder werden ohne druckerspezifische Kenntnisse vollständig unterstützt.


Zusammenfassung des Funktionsvergleichs

Feature RawPrint IronPDF
PDF-Erstellung
HTML zu PDF Nein Ja
URL zu PDF Nein Ja
Von Grund auf neu erstellen Nein Ja
PDF-Bearbeitung
PDFs zusammenführen Nein Ja
PDFs teilen Nein Ja
Wasserzeichen hinzufügen Nein Ja
Vorhandenes bearbeiten Nein Ja
Drucken
PDF ausdrucken Ja (roh) Ja (hochsprachlich)
Dialog drucken Nein Ja
Mehrere Exemplare Beschränkt Ja
DPI-Steuerung Nein Ja
Duplex Nein Ja
Plattform
Windows Ja Ja
Linux Nein Ja
macOS Nein Ja
Docker Nein Ja
Anderes
Sicherheit Nein Ja
Digitale Signaturen Nein Ja
PDF/A Nein Ja

Neue Funktionen nach der Migration

Nach der Umstellung aufIronPDFerhalten Sie Funktionen, die RawPrintnicht bieten kann:

PDF-Zusammenführung

var pdfs = pdfFiles.Select(f => PdfDocument.FromFile(f)).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("complete.pdf");
var pdfs = pdfFiles.Select(f => PdfDocument.FromFile(f)).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("complete.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Drucken mit Einstellungen

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

pdf.Print(new PrintOptions
{
    PrinterName = "HP LaserJet",
    NumberOfCopies = 2,
    DPI = 300,
    GrayScale = false
});
var pdf = PdfDocument.FromFile("report.pdf");

pdf.Print(new PrintOptions
{
    PrinterName = "HP LaserJet",
    NumberOfCopies = 2,
    DPI = 300,
    GrayScale = false
});
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen und Drucken in einem Arbeitsgang

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <h1>Invoice #12345</h1>
    <p>Customer: John Doe</p>
    <p>Amount: $150.00</p>
");

// Print directly
pdf.Print("HP LaserJet");

// Or save first
pdf.SaveAs("invoice.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
    <h1>Invoice #12345</h1>
    <p>Customer: John Doe</p>
    <p>Amount: $150.00</p>
");

// Print directly
pdf.Print("HP LaserJet");

// Or save first
pdf.SaveAs("invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • [Identifizieren Sie die Verwendung von RawPrint(SendBytesToPrinter, OpenPrinter, usw.)
  • [Dokumentieren Sie Druckernamen, die in Ihrer Anwendung verwendet werden
  • [Beachten Sie jeglichen externen PDF-Erstellungscode, der konsolidiert werden kann
  • [Den IronPDF-Lizenzschlüssel erhalten Sie von ironpdf.com

Code-Aktualisierungen

  • [Entfernen Sie das RawPrint-Paket: dotnet remove package RawPrint
  • [IronPdf-Paket installieren: dotnet add package IronPdf
  • [Ersetzen Sie Rohdruck durch pdf.Print()
  • [Entfernen Sie die manuelle Handle-Verwaltung (OpenPrinter, ClosePrinter, usw.)
  • [Konsolidierung von PDF-Erstellung und Druck in einem einzigen Arbeitsablauf
  • [Lizenzinitialisierung beim Starten der Anwendung hinzufügen

Testing

  • [Testdruck auf Zieldruckern
  • [Prüfen Sie die Druckqualität
  • [Mehrere Kopien testen
  • [Stummes Drucken testen
  • [Plattformübergreifende Überprüfung, falls erforderlich

Abschluss

Die Wahl zwischen RawPrintundIronPDFhängt stark von den spezifischen Aufgaben und Zielen ab, die ein Entwickler erreichen möchte. Während RawPrintspezielle Vorteile auf niedriger Ebene bietet, die für die direkte Druckerkommunikation erforderlich sind (z. B. Etikettendrucker, die ZPL oder EPL verwenden), bietetIronPDFeine vielseitige High-Level-Lösung, die sich für allgemeine Aufgaben der PDF-Verarbeitung und Dokumentenerstellung eignet.

Die wichtigsten Änderungen bei dieser Migration sind:

  1. Architektur: Byte-Übertragung auf niedriger Ebene → PDF-API auf hoher Ebene
  2. Komplexität: 60+ Zeilen mit DLL-Importen → 5 Zeilen Code
  3. Fähigkeiten: Nur Drucken → Erstellen, Bearbeiten, Zusammenführen, Teilen, Drucken
  4. Formatierung: Manuelle PCL/PostScript-Befehle → Standard-HTML/CSS
  5. Plattform: Windows-only → Plattformübergreifend
  6. Handle Management: Manuell (OpenPrinter/ClosePrinter) → Automatisch
  7. URL-Rendering: Roher HTML-Quelltext → Vollständig gerenderte Seiten
  8. Drucksteuerung: Grundlegend → Volle Optionen (Kopien, DPI, Duplex)

Entwickler können so strategisch die Bibliothek auswählen, die ihren technologischen Anforderungen und Projektbeschränkungen entspricht, und sicherstellen, dass ihre Anwendungen sowohl effizient als auch robust für die Dokumentenverarbeitung sind.

Entdecken Sie die vollständige IronPDF-Dokumentation, Tutorials und Druckhandbuch, um Ihre RawPrint-Migration zu beschleunigen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen