Comment migrer de BitMiracle Docotic PDF vers IronPDF en C#
BitMiracle Docotic PDF est une bibliothèque PDF .NET réputée pour son architecture de code géré à 100 % et ses capacités étendues de manipulation programmatique des PDF. Toutefois, la structure modulaire de ces outils, qui nécessite des modules distincts pour la conversion HTML-PDF, la mise en page et d'autres fonctionnalités, complique la gestion du projet et l'octroi des licences. Ce guide complet fournit un chemin de migration étape par étape de BitMiracle Docotic PDFversIronPDF- une bibliothèque PDF .NET unifiée avec un rendu HTML intégré basé sur Chromium et toutes les fonctionnalités incluses dans un seul package NuGet.
Pourquoi migrer de BitMiracle Docotic PDFvers IronPDF?
Bien que BitMiracle Docotic PDFoffre de solides fonctionnalités de manipulation de PDF, plusieurs facteurs poussent les équipes de développement à rechercher des alternatives avec une architecture plus rationalisée.
Comparaison de l'architecture des paquets
BitMiracle Docotic PDF utilise une approche modulaire qui nécessite plusieurs packages pour une fonctionnalité complète :
| Aspect | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| HTML-à-PDF | Nécessite un module complémentaire séparé (HtmlToPdf) | Fonctionnalité principale intégrée |
| Structure du paquet | Core + plusieurs add-ons | Paquet NuGet unique |
| Modèle de licence | Licence d'utilisation à l'unité | Toutes les fonctionnalités sont incluses |
| Complexité de l'API | Espaces de noms séparés par module complémentaire | API unifiée |
| HTML Engine | Chromium (via un module complémentaire) | Chromium (intégré) |
| Taille de la communauté | Plus petit | Plus grand, plus de ressources |
| Documentation | Référence technique | Tutoriels détaillés |
Parité des fonctionnalités
Les deux bibliothèques prennent en charge des fonctionnalités PDF complètes :
| Fonction | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Créer un PDF à partir de zéro | ✅ | ✅ |
| HTML vers PDF | ✅(module complémentaire requis) | ✅(intégré) |
| URL vers PDF | ✅(module complémentaire requis) | ✅(intégré) |
| Manipulation PDF | ✅ | ✅ |
| Extraction de texte | ✅ | ✅ |
| Fusionner/Séparer | ✅ | ✅ |
| Signatures numériques | ✅ | ✅ |
| Chiffrement | ✅ | ✅ |
| Remplissage de formulaires | ✅ | ✅ |
| Conformité PDF/A | ✅ | ✅ |
Différences clés dans l'approche
BitMiracle Docotic PDF utilise un dessin basé sur un canevas avec positionnement de coordonnées (canvas.DrawString(x, y, text)), tandisIronPDFexploite HTML/CSS pour la mise en page et le positionnement. Il s'agit d'un changement de paradigme qui simplifie la création de contenu pour les développeurs familiarisés avec les technologies web.
Préparation de la migration
Prérequis
Assurez-vous que votre environnement répond à ces exigences :
- .NET Framework 4.6.2+ ou .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ ou VS Code avec l'extension C#
- Accès au Package Manager NuGet
- Clé de licenceIronPDF(essai gratuit disponible sur ironpdf.com)
Audit de l'utilisation de BitMiracle Docotic PDF
Exécutez ces commandes dans le répertoire de votre solution pour identifier toutes les références à Docotic.Pdf :
# 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" .
Modifications importantes à prévoir
| Changement | BitMiracle Docotic PDF | IronPDF | Impact |
|---|---|---|---|
| Rendu HTML | Nécessite le module complémentaire HtmlToPdf | Intégré | Supprimer le paquet de modules complémentaires |
| Indexation des pages | Base 0 (Pages[0]) |
Base 0 (Pages[0]) |
Aucune modification n'est nécessaire |
| Système de coordination | Origine en bas à gauche | Flux HTML/CSS | Utiliser CSS pour le positionnement |
| Dessin sur toile | PdfCanvas.DrawText() |
Balisage HTML | Changement de paradigme |
| Extraction de texte | page.GetText() |
pdf.ExtractAllText() |
Changement de nom de la méthode |
| Chargement de documents | new PdfDocument(path) |
PdfDocument.FromFile(path) |
Constructeur → méthode statique |
| Économie | document.Save(path) |
pdf.SaveAs(path) |
Changement de nom de la méthode |
| Disposition | IDisposable motif |
Non requis | Gestion simplifiée des ressources |
Processus de migration étape par étape
Étape 1 : Mise à jour des paquets NuGet
Supprimez les paquets BitMiracle Docotic PDFet installezIronPDF:
# 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
Étape 2 : Mise à jour des références aux espaces de noms
Remplacer les espaces de noms PDF de BitMiracle Docotic parIronPDF:
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
Étape 3 : configuration de la licence
// 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"
Référence complète de migration des API
Opérations documentaires
| Tâches | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Créer un document vide | new PdfDocument() |
new PdfDocument() |
| Charger à partir d'un fichier | new PdfDocument(path) |
PdfDocument.FromFile(path) |
| Charger à partir du flux | PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
| Chargement à partir d'octets | PdfDocument.Load(bytes) |
PdfDocument.FromBinaryData(bytes) |
| Enregistrer dans un fichier | document.Save(path) |
pdf.SaveAs(path) |
| Obtenir le nombre de pages | document.PageCount |
pdf.PageCount |
| Fermer/Disposer | document.Dispose() |
Non requis |
Conversion HTML en PDF
| Tâches | BitMiracle Docotic PDF(module complémentaire HtmlToPdf) | IronPDF |
|---|---|---|
| Chaîne HTML vers PDF | HtmlConverter.Create(html).ToPdf() |
renderer.RenderHtmlAsPdf(html) |
| Fichier HTML vers PDF | HtmlConverter.Create(new Uri(filePath)).ToPdf() |
renderer.RenderHtmlFileAsPdf(path) |
| URL vers PDF | HtmlConverter.Create(new Uri(url)).ToPdf() |
renderer.RenderUrlAsPdf(url) |
| Définir la taille de la page | options.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
| Définir les marges | options.PageMargins = new Margins(20) |
renderer.RenderingOptions.MarginTop = 20 |
Opérations de fusion et de division
| Tâches | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Fusionner des documents | doc1.Append(doc2) |
PdfDocument.Merge(pdf1, pdf2) |
| Document fractionné | document.CopyPage(index) vers un nouveau document |
pdf.CopyPages(start, end) |
Exemples de migration de code
Conversion HTML en PDF
L'opération la plus courante démontre la simplification significative qu'IronPDF apporte.
Mise en œuvre de BitMiracle Docotic PDF:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This is HTML to PDF conversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This is HTML to PDF conversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf As New PdfDocument()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML to PDF conversion.</p></body></html>"
pdf.CreatePage(html)
pdf.Save("output.pdf")
End Using
Console.WriteLine("PDF created successfully")
End Sub
End Class
Mise en œuvre d'IronPDF:
// 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 to PDF conversion.</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 to PDF conversion.</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 to PDF conversion.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDF élimine l'exigence de l'instruction using et fournit une classe dédiée ChromePdfRenderer qui indique clairement sa capacité de rendu basée sur Chromium. Pour plus d'options de conversion HTML, consultez la documentation HTML au format PDF.
Fusionner plusieurs fichiers PDF
Mise en œuvre de BitMiracle Docotic PDF:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
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"), pdf2 As New PdfDocument("document2.pdf")
pdf1.Append(pdf2)
pdf1.Save("merged.pdf")
End Using
Console.WriteLine("PDFs merged successfully")
End Sub
End Class
Mise en œuvre d'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(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
La méthode statique Merge d'IronPDF accepte directement plusieurs documents, offrant une API plus propre que le modèle itératif Append. Pour plus d'options, consultez la documentation sur la fusion de fichiers PDF .
Extraction de texte
Mise en œuvre de BitMiracle Docotic PDF:
// NuGet: Install-Package 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 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
Module Program
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 Module
Mise en œuvre d'IronPDF:
// 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 réduit l'extraction de texte d'une boucle de plusieurs lignes à un seul appel de méthode. Pour plus d'options d'extraction, consultez la documentation sur l'extraction de texte .
Protection et chiffrement des mots de passe
Mise en œuvre d'IronPDF:
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")
Pour connaître toutes les options de sécurité, consultez la documentation sur le chiffrement .
En-têtes et pieds de page
Mise en œuvre d'IronPDF:
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 prend en charge les jetons d'espace réservé comme {page} et {total-pages} pour la numérotation dynamique des pages. Pour plus d'options, consultez la documentation sur les en-têtes et les pieds de page.
Notes de migration essentielles
Canvas to HTML Paradigm Shift (Changement de paradigme)
L'approche de dessin basée sur le canevas de BitMiracle Docotic PDFdoit être convertie en HTML avec un positionnement CSS :
Modèle PDF docotic BitMiracle :
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!")
Modèle IronPDF:
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)
Indexation de la même page
Les deux bibliothèques utilisent l'indexation à partir de 0 (Pages[0] est la première page) — aucune modification nécessaire pour le code d'accès à la page.
L'élimination n'est pas nécessaire
IronPDF ne nécessite pas d'instructions using pour la gestion de la mémoire, ce qui simplifie la structure du code :
// 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
Support asynchrone
Le module complémentaire HtmlToPdf de BitMiracle Docotic PDFnécessite des modèles asynchrones partout.IronPDFprend en charge les méthodes synchrones et asynchrones :
// 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)
Intégration d'ASP.NET Core
Modèle IronPDF:
[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.Stream, "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.Stream, "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.Stream, "application/pdf", "report.pdf")
End Function
End Class
Liste de contrôle post-migration
Après avoir effectué la migration du code, vérifiez les points suivants :
- Exécutez tous les tests unitaires pour vérifier que la génération de PDF fonctionne correctement.
- Comparez la qualité de sortie PDF (le moteur Chromium d'IronPDF peut rendre le rendu légèrement différemment, généralement mieux).
- Vérifier la précision de l'extraction de texte
- Tester la fonctionnalité de remplissage de formulaires
- Valider les signatures numériques, le cas échéant
- Test de performance des opérations par lots
- Tester dans tous les environnements cibles
- Mise à jour des pipelines CI/CD
- Supprimer les fichiers de licence Docotic.Pdf
Protéger l'avenir de votre infrastructure PDF
Avec .NET 10 à l'horizon et C# 14 introduisant de nouvelles fonctionnalités de langage, le choix d'une bibliothèque PDF à l'architecture unifiée simplifie la gestion des dépendances et garantit une disponibilité constante des fonctionnalités. L'approche à paquet unique d'IronPDF signifie que vous n'aurez pas besoin de suivre la compatibilité de plusieurs versions complémentaires lorsque les projets s'étendront jusqu'en 2025 et 2026.
Ressources supplémentaires
La migration de BitMiracle Docotic PDFversIronPDFélimine la complexité de la gestion de plusieurs packages complémentaires tout en offrant les mêmes capacités de rendu HTML basées sur Chromium. Le passage du dessin basé sur le canevas au positionnement HTML/CSS tire parti des compétences en développement web que la plupart des développeurs .NET possèdent déjà, ce qui se traduit par un code de génération de PDF plus facile à maintenir.

