IRONSOFTWAREHOME
VIDEOS

Wie man Bilder in ein PDF in C# konvertiert

Curtis Chau
Curtis Chau
Updated: 18. Mai 2026

Warum von CraftMyPDFzu IronPDF migrieren?

Cloud-basierte PDF-APIs wie CraftMyPDFbringen grundlegende Probleme mit sich, die sie für viele Produktionsumgebungen ungeeignet machen.

Das Problem mit Cloud-basierten PDF-APIs

  1. Ihre Daten verlassen Ihr System: Jede HTML-Vorlage und jede JSON-Daten-Payload wird an die Server von CraftMyPDFübertragen. Bei Rechnungen, Verträgen, Krankenakten oder anderen sensiblen Geschäftsdaten entstehen dadurch Risiken für die Einhaltung von HIPAA, GDPR und SOC2.

  2. Netzwerk-Latenz: Jede PDF-Generierung beinhaltet eine Netzwerk-Runde plus Warte- und Renderzeit (normalerweise Sekunden).IronPDF generiert lokal in Millisekunden.

  3. Kosten pro PDF summieren sich: Kreditbasierte Preisgestaltung sammelt sich mit dem Volumen – Hochdurchsatz-Arbeitslasten verursachen signifikante wiederkehrende Kosten gegenüber einer einmaligen unbefristeten Lizenz.

  4. Druckoptimierte Ausgabe: Cloud-APIs optimieren häufig für den Druck – sie reduzieren Hintergründe und vereinfachen Farben, um "Tinte" zu sparen. Das Ergebnis sieht auf dem Bildschirm nie so aus wie Ihr HTML-Code.

  5. Vorlagenbindung: CraftMyPDFbenötigt den hauseigenen Drag-and-Drop-Editor. Sie können kein Standard-HTML/CSS frei verwenden.

Architektur-Vergleich

AspektCraftMyPDFIronPDF
DatenstandortCloud (Ihre Daten verlassen Ihr System)Vor-Ort (Daten verlassen nie das Unternehmen)
LatenzzeitNetzwerk-Runde + Rendern (normalerweise Sekunden)Millisekunden
PreisgestaltungKreditbasiertes AbonnementEinmalige unbefristete Lizenz
VorlagensystemNur proprietäres Drag-and-DropJedes HTML/CSS/JavaScript
AusgangsqualitätDruckoptimiertPixelgenaues Bildschirm-Rendering
Arbeitet offlineNein (Internet erforderlich)Ja
KonformitätDatenblätter OrganisationSOC2/HIPAA-freundlich

Funktionsvergleich

FeatureCraftMyPDFIronPDF
HTML zu PDFÜber API-Vorlagen✅Nativ
URL zu PDFÜber API✅Nativ
Benutzerdefinierte VorlagenNur Proprietärer Editor✅Beliebiges HTML
CSS3-UnterstützungBeschränkt✅Vollständig
JavaScript-RenderingBeschränkt✅Vollständig
PDFs zusammenführen/teilenÜber API✅Nativ
WasserzeichenÜber API✅Nativ
Arbeitet offline
Selbst gehostet

Vorbereitung auf die Migration

Voraussetzungen

Stellen Sie sicher, dass Ihre Umgebung diese Anforderungen erfüllt:

  • .NET Framework 4.6.2+ oder .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ oder VS Code mit C#-Erweiterung
  • NuGet Package Manager Zugang
  • IronPDF-Lizenzschlüssel (kostenlose Testversion erhältlich unter ironpdf.com)

CraftMyPDF-Nutzung prüfen

Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle CraftMyPDF-Referenzen zu identifizieren:

# Find all CraftMyPDFusages in your codebase
grep -r "CraftMyPdf\|craftmypdf\|api.craftmypdf.com" --include="*.cs" .
grep -r "X-API-KEY" --include="*.cs" .

# Find API key references
grep -r "your-api-key\|template-id\|template_id" --include="*.cs" .

# Find NuGet package references
grep -r "CraftMyPdf\|RestSharp" --include="*.csproj" .
SHELL

Bahnbrechende Änderungen, die zu erwarten sind

Ändern SieCraftMyPDFIronPDFAuswirkungen
ArchitekturCloud REST APILokale .NET-BibliothekHTTP-Aufrufe entfernen
VorlagenProprietärer EditorStandard-HTMLVorlagen in HTML konvertieren
API-SchlüsselFür jeden Aufruf erforderlichLizenz beim StartHandhabung von API-Schlüsseln entfernen
Async-MusterErforderlich (HTTP)OptionalFalls gewünscht, entfernen Sie await
FehlerbehandlungHTTP-StatuscodesAusnahmenTry/Catch-Muster ändern
DatenbindungJSON-VorlagenString-InterpolationVereinfachen Sie die Datenbindung

Schritt-für-Schritt-Migrationsprozess

Schritt 1: NuGet-Pakete aktualisieren

Entfernen Sie die HTTP-Client-Bibliothek und installieren Sie IronPDF:

# Remove RestSharp HTTP client
dotnet remove package RestSharp

# Install IronPDF
dotnet add package IronPdf
SHELL

Schritt 2: Namensraumreferenzen aktualisieren

Ersetzen Sie HTTP-Client-Namespaces durch IronPDF:

// Remove these
using RestSharp;
using System.IO;

// Add this
using IronPdf;

Schritt 3: Lizenz konfigurieren (einmalig beim Starten)

Ersetzen Sie die API-Schlüssel-Header für jede Anfrage durch eine einzige Lizenzkonfiguration:

// Add at application startup (Program.cs or Global.asax)
// This replaces all X-API-KEY headers
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Komplette API-Migrationsreferenz

API-Endpunkt-Zuordnung

CraftMyPDFIronPDF
POST /v1/createrenderer.RenderHtmlAsPdf(html)
X-API-KEY HeaderLicense.LicenseKey = "..."
template_idStandard-HTML-Zeichenfolge
{%name%} Platzhalter$"{name}" C#-Interpolation
POST /v1/mergePdfDocument.Merge(pdfs)
POST /v1/add-watermarkpdf.ApplyWatermark(html)
Webhook-RückrufeNicht erforderlich
TarifbegrenzungNicht zutreffend

Konfigurations-Mapping

CraftMyPDF-OptionIronPDF-Äquivalent
template_idHTML-Zeichenkette
data JSONC# Interpolation
page_size: "A4"PaperSize = PdfPaperSize.A4
orientation: "landscape"PaperOrientation = Landscape
margin_top: 20MarginTop = 20
headerHtmlHeader
footerHtmlFooter

Beispiele für die Code-Migration

HTML-zu-PDF-Konvertierung

Der häufigste Vorgang demonstriert den grundlegenden Architekturwechsel von der Cloud-API zum lokalen Rendering.

CraftMyPDF-Einführung:

// NuGet: Install-Package RestSharp
using System;
using RestSharp;
using System.IO;

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Hello World</h1><p>This is a PDF from HTML</p>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("output.pdf", response.RawBytes);
    }
}

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}

IronPDF eliminiert die RestClient-Einrichtung, API-Schlüssel-Header, Vorlagen-IDs und die HTTP-Antwortbearbeitung und reduziert einen 15-zeiligen Cloud-Vorgang auf 4 Zeilen lokalen Code. Weitere Optionen finden Sie in der HTML zu PDF Dokumentation.

URL zu PDF-Konvertierung

CraftMyPDF-Einführung:

// NuGet: Install-Package RestSharp
using System;
using RestSharp;
using System.IO;

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                url = "https://example.com"
            },
            export_type = "file" // "file" returns binary PDF; "json" returns a CDN URL
        });

        var response = client.Execute(request);
        File.WriteAllBytes("webpage.pdf", response.RawBytes);
    }
}

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

Die IronPDF-Methode RenderUrlAsPdf erfasst die komplette Webseite einschließlich JavaScript-gerenderter Inhalte. Weitere Optionen finden Sie in der URL zur PDF-Dokumentation.

Kopf- und Fußzeilen

CraftMyPDF-Einführung:

// NuGet: Install-Package RestSharp
using System;
using RestSharp;
using System.IO;

class Program
{
    static void Main()
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.POST);
        request.AddHeader("X-API-KEY", "your-api-key");
        request.AddJsonBody(new
        {
            template_id = "your-template-id",
            data = new
            {
                html = "<h1>Document Content</h1>",
                header = "<div>Page Header</div>",
                footer = "<div>Page {page} of {total_pages}</div>"
            }
        });
        
        var response = client.Execute(request);
        File.WriteAllBytes("document.pdf", response.RawBytes);
    }
}

IronPDF-Implementierung:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}"
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
        pdf.SaveAs("document.pdf");
    }
}

IronPDF unterstützt Platzhaltertokens wie {page} und {total-pages} für dynamische Seitennummerierung. Weitere Optionen finden Sie in der Kopf- und Fußzeilen-Dokumentation.

Vorlagenvariablen-Konvertierung

CraftMyPDF verwendet proprietäre Vorlagenplatzhalter, die in C#-String-Interpolation umgewandelt werden müssen:

CraftMyPDF-Muster:

// CraftMyPDFtemplate variables
request.AddJsonBody(new
{
    template_id = "invoice-template",
    data = new
    {
        customer = "John Doe",
        amount = "$1,000",
        items = invoiceItems
    }
});

IronPDF-Muster:

// C# string interpolation
var html = $@"
<html>
<body>
    <h1>Invoice</h1>
    <p>Customer: {customerName}</p>
    <p>Amount: {amount}</p>
    {GenerateItemsTable(invoiceItems)}
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);

Kritische Hinweise zur Migration

Allen HTTP-Code entfernen

Die wichtigste Änderung ist die Beseitigung von Netzwerkabhängigkeiten.IronPDF wird lokal ausgeführt - kein RestClient, keine API-Aufrufe, keine Antwortverarbeitung:

// CraftMyPDF- HTTP required
var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.POST);
request.AddHeader("X-API-KEY", "your-api-key");
var response = await client.ExecuteAsync(request);

//IronPDF- no HTTP
var pdf = renderer.RenderHtmlAsPdf(html);

Entferne Code zur Ratenbegrenzung

CraftMyPDF setzt API-Ratenlimits fest, die eine Wiederholungslogik erfordern.IronPDF hat keine Grenzen:

// CraftMyPDF- needed to avoid 429 errors
await Task.Delay(100);
if (response.StatusCode == TooManyRequests) { /* retry */ }

//IronPDF- no limits, just generate
var pdf = renderer.RenderHtmlAsPdf(html);
// Remove all rate limit code!

Webhook-Handler entfernen

CraftMyPDF verwendet asynchrone Webhooks für die PDF-Vervollständigung.IronPDF ist synchron, d. h. die PDF-Datei ist sofort fertig:

// CraftMyPDF- webhook callback required
// POST with webhook_url, wait for callback

//IronPDF- PDF ready immediately
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No callback needed!

Sync standardmäßig

Entfernen Sie async/await-Muster, wenn sie nur für HTTP-Aufrufe benötigt werden:

// CraftMyPDF- async required
var response = await client.ExecuteAsync(request);

//IronPDF- sync by default (async available if needed)
var pdf = renderer.RenderHtmlAsPdf(html);

Post-Migrations-Checkliste

Überprüfen Sie nach Abschluss der Codemigration Folgendes:

  • Alle PDF-Generierungstests ausführen
  • Vergleichen Sie die Ausgabequalität (die Chromium-Engine von IronPDF liefert pixelgenaue Ergebnisse)
  • Leistungsverbesserung messen (Millisekunden vs. Sekunden)
  • Überprüfen Sie, ob alle Vorlagen korrekt konvertiert wurden.
  • Test der Stapelverarbeitung ohne Ratenbegrenzungen
  • Test in allen Zielumgebungen
  • CI/CD-Pipelines aktualisieren
  • CraftMyPDF-Abonnement kündigen
  • API-Schlüssel aus secrets/config entfernen

Zusätzliche Ressourcen


Durch die Migration von CraftMyPDFzu IronPDF werden Cloud-Abhängigkeiten, Netzwerklatenz, Kosten pro PDF und die Bindung an Vorlagen eliminiert, während gleichzeitig ein pixelgenaues Chromium-Rendering bereitgestellt wird, das offline läuft. Der Übergang von REST-API-Aufrufen zu lokalen Methodenaufrufen vereinfacht Ihre Codebasis und sorgt dafür, dass sensible Dokumentdaten in Ihrer Infrastruktur bleiben.

Hinweis:: CraftMyPDF ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist nicht mit CraftMyPDFverbunden, wird nicht von CraftMyPDFunterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
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 Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.