Jak przeprowadzić migrację z Gnostice PDFOne do IronPDF w języku C#
Przejście z Gnostice PDFOne naIronPDFzmienia proces pracy z plikami PDF w środowisku .NET z podejścia opartego na współrzędnych i rozdrobnionego na różne platformy na ujednolicone rozwiązanie oparte na HTML/CSS z pełną obsługą nowoczesnych standardów internetowych. Niniejszy przewodnik zawiera kompleksową, szczegółową ścieżkę migracji, która eliminuje udokumentówane ograniczenia dotyczące CSS, JavaScript i stabilności pamięci dla profesjonalnych programistów .NET.
Dlaczego warto przejść z Gnostice PDFOne na IronPDF
Wyzwania związane z Gnostice PDFOne
Gnostice PDFOne i Document Studio .NET mają dobrze udokumentówane ograniczenia, które mają wpływ na aplikacje produkcyjne:
-
Brak obsługi zewnętrznych arkuszy CSS: Dokumentacja Gnostice PDFOne wyraźnie stwierdza, że nie obsługuje ona zewnętrznych arkuszy stylów CSS — co jest podstawowym wymogiem nowoczesnej konwersji stron internetowych do formatu PDF.
-
Brak możliwości wykonywania kodu JavaScript: Treści dynamiczne wymagające JavaScriptu nie mogą być renderowane, co uniemożliwia dokładną konwersję nowoczesnych aplikacji internetowych.
-
Brak bezpośredniej konwersji HTML do PDF: Gnostice PDFOne nie oferuje bezpośredniej konwersji HTML do PDF. Konieczne jest użycie Document Studio do konwersji HTML lub ręczne parsowanie i renderowanie elementów HTML — co stanowi znaczny nakład pracy programistycznej.
-
Fragmentacja platformy: oddzielne produkty dla WinForms, WPF, ASP.NET, Xamarin — każdy z innym zestawem funkcji i interfejsów API. Może być konieczne posiadanie wielu licencji i baz kodu.
-
Wycieki pamięci i stabilność: Na forach użytkowników i serwisie Stack Overflow zgłaszane są uporczywe wycieki pamięci, błąd JPEG #53 oraz wyjątki StackOverflow podczas przetwarzania obrazów.
-
Brak obsługi Unicode z kierunkiem pisania od prawej do lewej: Język arabski, hebrajski i inne języki RTL nie są wyraźnie obsługiwane — co stanowi poważną przeszkodę dla aplikacji międzynarodowych.
-
Ograniczona obsługa podpisów cyfrowych: W programie Gnostice PDFOne podpisy cyfrowe były dotychczas niedostępne lub zawodne.
- API oparte na współrzędnych: Wiele operacji wymaga ręcznego pozycjonowania X/Y zamiast nowoczesnych metod układania, co wymaga precyzyjnych obliczeń dla każdego elementu.
Porównanie Gnostice PDFOne i IronPDF
| Aspekt | Gnostice PDFOne | IronPDF |
|---|---|---|
| Zewnętrzny CSS | Nieobsługiwane | Obsługiwane |
| Wykonanie kodu JavaScript | Nieobsługiwane | Pełny silnik Chromium |
| Języki RTL | Nieobsługiwane | Pełna obsługa Unicode |
| Podpisy cyfrowe | Ograniczone/brakujące | Pełna obsługa X509 |
| Platforma | Produkty fragmentaryczne | Pojedyncza, ujednolicona biblioteka |
| Stabilność pamięci | Zgłoszone problemy | Stabilny, dobrze zarządzany |
| HTML do PDF | Podstawowe, wymaga obejść | Renderowanie na poziomie przeglądarki Chrome |
| Krzywa uczenia się | Złożony interfejs API | Proste, intuicyjne API |
| Nowoczesny CSS (Flexbox, Grid) | Nieobsługiwane | Pełna obsługa CSS3 |
| Obsługa obrazów | Znane problemy | Niezawodny |
Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia przyszłościową podstawę w postaci ujednoliconej biblioteki, która działa spójnie na wszystkich platformach .NET.
Ocena złożoności migracji
Szacowany nakład pracy według funkcji
| Funkcja | Złożoność migracji |
|---|---|
| Wczytywanie/zapisywanie plików PDF | Bardzo niski |
| Łączenie plików PDF | Bardzo niski |
| Podział plików PDF | Low |
| Ekstrakcja tekstu | Low |
| Znaki wodne | Low |
| Nagłówki/stopki | Low |
| HTML do PDF | Low |
| Szyfrowanie | Medium |
| Pola formularza | Medium |
| Podpisy cyfrowe | Low |
Korzyści, jakie zyskujesz
Po migracji z Gnostice PDFOne doIronPDFdostępne stają się następujące funkcje, które wcześniej były niemożliwe:
- Zewnętrzne arkusze stylów CSS
- Wykonanie kodu JavaScript
- Obsługa języków RTL (arabski, hebrajski)
- CSS Grid i Flexbox
- Niezawodne podpisy cyfrowe
- Lepsze zarządzanie pamięcią
- Obsługa wielu platform przy użyciu jednej bazy kodu
Zanim zaczniesz
Wymagania wstępne
- Wersja .NET:IronPDFobsługuje .NET Framework 4.6.2+ oraz .NET Core 2.0+ / .NET 5/6/7/8/9+
- Klucz licencyjny: Uzyskaj klucz licencyjnyIronPDFna stronie ironpdf.com
- Kopia zapasowa: Utwórz gałąź do prac migracyjnych
Zidentyfikuj wszystkie zastosowania Gnostice PDFOne
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .
# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .
# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
Zmiany w pakiecie NuGet
# Remove Gnostice PDFOne packages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET
# Install IronPDF
dotnet add package IronPdf
# Remove Gnostice PDFOne packages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET
# Install IronPDF
dotnet add package IronPdf
Szybki start – migracja
Krok 1: Zaktualizuj konfigurację licencji
Przed (Gnostice PDFOne):
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
' Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE"
Po (IronPDF):
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
' Or in appsettings.json:
' { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
Krok 2: Zaktualizuj importy przestrzeni nazw
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;
// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
Kompletna dokumentacija API
Mapowanie klas podstawowych
| Gnostice PDFOne | IronPDF | Opis |
|---|---|---|
PDFDocument |
PdfDocument |
Główna klasa dokumentu PDF |
PDFPage |
PdfDocument.Pages[i] |
Przedstawienie strony |
PDFFont |
Stylizacja CSS | Specyfikacja czcionki |
PDFTextElement |
Treść HTML | Treść tekstowa |
PDFImageElement |
Tagi HTML <img> |
Treść obrazu |
DocExporter |
ChromePdfRenderer |
Konwersja HTML/URL do formatu PDF |
Operacje na dokumentach
| Gnostice PDFOne | IronPDF |
|---|---|
new PDFDocument() |
new PdfDocument() |
doc.Load(path) |
PdfDocument.FromFile(path) |
doc.Open() |
N/A (automatyczne) |
doc.Save(path) |
pdf.SaveAs(path) |
doc.Close() |
pdf.Dispose() |
doc.Pages.Count |
pdf.PageCount |
doc.Pages.Add() |
Renderuj HTML lub scal |
Operacje scalania
| Gnostice PDFOne | IronPDF |
|---|---|
doc.Append(otherDoc) |
PdfDocument.Merge(pdf1, pdf2) |
Wiele wywołań Append() |
PdfDocument.Merge(list) |
Przykłady migracji kodu
Przykład 1: Konwersja HTML do PDF
Przed (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Open();
PDFPage page = doc.Pages.Add();
// PDFOne doesn't have direct HTML do PDF conversion
// You need to use Document Studio for HTML conversion
// Or manually parse and render HTML elements
PDFTextElement textElement = new PDFTextElement();
textElement.Text = "Simple text conversion instead of HTML";
textElement.Draw(page, 10, 10);
doc.Save("output.pdf");
doc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Open();
PDFPage page = doc.Pages.Add();
// PDFOne doesn't have direct HTML do PDF conversion
// You need to use Document Studio for HTML conversion
// Or manually parse and render HTML elements
PDFTextElement textElement = new PDFTextElement();
textElement.Text = "Simple text conversion instead of HTML";
textElement.Draw(page, 10, 10);
doc.Save("output.pdf");
doc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System
Module Program
Sub Main()
Dim doc As New PDFDocument()
doc.Open()
Dim page As PDFPage = doc.Pages.Add()
' PDFOne doesn't have direct HTML to PDF conversion
' You need to use Document Studio for HTML conversion
' Or manually parse and render HTML elements
Dim textElement As New PDFTextElement()
textElement.Text = "Simple text conversion instead of HTML"
textElement.Draw(page, 10, 10)
doc.Save("output.pdf")
doc.Close()
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Różnica jest znaczna: Gnostice PDFOne nie pozwala na bezpośrednią konwersję HTML do PDF — należy ręcznie tworzyć elementy tekstowe i pozycjonować je za pomocą współrzędnych. ChromePdfRenderer firmyIronPDFzapewnia bezpośrednie renderowanie HTML z pełną obsługą CSS3 i JavaScript. Więcej opcji renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Łączenie plików PDF
Przed (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;
class Program
{
static void Main()
{
PDFDocument doc1 = new PDFDocument();
doc1.Load("document1.pdf");
PDFDocument doc2 = new PDFDocument();
doc2.Load("document2.pdf");
PDFDocument mergedDoc = new PDFDocument();
mergedDoc.Open();
mergedDoc.Append(doc1);
mergedDoc.Append(doc2);
mergedDoc.Save("merged.pdf");
doc1.Close();
doc2.Close();
mergedDoc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;
class Program
{
static void Main()
{
PDFDocument doc1 = new PDFDocument();
doc1.Load("document1.pdf");
PDFDocument doc2 = new PDFDocument();
doc2.Load("document2.pdf");
PDFDocument mergedDoc = new PDFDocument();
mergedDoc.Open();
mergedDoc.Append(doc1);
mergedDoc.Append(doc2);
mergedDoc.Save("merged.pdf");
doc1.Close();
doc2.Close();
mergedDoc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Document
Imports System
Module Program
Sub Main()
Dim doc1 As New PDFDocument()
doc1.Load("document1.pdf")
Dim doc2 As New PDFDocument()
doc2.Load("document2.pdf")
Dim mergedDoc As New PDFDocument()
mergedDoc.Open()
mergedDoc.Append(doc1)
mergedDoc.Append(doc2)
mergedDoc.Save("merged.pdf")
doc1.Close()
doc2.Close()
mergedDoc.Close()
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Module
Podejście Gnostice PDFOne wymaga utworzenia nowego dokumentu, otwarcia go, osobnego załadowania dokumentów źródłowych, dołączenia każdego z nich oraz ręcznego zamknięcia wszystkich trzech dokumentów. Statyczna metoda Merge wIronPDFobsługuje to w trzech wierszach przy odpowiednim zarządzaniu zasobami. Dowiedz się więcej o łączeniu i dzieleniu plików PDF.
Przykład 3: Dodaj znak wodny do pliku PDF
Przed (Gnostice PDFOne):
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Load("input.pdf");
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
foreach (PDFPage page in doc.Pages)
{
PDFTextElement watermark = new PDFTextElement();
watermark.Text = "CONFIDENTIAL";
watermark.Font = font;
watermark.Color = Color.FromArgb(128, 255, 0, 0);
watermark.RotationAngle = 45;
watermark.Draw(page, 200, 400);
}
doc.Save("watermarked.pdf");
doc.Close();
}
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;
class Program
{
static void Main()
{
PDFDocument doc = new PDFDocument();
doc.Load("input.pdf");
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
foreach (PDFPage page in doc.Pages)
{
PDFTextElement watermark = new PDFTextElement();
watermark.Text = "CONFIDENTIAL";
watermark.Font = font;
watermark.Color = Color.FromArgb(128, 255, 0, 0);
watermark.RotationAngle = 45;
watermark.Draw(page, 200, 400);
}
doc.Save("watermarked.pdf");
doc.Close();
}
}
Imports Gnostice.PDFOne
Imports Gnostice.PDFOne.Graphics
Imports System
Imports System.Drawing
Module Program
Sub Main()
Dim doc As New PDFDocument()
doc.Load("input.pdf")
Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)
For Each page As PDFPage In doc.Pages
Dim watermark As New PDFTextElement()
watermark.Text = "CONFIDENTIAL"
watermark.Font = font
watermark.Color = Color.FromArgb(128, 255, 0, 0)
watermark.RotationAngle = 45
watermark.Draw(page, 200, 400)
Next
doc.Save("watermarked.pdf")
doc.Close()
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 48,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(watermark);
pdf.SaveAs("watermarked.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 48,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
pdf.ApplyStamp(watermark);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim watermark = New TextStamper() With {
.Text = "CONFIDENTIAL",
.FontSize = 48,
.Opacity = 50,
.Rotation = 45,
.VerticalAlignment = VerticalAlignment.Middle,
.HorizontalAlignment = HorizontalAlignment.Center
}
pdf.ApplyStamp(watermark)
pdf.SaveAs("watermarked.pdf")
End Sub
End Module
Podejście Gnostice PDFOne wymaga tworzenia obiektów PDFFont, ręcznego przechodzenia przez strony, obliczania współrzędnych (200, 400) oraz ustawiania właściwości obiektów PDFTextElement. TextStamper firmyIronPDFzapewnia konfigurację deklaratywną z automatycznym centrowaniem i zastosowaniem stron — bez konieczności obliczania współrzędnych. Dodatkowe opcje można znaleźć w dokumentacji dotyczącej znaków wodnych.
Ważne uwagi dotyczące migracji
Układ oparty na współrzędnych do układu HTML/CSS
Najważniejszą zmianą paradygmatu w migracji Gnostice PDFOne jest przejście z pozycjonowania opartego na współrzędnych na układ HTML/CSS:
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400); // X=200, Y=400
// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400); // X=200, Y=400
// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
' Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400) ' X=200, Y=400
' IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle
watermark.HorizontalAlignment = HorizontalAlignment.Center
Obiekty czcionek w stylach CSS
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;
//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;
//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
Imports Gnostice.PDFOne
' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 48)
watermark.Font = font
' IronPDF- use CSS in HTML content
Dim html As String = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>"
Indeksowanie stron
Gnostice PDFOne często stosuje indeksowanie stron od 1, podczas gdyIronPDFstosuje indeksowanie od 0 (standardowa konwencja .NET):
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1]; // First page
// IronPDF: 0-indexed
var page = pdf.Pages[0]; // First page
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1]; // First page
// IronPDF: 0-indexed
var page = pdf.Pages[0]; // First page
' Gnostice PDFOne: May use 1-indexed
Dim page = doc.Pages(1) ' First page
' IronPDF: 0-indexed
Dim page = pdf.Pages(0) ' First page
Funkcje, które teraz działają
Po migracji z Gnostice PDFOne doIronPDFdostępne stają się następujące funkcje, które wcześniej były problematyczne lub niemożliwe do zrealizowania:
- Zewnętrzne arkusze CSS: Arkusze stylów, które nie działały w Gnostice PDFOne, są teraz wyświetlane poprawnie
- Treści JavaScript: brakujące wcześniej treści dynamiczne są teraz widoczne
- Języki RTL: arabski, hebrajski i inne języki pisane od prawej do lewej działają poprawnie
- CSS Grid i Flexbox: w pełni obsługiwane są nowoczesne techniki układania stron
- Podpisy cyfrowe: Niezawodne podpisywanie certyfikatów X509
Rozwiązywanie problemów
Problem 1: Nie znaleziono elementu PDFTextElement
Problem: PDFTextElement nie istnieje w IronPDF.
Rozwiązanie: Użyj treści HTML lub TextStamper:
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");
// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");
// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
Imports IronPdf
' For new documents - render HTML
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>")
' For existing documents - use stampers
Dim stamper As New TextStamper() With {.Text = "Added Text"}
pdf.ApplyStamp(stamper)
Problem 2: Obiekty PDFFont
Problem: Gnostice PDFOne wykorzystuje obiekty PDFFont;IronPDFwykorzystuje CSS.
Rozwiązanie:
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);
//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);
//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
' Gnostice PDFOne
Dim font As New PDFFont(PDFStandardFont.Helvetica, 12)
' IronPDF- use CSS
Dim html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"
Problem 3: Nie znaleziono DocExporter
Problem: Klasa DocExporter nie istnieje w IronPDF.
Rozwiązanie: Użyj ChromePdfRenderer:
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
' Gnostice PDFOne
Dim exporter As New DocExporter()
exporter.Export(doc, "output.pdf", DocumentFormat.PDF)
' IronPDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
pdf.SaveAs("output.pdf")
Wydanie 4: Ulepszenia pamięci
Problem: W programie Gnostice PDFOne zgłoszono wycieki pamięci.
Rozwiązanie:IronPDFzapewnia stabilne zarządzanie pamięcią. Należy stosować odpowiednie wzorce dyspozycyjne:
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
// Process PDF
pdf.SaveAs("output.pdf");
} // Automatically disposed
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
// Process PDF
pdf.SaveAs("output.pdf");
} // Automatically disposed
Imports PdfDocument
Using pdf = PdfDocument.FromFile("large.pdf")
' Process PDF
pdf.SaveAs("output.pdf")
End Using
Lista kontrolna migracji
Przed migracją
- Sporządź wykaz wszystkich wystąpień Gnostice PDFOne w kodzie źródłowym
- Zwróć uwagę na funkcje, które wcześniej nie działały (CSS, JS, RTL) — teraz już działają!
- Problemy z pamięcią dokumentów do testów porównawczych
- Uzyskaj klucz licencyjny IronPDF
- Utwórz gałąź migracji w systemie kontroli wersji
Migracja kodu
- Usuń pakiety Gnostice PDFOne NuGet
- Zainstaluj pakiet IronPdf NuGet:
dotnet add package IronPdf - Zaktualizuj importy przestrzeni nazw
- Zastąp konfigurację klucza licencyjnego
- Zamień
PDFDocumentnaPdfDocument - Zamień
DocExporternaChromePdfRenderer - Zastąp rysowanie oparte na współrzędnych stemplowaniem HTML
- Zaktualizuj
PDFFontdo stylów CSS - Zamień
doc.Append()naPdfDocument.Merge()
Testowanie
- Przetestuj konwersję HTML do PDF
- Sprawdź, czy zewnętrzny CSS działa teraz
- Testowanie treści zależnych od JavaScript
- Przetestuj języki RTL (w razie potrzeby)
- Testuj podpisy cyfrowe (już dostępne!)
- Testowanie łączenia plików PDF
- Testowanie znaków wodnych
- Porównaj zużycie pamięci
Po migracji
- Usuń licencję Gnostice PDFOne
- Aktualizacja dokumentacji
- Usunąć obejścia ograniczeń Gnostice PDFOne
- Przeprowadź szkolenie zespołu z zakresu API IronPDF

