Wie man HTML zu PDF-Umbrüche mit C# verwaltet
BitMiracle Docotic PDF ist eine angesehene .NET-PDF-Bibliothek, die für ihre 100%ige Managed-Code-Architektur und ihre umfangreichen programmatischen PDF-Manipulationsmöglichkeiten bekannt ist. Die modulare Add-on-Struktur, die separate Pakete für die HTML-zu-PDF-Konvertierung, Layout-Funktionen und andere Funktionen erfordert, erhöht jedoch die Komplexität des Projektmanagements und der Lizenzierung. Dieser umfassende Leitfaden bietet einen schrittweisen Migrationspfad von BitMiracle Docotic PDFzu IronPDF- einer einheitlichen .NET-PDF-Bibliothek mit integriertem Chromium-basiertem HTML-Rendering und allen Funktionen, die in einem einzigen NuGet-Paket enthalten sind.
Warum von BitMiracle Docotic PDFzu IronPDF migrieren?
Obwohl BitMiracle Docotic PDFrobuste Funktionen zur PDF-Bearbeitung bietet, suchen Entwicklungsteams aufgrund verschiedener Faktoren nach Alternativen mit einer schlankeren Architektur.
Vergleich der Paketarchitektur
BitMiracle Docotic PDF verwendet einen modularen Add-on-Ansatz, der mehrere Pakete für die volle Funktionalität erfordert:
| Aspekt | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| HTML-zu-PDF | Erfordert separates Add-on (HtmlToPdf) | Eingebaute Kernfunktion |
| Paketstruktur | Kern + mehrere Add-ons | Einzelnes NuGet-Paket |
| Lizenzierungsmodell | Pro-Add-on-Lizenzierung | Alle Funktionen enthalten |
| API-Komplexität | Separate Namensräume pro Add-on | Vereinheitlichte API |
| HTML Engine | Chromium (über ein Add-on) | Chromium (eingebaut) |
| Gemeinschaftsgröße | Kleiner | Größer, mehr Ressourcen |
| Dokumentation | Technische Referenz | Ausführliche Tutorials |
Funktionsparität
Beide Bibliotheken unterstützen umfassende PDF-Funktionen:
| Feature | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| PDF von Grund auf neu erstellen | ✅ | ✅ |
| HTML zu PDF | ✅(Add-on erforderlich) | ✅(eingebaut) |
| URL zu PDF | ✅(Add-on erforderlich) | ✅(eingebaut) |
| PDF-Manipulation | ✅ | ✅ |
| Textextraktion | ✅ | ✅ |
| Zusammenführen/Spalten | ✅ | ✅ |
| Digitale Signaturen | ✅ | ✅ |
| Verschlüsselung | ✅ | ✅ |
| Ausfüllen von Formularen | ✅ | ✅ |
| PDF/A-Konformität | ✅ | ✅ |
Schlüsselunterschiede im Ansatz
BitMiracle Docotic PDF verwendet eine canvas-basierte Zeichnung mit Koordinatenpositionierung (canvas.DrawString(x, y, text)), während IronPDF HTML/CSS für Layout und Positionierung nutzt. Dies stellt einen Paradigmenwechsel dar, der die Erstellung von Inhalten für Entwickler, die mit Webtechnologien vertraut sind, vereinfacht.
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)
Prüfung der BitMiracle Docotic PDF-Nutzung
Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle Docotic.Pdf-Referenzen zu identifizieren:
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
Bahnbrechende Änderungen, die zu erwarten sind
| Ändern Sie | BitMiracle Docotic PDF | IronPDF | Auswirkungen |
|---|---|---|---|
| HTML-Rendering | Erfordert das Add-on HtmlToPdf | Eingebaut | Add-on-Paket entfernen |
| Seitenindizierung | 0-basiert (Pages[0]) |
0-basiert (Pages[0]) |
Keine Änderung erforderlich |
| Koordinatensystem | Ursprung unten links | HTML/CSS-Fluss | CSS für die Positionierung verwenden |
| Leinwandzeichnung | PdfCanvas.DrawText() |
HTML-Auszeichnung | Paradigmenwechsel |
| Textextraktion | page.GetText() |
pdf.ExtractAllText() |
Änderung des Methodennamens |
| Dokument laden | new PdfDocument(path) |
PdfDocument.FromFile(path) |
Konstruktor → statische Methode |
| Sparen | document.Save(path) |
pdf.SaveAs(path) |
Änderung des Methodennamens |
| Entsorgung | IDisposable Muster |
Nicht erforderlich | Einfachere Ressourcenverwaltung |
Schritt-für-Schritt-Migrationsprozess
Schritt 1: NuGet-Pakete aktualisieren
Entfernen Sie BitMiracle Docotic PDF-Pakete und installieren Sie IronPDF:
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
Schritt 2: Namensraumreferenzen aktualisieren
Ersetzen Sie BitMiracle Docotic PDF-Namensräume durch IronPDF:
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).
// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).
// Add this
using IronPdf;
Imports IronPdf
Schritt 3: Lizenz konfigurieren
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Komplette API-Migrationsreferenz
Dokumentenoperationen
| Aufgabe | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Leeres Dokument erstellen | new PdfDocument() |
new PdfDocument() |
| Aus Datei laden | new PdfDocument(path) |
PdfDocument.FromFile(path) |
| Vom Stream laden | PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
| Aus Bytes laden | PdfDocument.Load(bytes) |
PdfDocument.FromBinaryData(bytes) |
| In Datei speichern | document.Save(path) |
pdf.SaveAs(path) |
| Seitenzahl abrufen | document.PageCount |
pdf.PageCount |
| Schließen/Entsorgen | document.Dispose() |
Nicht erforderlich |
HTML-zu-PDF-Konvertierung
| Aufgabe | BitMiracle Docotic PDF(HtmlToPdf Add-on) | IronPDF |
|---|---|---|
| HTML-String in PDF | await converter.CreatePdfFromStringAsync(html) |
renderer.RenderHtmlAsPdf(html) |
| HTML-Datei in PDF | await converter.CreatePdfAsync(filePath) |
renderer.RenderHtmlFileAsPdf(path) |
| URL zu PDF | await converter.CreatePdfAsync(new Uri(url)) |
renderer.RenderUrlAsPdf(url) |
| Seitengröße festlegen | options.Page.SetSize(PdfPaperSize.A4) |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
| Ränder setzen | options.Page.MarginTop = 20 (etc.) |
renderer.RenderingOptions.MarginTop = 20 |
Merge- und Split-Operationen
| Aufgabe | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Dokumente zusammenführen | doc1.Append("file.pdf") (Pfad/Stream/bytes) |
PdfDocument.Merge(pdf1, pdf2) |
| Dokument teilen | document.CopyPage(index) zu neuem Dokument |
pdf.CopyPages(start, end) |
Beispiele für die Code-Migration
HTML-zu-PDF-Konvertierung
Der häufigste Vorgang verdeutlicht die erhebliche Vereinfachung, die IronPDF bietet.
BitMiracle Docotic PDF-Implementierung:
// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;
class Program
{
static async AufgabeMain()
{
// HtmlConverter is async-only and downloads Chromium on first use
using var converter = await HtmlConverter.CreateAsync();
string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";
using var pdf = await converter.CreatePdfFromStringAsync(html);
pdf.Save("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;
class Program
{
static async AufgabeMain()
{
// HtmlConverter is async-only and downloads Chromium on first use
using var converter = await HtmlConverter.CreateAsync();
string html = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>";
using var pdf = await converter.CreatePdfFromStringAsync(html);
pdf.Save("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
' HtmlConverter is async-only and downloads Chromium on first use
Using converter = Await HtmlConverter.CreateAsync()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML to PDF conversion.</p></body></html>"
Using pdf = Await converter.CreatePdfFromStringAsync(html)
pdf.Save("output.pdf")
End Using
Console.WriteLine("PDF created successfully")
End Using
End Function
End Module
IronPDF-Implementierung:
// 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><p>This is HTML zu PDFconversion.</p></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><p>This is HTML zu PDFconversion.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML zu PDFconversion.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDF beseitigt die Anforderung einer using-Anweisung und bietet eine spezielle ChromePdfRenderer-Klasse, die ihre auf Chromium basierende Rendering-Fähigkeit klar anzeigt. Weitere Optionen zur HTML-Konvertierung finden Sie in der HTML to PDF-Dokumentation.
Mehrere PDFs zusammenführen
BitMiracle Docotic PDF-Implementierung:
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
{
// PdfDocument.Append accepts a file path, Stream, or byte[] —
// not another PdfDocument instance.
pdf1.Append("document2.pdf");
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
{
// PdfDocument.Append accepts a file path, Stream, or byte[] —
// not another PdfDocument instance.
pdf1.Append("document2.pdf");
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf1 As New PdfDocument("document1.pdf")
' PdfDocument.Append accepts a file path, Stream, or byte[] —
' not another PdfDocument instance.
pdf1.Append("document2.pdf")
pdf1.Save("merged.pdf")
End Using
Console.WriteLine("PDFs merged successfully")
End Sub
End Class
IronPDF-Implementierung:
// 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(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// 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(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 As PdfDocument = PdfDocument.FromFile("document1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("document2.pdf")
Dim merged As PdfDocument = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
IronPDFs statische Merge-Methode akzeptiert mehrere Dokumente direkt und bietet eine sauberere API als das iterative Append-Muster. Weitere Optionen finden Sie in der Dokumentation zum Zusammenführen von PDFs .
Textextraktion
BitMiracle Docotic PDF-Implementierung:
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf As New PdfDocument("document.pdf")
Dim allText As String = ""
For Each page In pdf.Pages
allText &= page.GetText()
Next
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Using
End Sub
End Class
IronPDF-Implementierung:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Sub
End Class
IronPDF reduziert die Textextraktion von einer mehrzeiligen Schleife auf einen einzigen Methodenaufruf. Weitere Extraktionsoptionen finden Sie in der Dokumentation zur Textextraktion .
Passwortschutz und Verschlüsselung
IronPDF-Implementierung:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
Ausführliche Informationen zu den Sicherheitsoptionen finden Sie in der Dokumentation zur Verschlüsselung .
Kopf- und Fußzeilen
IronPDF-Implementierung:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
.DrawDividerLine = True,
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
.DrawDividerLine = True,
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>")
pdf.SaveAs("with_headers.pdf")
IronPDF unterstützt Platzhalter-Token wie {page} und {total-pages} für dynamische Seitenzahlen. Weitere Optionen finden Sie in der Kopf- und Fußzeilen-Dokumentation.
Kritische Hinweise zur Migration
Paradigmenwechsel von Canvas zu HTML
Der auf Leinwand basierende Zeichenansatz von BitMiracle Docotic PDFmuss in HTML mit CSS-Positionierung umgewandelt werden:
BitMiracle Docotic PDF-Muster:
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
Dim canvas = pdfPage.Canvas
canvas.DrawString(50, 50, "Hello, World!")
IronPDF-Muster:
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
Dim html As String = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
Gleiche Seite indexieren
Beide Bibliotheken verwenden eine 0-basierte Indizierung (Pages[0] ist die erste Seite) – keine Änderungen am Seitenzugriffscode erforderlich.
Entsorgung nicht erforderlich
IronPDF benötigt keine using-Anweisungen für das Speichermanagement und vereinfacht dadurch die Code-Struktur:
// BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
// BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
Imports BitMiracle.Docotic.Pdf
Using pdf As New PdfDocument("input.pdf")
' operations
End Using
Dim pdf = PdfDocument.FromFile("input.pdf")
' operations - no using statement needed
Async-Unterstützung
Das HtmlToPdf-Add-on von BitMiracle Docotic PDFerfordert überall asynchrone Muster.IronPDF unterstützt sowohl synchrone als auch asynchrone Methoden:
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
' Synchronous
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Asynchronous
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
ASP.NET Core -Integration
IronPDF-Muster:
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate")>
Public Function GeneratePdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
<HttpGet("generate-async")>
Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
Dim renderer = New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
End Class
Post-Migrations-Checkliste
Überprüfen Sie nach Abschluss der Codemigration Folgendes:
Führen Sie alle Unit-Tests aus, um zu überprüfen, ob die PDF-Generierung korrekt funktioniert.
- Vergleichen Sie die PDF-Ausgabequalität (die Chromium-Engine von IronPDF kann die Darstellung geringfügig verändern – in der Regel ist sie jedoch besser).
- Überprüfung der Genauigkeit der Textextraktion
- Test der Formularausfüllfunktion
- Digitale Signaturen gegebenenfalls validieren.
- Batch-Operationen für Leistungstests
- Test in allen Zielumgebungen
- CI/CD-Pipelines aktualisieren
- Docotic.Pdf-Lizenzdateien entfernen.
Zusätzliche Ressourcen
Durch die Migration von BitMiracle Docotic PDFzu IronPDF entfällt die Komplexität der Verwaltung mehrerer Zusatzpakete, während die gleichen Chromium-basierten HTML-Rendering-Funktionen zur Verfügung stehen. Der Übergang vom Canvas-basierten Zeichnen zur HTML/CSS-Positionierung nutzt die Webentwicklungskenntnisse, über die die meisten .NET-Entwickler bereits verfügen, und führt zu einem besser wartbaren Code für die PDF-Erstellung.

