HOWTO · Csharp
HTML a PDF in C#
Converti una stringa HTML in un PDF A4 in C# con HtmlRenderer.PdfSharp.
In questa pagina
Usa HtmlRenderer.PdfSharp in un progetto C# per eseguire il rendering di una stringa HTML in pagine PDF, quindi salva il documento in un percorso scrivibile. Il pacchetto collega un renderer HTML a PdfSharp. Gli stili di base possono essere renderizzati, mentre i layout complessi e i CSS avanzati possono differire dall’output del browser.
Introduzione a HtmlRenderer.PdfSharp
Installa HtmlRenderer.PdfSharp con il Gestore pacchetti NuGet di Visual Studio, oppure esegui dotnet add package HtmlRenderer.PdfSharp dalla directory contenente il file del tuo progetto. NuGet seleziona una versione compatibile del pacchetto. Se il tuo progetto richiede una versione fissata, controlla i framework di destinazione di quella versione rispetto al tuo progetto prima di sceglierla.
La conversione basata sul pacchetto richiede gli assembly NuGet nel progetto della tua applicazione. La sua API usa PdfGenerator da TheArtOfDev.HtmlRenderer.PdfSharp, PdfDocument da PdfSharp.Pdf e PageSize.A4 da PdfSharp. Mantieni questi riferimenti al pacchetto nel progetto che compila il convertitore.
Convertire una stringa HTML in PDF
Il seguente programma C# autonomo esegue la conversione con il pacchetto installato: crea un PdfDocument, passa la stringa HTML a PdfGenerator.AddPdfPages con PageSize.A4, salva il documento nel percorso di output ed elimina il documento.
using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
class Program
{
static void Main()
{
string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
string outputPath = "monthly-report.pdf";
using (PdfDocument document = new PdfDocument())
{
PdfGenerator.AddPdfPages(document, html, PageSize.A4);
document.Save(outputPath);
}
Console.WriteLine("Saved " + outputPath);
}
}
Saved monthly-report.pdf
Esegui questo programma nel progetto in cui è installato HtmlRenderer.PdfSharp. Nella tua applicazione, usa una destinazione in cui il processo può scrivere; un nome file relativo viene risolto a partire dalla directory di lavoro corrente. Usa un percorso assoluto quando hai bisogno di una destinazione fissa.
Eseguire il rendering di HTML con CSS e immagini
Includi un blocco <style> ed elementi immagine nella stringa HTML prima di passarla al generatore. HtmlRenderer.PdfSharp può eseguire il rendering di CSS di base, ma il suo output non è garantito che corrisponda a un browser. Controlla i documenti che usano selettori avanzati, caratteri personalizzati o posizionamento complesso.
Un’origine immagine deve essere disponibile per l’applicazione durante la conversione. Gli URL di immagini esterne necessitano dell’accesso alla rete da quel processo. Per le immagini locali, usa un formato di origine e un percorso supportati dalla versione del pacchetto nel tuo progetto, e assicurati che il processo possa leggerla. Se manca un’immagine, controlla che la sua origine sia corretta e accessibile. Lo screenshot disponibile non ha potuto essere confermato rispetto a questo esempio, quindi viene omesso.
Limitazioni e risoluzione dei problemi
Il rendering da HTML a PDF differisce dall’apertura della stessa pagina in un browser. Mantieni il markup ben formato, usa stili supportati dal renderer e ispeziona il PDF generato per eventuali cambiamenti di layout. I layout complessi e i CSS avanzati potrebbero non essere renderizzati come previsto.
Se il PDF manca, controlla il percorso di output e l’accesso in scrittura dell’applicazione alla sua directory. Se mancano degli stili, riduci l’HTML e riaggiungi i CSS per fasi. Se manca un’immagine, conferma che il suo URL o la sua origine locale sia disponibile durante la conversione. Questi controlli aiutano a distinguere un problema di percorso o di accesso alle risorse da una differenza di rendering.
FAQ
- Cosa fa HtmlRenderer.PdfSharp? Esegue il rendering di contenuti HTML in pagine PDF usando PdfSharp, consentendo a un’applicazione C# di salvare documenti generati dal markup.
- Posso usare i CSS? I CSS di base sono supportati. I CSS avanzati e i layout complessi possono apparire diversi da un browser, quindi controlla il PDF risultante.
- Come funzionano le immagini? L’origine dell’immagine deve essere disponibile per il renderer durante la conversione. Gli URL esterni richiedono l’accesso alla rete dall’applicazione; le origini locali richiedono un percorso che il processo può leggere.
- Posso personalizzare il PDF? Imposta le dimensioni della pagina tramite l’API di generazione PDF e regola l’HTML e gli stili supportati. Controlla l’API per altre opzioni nella tua versione installata.
- Cosa devo aspettarmi dall’HTML complesso? Il renderer supporta un sottoinsieme di HTML e CSS. Prova il tuo documento effettivo e semplifica o regola il markup quando il suo aspetto differisce dalla tua intenzione.