IRONSOFTWAREHOME
FILMY

Jak konwertować obrazy do formatu PDF w języku C#

Curtis Chau
Curtis Chau
Updated: 18 maja 2026

Dlaczego warto przejść zCraftMyPDFna IronPDF?

Interfejsy API do obsługi plików PDF w chmurze, takie jak CraftMyPDF, wiążą się z podstawowymi problemami, które sprawiają, że nie nadają się one do wielu środowisk produkcyjnych.

Problem z interfejsami API do obsługi plików PDF w chmurze

  1. Twoje dane opuszczają system: Każdy szablon HTML i ładunek danych JSON jest przesyłany na serwery CraftMyPDF. W przypadku faktur, umów, dokumentacji medycznej lub jakichkolwiek wrażliwych danych biznesowych stwarza to ryzyko związane z nieprzestrzeganiem przepisów HIPAA, RODO i SOC2.

  2. Opóźnienie sieciowe: Każda generacja PDF wiąże się z przejazdem po sieci plus czasem kolejki i renderowania (zazwyczaj sekundami).IronPDF generuje pliki lokalnie w ciągu milisekund.

  3. Koszty na PDF się sumują: Cena oparta na kredytach rośnie wraz z wolumenem — obciążenia o dużej przepustowości powodują znaczne powtarzające się koszty w porównaniu do jednorazowej licencji wieczystej.

  4. Wynik zoptymalizowany pod kątem PRINT: Interfejsy API w chmurze często są zoptymalizowane pod kątem PRINT — redukują tło i upraszczają kolory, aby oszczędzać "atrament". Wynik nigdy nie wygląda tak samo jak kod HTML na ekranie.

  5. **Uzależnienie od szablonu:**CraftMyPDFwymaga korzystania z własnego edytora typu "przeciągnij i upuść". Nie można swobodnie używać standardowego HTML/CSS.

Porównanie architektur

AspektCraftMyPDFIronPDF
Lokalizacja danychChmura (Twoje dane opuszczają Twój system)Lokalnie (dane nigdy nie opuszczają serwera)
OpóźnienieRundtrip sieciowy + renderowanie (zazwyczaj sekundami)Milisekundy
CenySubskrypcja oparta na kredytachJednorazowa Licencja wieczysta
System szablonówWyłącznie zastrzeżone przeciąganie i upuszczanieDowolny kod HTML/CSS/JavaScript
Jakość tłumaczeniaZoptymalizowane pod kątem drukuRenderowanie ekranu z dokładnością do piksela
Działa w trybie offlineNie (wymagane połączenie z Internetem)Tak
ZgodnośćDane opuszczają organizacjęZgodność z SOC2/HIPAA

Porównanie funkcji

FunkcjaCraftMyPDFIronPDF
HTML do PDFZa pośrednictwem szablonów API✅Język ojczysty
URL do pliku PDFPoprzez API✅Język ojczysty
Szablony niestandardoweTylko w edytorze własnościowym✅Dowolny kod HTML
Obsługa CSS3Ograniczone✅Pełne
Renderowanie JavaScriptOgraniczone✅Pełne
Łączenie/dzielenie plików PDFPoprzez API✅Język ojczysty
Znaki wodnePoprzez API✅Język ojczysty
Działa w trybie offline
Własny hosting

Przygotowania przed migracją

Wymagania wstępne

Upewnij się, że Twoje środowisko spełnia następujące wymagania:

  • .NET Framework 4.6.2+ lub .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ lub VS Code z rozszerzeniem C#
  • Dostęp do menedżera pakietów NuGet
  • Klucz licencyjny IronPDF(bezpłatna wersja próbna dostępna na stronie ironpdf.com)

Audyt wykorzystania CraftMyPDF

Uruchom te polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do CraftMyPDF:

# Find allCraftMyPDFusages 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

Zmiany wymagające dostosowania

ZmianaCraftMyPDFIronPDFWpływ
ArchitekturaAPI REST w chmurzeLokalna biblioteka .NETUsuń wywołania HTTP
SzablonyWłasny edytorStandardowy HTMLKonwersja szablonów do formatu HTML
Klucz APIWymagane dla każdego wywołaniaLicencja przy uruchomieniuUsuń obsługę klucza API
Wzorzec asynchronicznyWymagane (HTTP)OpcjonalnieUsuń "await", jeśli wolisz
Obsługa błędówKody statusu HTTPWyjątkiZmiana wzorców try/catch
Powiązanie danychSzablony JSONInterpolacja ciągów znakówUprość powiązanie danych

Proces migracji krok po kroku

Krok 1: Zaktualizuj pakiety NuGet

Usuń bibliotekę klienta HTTP i zainstaluj IronPDF:

# Remove RestSharp HTTP client
dotnet remove package RestSharp

# Install IronPDF
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja odniesień do przestrzeni nazw

Zastąp przestrzenie nazw klienta HTTP przez IronPDF:

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

// Add this
using IronPdf;

Krok 3: Skonfiguruj licencję (jednorazowo podczas uruchamiania)

Zastąp nagłówki klucza API dla poszczególnych żądań pojedynczą konfiguracją licencji:

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

Kompletna dokumentacja API

Mapowanie punktów końcowych API

CraftMyPDFIronPDF
POST /v1/createrenderer.RenderHtmlAsPdf(html)
X-API-KEY headerLicense.LicenseKey = "..."
template_idStandardowy ciąg znaków HTML
{%name%} placeholders$"{name}" interpolacja w C#
POST /v1/mergePdfDocument.Merge(pdfs)
POST /v1/add-watermarkpdf.ApplyWatermark(html)
Wywołania zwrotne WebhookNie jest potrzebne
Ograniczanie szybkościNie dotyczy

Mapowanie konfiguracji

OpcjaCraftMyPDFOdpowiednik IronPDF
template_idCiąg znaków HTML
data JSONInterpolacja w języku C#
page_size: "A4"PaperSize = PdfPaperSize.A4
orientation: "landscape"PaperOrientation = Landscape
margin_top: 20MarginTop = 20
headerHtmlHeader
footerHtmlFooter

Przykłady migracji kodu

Konwersja HTML do PDF

Najczęstsza operacja ilustruje fundamentalną zmianę architektury z chmurowego API na renderowanie lokalne.

Wdrożenie CraftMyPDF:

// 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);
    }
}

Wdrożenie IronPDF:

// 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 eliminuje konfigurację RestClient, nagłówki kluczy API, identyfikatory szablonów i obsługę odpowiedzi HTTP — redukując 15-wierszową operację w chmurze do 4 wierszy kodu lokalnego. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.

Konwersja adresów URL do formatu PDF

Wdrożenie CraftMyPDF:

// 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);
    }
}

Wdrożenie IronPDF:

// 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");
    }
}

Metoda IronPDFRenderUrlAsPdf przechwytuje całą stronę internetową, w tym treści renderowane przez JavaScript. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji URL na PDF.

Nagłówki i stopki

Wdrożenie CraftMyPDF:

// 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);
    }
}

Wdrożenie IronPDF:

// 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 obsługuje tokeny zastępcze takie jak {page} i {total-pages} do dynamicznego numerowania stron. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.

Konwersja zmiennych szablonu

CraftMyPDF wykorzystuje własne symbole zastępcze szablonów, które należy przekształcić na interpolację ciągów znaków w języku C#:

Wzór CraftMyPDF:

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

Wzór IronPDF:

// 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);

Ważne uwagi dotyczące migracji

Usuń wszystkie kody HTTP

Najważniejszą zmianą jest wyeliminowanie zależności sieciowych.IronPDF działa lokalnie — bez RestClient, bez wywołań API, bez obsługi odpowiedzi:

//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);

Usuń kod ograniczający szybkość

CraftMyPDF nakłada ograniczenia szybkości API, co wymaga logiki ponownych prób.IronPDF nie ma ograniczeń:

//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!

Usuń procedury obsługi webhooków

CraftMyPDF wykorzystuje asynchroniczne webhooki do tworzenia plików PDF.IronPDF działa synchronicznie — plik PDF jest gotowy natychmiast:

//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!

Synchronizacja domyślna

Usuń wzorce async/await, jeśli były one potrzebne wyłącznie do wywołań HTTP:

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

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

Lista kontrolna po migracji

Po zakończeniu migracji kodu sprawdź, czy:

  • Uruchom wszystkie testy generowania plików PDF
  • Porównaj jakość wyjściową (silnik Chromium w IronPDF zapewnia renderowanie z idealną dokładnością pikselową)
  • Mierzenie poprawy wydajności (w milisekundach vs. sekundach)
  • Sprawdź, czy wszystkie szablony zostały poprawnie przekonwertowane
  • Testowanie przetwarzania wsadowego bez limitów szybkości
  • Przetestuj we wszystkich środowiskach docelowych
  • Aktualizacja potoków CI/CD
  • Anuluj subskrypcję CraftMyPDF
  • Usuń klucz API z pliku secrets/config

Dodatkowe zasoby


Przejście zCraftMyPDFna IronPDF eliminuje zależność od chmury, opóźnienia sieciowe, koszty związane z każdym plikiem PDF oraz uzależnienie od szablonów, zapewniając jednocześnie idealne renderowanie w Chromium, które działa w trybie offline. Przejście z wywołań REST API na lokalne wywołania metod upraszcza kod źródłowy i pozwala zachować poufne dane dokumentów w ramach własnej infrastruktury.

Zwróć uwagę: CraftMyPDF to zarejestrowany znak towarowy jego właściciela. Ta strona nie jest powiązana, wspierana ani sponsorowana przez CraftMyPDF. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta