Jak przeprowadzić migrację z Gnostice PDFOne do IronPDF w języku C#
Przejście zGnostice PDFOnena IronPDF zmienia 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 udokumentowane ograniczenia dotyczące CSS, JavaScript i stabilności pamięci dla profesjonalnych programistów .NET.
Dlaczego warto przejść zGnostice PDFOnena IronPDF
Wyzwania związane z Gnostice PDFOne
Gnostice PDFOne i Document Studio .NET mają dobrze udokumentowane ograniczenia, które wpływają na aplikacje produkcyjne. Dziedziczony pakiet NuGet PDFOne.NET jest teraz również przestarzały (ostatnie wydanie 24.1.60, 1 lipca 2024) z zaleceniem dostawcy, aby nowe prace kierować do pakietów Gnostice.DocumentStudio.*:
-
Brak obsługi zewnętrznych arkuszy CSS: DokumentacjaGnostice PDFOnewyraź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 PDFOnenie 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 programieGnostice PDFOnepodpisy 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ównanieGnostice PDFOnei 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 przyjęcie .NET 10 i C# 14,IronPDF zapewnia zintegrowaną bibliotekę, 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 | Niski |
| Ekstrakcja tekstu | Niski |
| Znaki wodne | Niski |
| Nagłówki/stopki | Niski |
| HTML do PDF | Niski |
| Szyfrowanie | Medium |
| Pola formularza | Medium |
| Podpisy cyfrowe | Niski |
Korzyści, jakie zyskujesz
Po migracji zGnostice PDFOnedo IronPDF dostę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:IronPDF obsługuje .NET Framework 4.6.2+ oraz .NET Core 2.0+ / .NET 5/6/7/8/9+
- Klucz licencyjny: Uzyskaj klucz licencyjny IronPDF na 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 packages (PDFOne.NET is the legacy, deprecated package)
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.WinForms
dotnet remove package Gnostice.DocumentStudio.WPF
dotnet remove package Gnostice.DocumentStudio.ASP
dotnet remove package Gnostice.DocumentStudio.ASP.Core
dotnet remove package Gnostice.DocumentStudio.Xamarin
# Install IronPDF
dotnet add package IronPdf
# Remove Gnostice packages (PDFOne.NET is the legacy, deprecated package)
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.WinForms
dotnet remove package Gnostice.DocumentStudio.WPF
dotnet remove package Gnostice.DocumentStudio.ASP
dotnet remove package Gnostice.DocumentStudio.ASP.Core
dotnet remove package Gnostice.DocumentStudio.Xamarin
# Install IronPDF
dotnet add package IronPdf
Szybki start – migracja
Krok 1: Zaktualizuj konfigurację licencji
Przed (Gnostice PDFOne):
//Gnostice PDFOnelicense is set via the static PDFOne class
Gnostice.PDFOne.PDFOne.LicenseKey = "YOUR-GNOSTICE-LICENSE";
//Gnostice PDFOnelicense is set via the static PDFOne class
Gnostice.PDFOne.PDFOne.LicenseKey = "YOUR-GNOSTICE-LICENSE";
Imports Gnostice.PDFOne
' Gnostice PDFOnelicense is set via the static PDFOne class
PDFOne.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 scałania
| 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOnenie pozwala na bezpośrednią konwersję HTML do PDF — należy ręcznie tworzyć elementy tekstowe i pozycjonować je za pomocą współrzędnych. Funkcja ChromePdfRendererIronPDF zapewnia bezpośrednie renderowanie HTML z pełnym wsparciem dla 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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ścieGnostice PDFOnewymaga 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 MergeIronPDF obsługuje to w trzech liniach z właściwym zarządzaniem 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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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 PDFOne.NET (deprecated; vendor recommends Gnostice.DocumentStudio.WinForms)
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ścieGnostice PDFOnewymaga tworzenia obiektów PDFFont, ręcznego iterowania przez strony, obliczania współrzędnych (200, 400) i ustawiania właściwości na obiektach PDFTextElement. Funkcja TextStamperIronPDF zapewnia deklaratywną konfigurację z automatycznym wyśrodkowaniem i stosowaniem do stron—bez potrzeby obliczeń 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 migracjiGnostice PDFOnejest 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 gdy IronPDF stosuje 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 zGnostice PDFOnedo IronPDF dostę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 PDFOneużywa obiektów PDFFont;IronPDF wykorzystuje 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 programieGnostice PDFOnezgłoszono wycieki pamięci.
Rozwiązanie:IronPDF zapewnia 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 PDFOnew 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ń pakietyGnostice PDFOneNuGet
- Zainstaluj pakiet NuGet IronPDF:
dotnet add package IronPdf - Zaktualizuj importy przestrzeni nazw
- Zastąp konfigurację klucza licencyjnego
- Przekształć
PDFDocumentnaPdfDocument - Przekształć
DocExporternaChromePdfRenderer - Zastąp rysowanie oparte na współrzędnych stemplowaniem HTML
- Zaktualizuj
PDFFontdo stylizacji CSS - Przekształć
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

