Come evidenziare PDF e convertire in HTML con GroupDocs
Evidenziare il testo all’interno di un PDF e trasformare il risultato in una pagina HTML stilizzata è una necessità comune per revisioni legali, e‑learning e pubblicazione digitale. In questo tutorial scoprirai come evidenziare pdf con GroupDocs.Redaction per .NET e poi generare un output HTML evidenziato che può essere incorporato in portali web o sistemi di gestione dell’apprendimento. La guida percorre la configurazione dell’ambiente, l’inizializzazione dei percorsi, la generazione della pagina HTML e la gestione degli URL delle risorse — il tutto con snippet C# pronti all’uso.
Risposte rapide
- Quale libreria gestisce l’evidenziazione? GroupDocs.Redaction per .NET.
- Quali versioni di .NET sono supportate? .NET Framework 4.6+, .NET Core 3.1+, .NET 5/6/7.
- È necessaria una licenza per la produzione? Sì – una licenza commerciale rimuove i limiti di prova.
- Posso elaborare PDF di grandi dimensioni (centinaia di pagine)? Sì, l’API trasmette le pagine in streaming e utilizza meno di 200 MB di RAM per un file di 500 pagine.
- L’output HTML è interattivo? L’HTML generato è statico ma completamente stilizzato; è possibile aggiungere JavaScript per l’interattività.
Cos’è l’evidenziazione del testo PDF?
L’evidenziazione del testo PDF è il markup visivo che disegna una sovrapposizione colorata dietro i caratteri selezionati, facendoli risaltare quando il documento viene visualizzato. GroupDocs.Redaction aggiunge questa sovrapposizione direttamente al flusso di contenuto del PDF, preservando il layout originale mentre espone gli evidenziamenti nell’HTML esportato.
Perché usare GroupDocs.Redaction per .NET?
GroupDocs.Redaction supporta oltre 70 formati di input e output, elabora PDF fino a 500 pagine senza caricare l’intero file in memoria e offre un’API a singolo passaggio che sia redige che evidenzia. Queste capacità quantificate lo rendono una scelta affidabile per pipeline documentali su scala aziendale.
Prerequisiti
- Ambiente di sviluppo: Visual Studio 2022 (o successivo) con un progetto .NET Core 3.1 / .NET 6.
- Pacchetto NuGet:
GroupDocs.Redaction(ultima versione stabile). - Conoscenze di base: sintassi C#, percorsi del file‑system e nozioni di HTML.
Come configurare GroupDocs.Redaction per .NET?
Per installare la libreria, scegli uno dei tre metodi supportati. Il comando .NET CLI aggiunge il pacchetto al file di progetto, la Console del Package Manager lo integra tramite NuGet, e l’interfaccia UI fornisce un modo grafico per sfogliare e installare. Tutti e tre gli approcci risultano nel riferimento allo stesso assembly GroupDocs.Redaction, consentendoti di iniziare a codificare subito.
Utilizzando .NET CLI:
dotnet add package GroupDocs.Redaction
Utilizzando Package Manager Console:
Install-Package GroupDocs.Redaction
Utilizzando NuGet Package Manager UI: Cerca “GroupDocs.Redaction” e fai clic su Install.
Dopo l’installazione, aggiungi una direttiva using all’inizio del tuo file C#:
using GroupDocs.Redaction;
Come funziona la classe Feature_InitializeIndexedFileInfo?
Feature_InitializeIndexedFileInfo è un helper che crea e memorizza i percorsi necessari per la cache del visualizzatore e il PDF di origine.
La classe prepara le posizioni del file‑system su cui il visualizzatore e il generatore HTML si basano. Crea una cartella cache dedicata per i file temporanei, deriva un nome di cartella dal PDF di origine e memorizza il percorso assoluto del documento originale. Queste proprietà sono esposte come membri di sola lettura per l’elaborazione a valle.
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
Come generare il percorso del file della pagina HTML?
Feature_GenerateHtmlPageFilePath genera nomi di file deterministici per ogni pagina HTML basati sul numero di pagina.
La classe costruisce un nome di file che identifica in modo univoco ogni pagina renderizzata, usando un semplice pattern p{pageNumber}.html. Poi combina questo nome con il percorso della cartella cache creata in precedenza per produrre una posizione completa nel file‑system dove l’HTML può essere salvato. Questa denominazione deterministica evita collisioni quando si elaborano PDF multi‑pagina.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_InitializeIndexedFileInfo
{
private readonly string _viewerCacheFolderPath;
private readonly string _filePath;
private readonly string _fileFolderName;
private readonly string _fileCacheFolderPath;
public Feature_InitializeIndexedFileInfo(string viewerCacheFolderPath, string filePath)
{
// Store the provided cache folder path.
_viewerCacheFolderPath = viewerCacheFolderPath;
// Store the file path.
_filePath = filePath;
// Extract and modify the file name to create a folder name.
var fileName = Path.GetFileName(_filePath);
_fileFolderName = fileName.Replace(".", "_");
// Combine paths for cache directory.
_fileCacheFolderPath = Path.Combine(viewerCacheFolderPath, _fileFolderName);
}
public string ViewerCacheFolderPath => _viewerCacheFolderPath;
public string FilePath => _filePath;
public string FileFolderName => _fileFolderName;
public string FileCacheFolderPath => _fileCacheFolderPath;
}
}
Come creare percorsi di file e URL delle risorse della pagina HTML?
Feature_GenerateHtmlPageResourceFilePathAndUrl costruisce sia il percorso fisico del file sia l’URL web corrispondente per le risorse della pagina.
Le risorse come immagini, font o file CSS richiedono sia una posizione su disco sia un URL che il browser può richiedere. Questa classe accetta un numero di pagina e un nome di risorsa, quindi restituisce una tupla contenente il percorso assoluto nel file‑system all’interno della cartella cache e un URL virtuale che può essere mappato da un server web. Usare questo approccio mantiene coerenti i riferimenti alle risorse tra le pagine generate.
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageFilePath
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageFilePath(string fileCacheFolderPath)
{
// Initialize with cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageFilePath(int pageNumber)
{
// Create a page-specific HTML file name.
string pageFileName = $"p{pageNumber}.html";
// Combine paths for the full file location.
string pageFilePath = Path.Combine(_fileCacheFolderPath, pageFileName);
return pageFilePath;
}
}
}
Applicazioni pratiche
- Revisione di documenti legali: Evidenzia clausole, esporta in HTML e consenti agli avvocati di commentare nel browser.
- Contenuti e‑learning: Converti PDF di lezioni annotate in pagine web interattive con evidenziazioni ricercabili.
- Pubblicazione digitale: Produci versioni web‑ready di riviste dove gli estratti evidenziati attirano l’attenzione del lettore.
Questi scenari beneficiano dell’streaming ad alte prestazioni fornito da GroupDocs.Redaction, permettendo di gestire migliaia di documenti al giorno.
Problemi comuni e soluzioni
| Problema | Causa | Soluzione |
|---|---|---|
| Evidenziazione non appare in HTML | Classe CSS mancante nella pagina generata | Assicurati che highlight.css del visualizzatore sia referenziato o inserisci manualmente il blocco di stile. |
| Errore di out‑of‑memory su PDF di grandi dimensioni | Uso di Document.Load senza streaming | Usa RedactorOptions con EnableStreaming = true. |
| URL delle risorse restituiscono 404 | Configurazione errata dell’URL base | Imposta RedactionViewerOptions.BaseUrl alla radice della cartella dei file statici. |
Domande frequenti
Q: Posso evidenziare più sezioni in un unico PDF contemporaneamente?
A: Sì. Passa una collezione di oggetti RedactionRegion a Redactor.Apply e ogni regione verrà evidenziata nella stessa operazione.
Q: L’API supporta l’evidenziazione basata su parole chiave?
A: Sì. Usa Redactor.Search per trovare tutte le occorrenze di un termine, poi applica una redazione di evidenziazione alle regioni risultanti.
Q: L’HTML generato è interattivo (es. click‑to‑navigate)?
A: L’output predefinito è statico, ma puoi iniettare JavaScript dopo la generazione per aggiungere navigazione, tooltip o gestori di click personalizzati.
Q: Come posso cambiare il colore dell’evidenziazione?
A: Modifica la classe CSS .redaction-highlight nell’HTML esportato o imposta la proprietà HighlightColor su RedactionOptions prima di applicare.
Q: Funzionerà con PDF più grandi di 1 GB?
A: Sì, a condizione di abilitare lo streaming e di allocare spazio temporaneo su disco sufficiente; l’API non carica mai l’intero documento in RAM.
Conclusione
Ora disponi di un flusso di lavoro completo e pronto per la produzione per come evidenziare pdf e trasformarli in pagine HTML evidenziate usando GroupDocs.Redaction per .NET. Inizializzando le informazioni indicizzate, generando percorsi HTML deterministici e gestendo gli URL delle risorse, puoi integrare questa soluzione in qualsiasi sistema di gestione documentale basato su .NET, portale di revisione legale o piattaforma e‑learning.
Ultimo aggiornamento: 2026-08-20
Testato con: GroupDocs.Redaction 23.12 per .NET
Autore: GroupDocs
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageResourceFilePathAndUrl
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageResourceFilePathAndUrl(string fileCacheFolderPath)
{
// Initialize with the cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageResourceFilePath(int pageNumber, string resourceFileName)
{
// Construct a unique name for resources.
string resFileName = GetResourceFileName(pageNumber, resourceFileName);
// Combine paths to form full resource path.
string resFilePath = Path.Combine(_fileCacheFolderPath, resFileName);
return resFilePath;
}
public string GetHtmlPageResourceUrl(int pageNumber, string resourceFileName)
{
// Generate a URL-like string for the resource.
return GetResourceFileName(pageNumber, resourceFileName);
}
private static string GetResourceFileName(int pageNumber, string resourceFileName)
{
// Construct resource names based on page number and file name.
var resFileName = $"p{pageNumber}_{resourceFileName}";
return resFileName;
}
}
}