Jak podświetlić PDF i przekonwertować na HTML przy użyciu GroupDocs
Podświetlanie tekstu w pliku PDF i przekształcanie wyniku w stylową stronę HTML jest powszechnym wymaganiem w przeglądzie prawnym, e‑learningu i publikacji cyfrowych. W tym samouczku dowiesz się how to highlight pdf przy użyciu GroupDocs.Redaction dla .NET, a następnie wygenerujesz podświetlony kod HTML, który można osadzić w portalach internetowych lub systemach zarządzania nauczaniem. Poradnik przeprowadza przez konfigurację środowiska, inicjalizację ścieżek, generowanie stron HTML oraz obsługę URL‑ów zasobów — wszystko z gotowymi fragmentami C#.
Szybkie odpowiedzi
- Jaka biblioteka obsługuje podświetlanie? GroupDocs.Redaction for .NET.
- Które wersje .NET są obsługiwane? .NET Framework 4.6+, .NET Core 3.1+, .NET 5/6/7.
- Czy potrzebna jest licencja do produkcji? Tak – licencja komercyjna usuwa ograniczenia wersji próbnej.
- Czy mogę przetwarzać duże pliki PDF (setki stron)? Tak, API strumieniuje strony i używa mniej niż 200 MB RAM dla pliku o 500 stronach.
- Czy wyjściowy HTML jest interaktywny? Generowany HTML jest statyczny, ale w pełni stylowany; możesz dodać JavaScript, aby uzyskać interaktywność.
Czym jest podświetlanie tekstu w PDF?
Podświetlanie tekstu w PDF to wizualny znacznik, który rysuje kolorową nakładkę za wybranymi znakami, sprawiając, że wyróżniają się one podczas przeglądania dokumentu. GroupDocs.Redaction dodaje tę nakładkę bezpośrednio do strumienia zawartości PDF, zachowując oryginalny układ, jednocześnie udostępniając podświetlenia w wyeksportowanym HTML.
Dlaczego warto używać GroupDocs.Redaction dla .NET?
GroupDocs.Redaction obsługuje ponad 70 formatów wejściowych i wyjściowych, przetwarza PDF‑y do 500 stron bez ładowania całego pliku do pamięci i oferuje jednoprzebiegowe API, które zarówno redaguje, jak i podświetla. Te wymierne możliwości czynią go niezawodnym wyborem dla dokumentowych przepływów na skalę przedsiębiorstwa.
Wymagania wstępne
- Środowisko programistyczne: Visual Studio 2022 (lub nowsze) z projektem .NET Core 3.1 / .NET 6.
- Pakiet NuGet:
GroupDocs.Redaction(najnowsze stabilne wydanie). - Podstawowa wiedza: składnia C#, ścieżki systemu plików oraz podstawy HTML.
Jak skonfigurować GroupDocs.Redaction dla .NET?
Aby zainstalować bibliotekę, wybierz jedną z trzech obsługiwanych metod. Polecenie .NET CLI dodaje pakiet do pliku projektu, Package Manager Console integruje go przez NuGet, a interfejs UI zapewnia graficzny sposób przeglądania i instalacji. Wszystkie trzy podejścia skutkują odwołaniem do tej samej biblioteki GroupDocs.Redaction, umożliwiając natychmiastowe rozpoczęcie kodowania.
Użycie .NET CLI:
dotnet add package GroupDocs.Redaction
Użycie Package Manager Console:
Install-Package GroupDocs.Redaction
Użycie interfejsu NuGet Package Manager UI: Wyszukaj “GroupDocs.Redaction” i kliknij Install.
Po instalacji dodaj dyrektywę using na początku swojego pliku C#:
using GroupDocs.Redaction;
Jak działa klasa Feature_InitializeIndexedFileInfo?
Feature_InitializeIndexedFileInfo jest pomocnikiem, który tworzy i przechowuje ścieżki potrzebne dla pamięci podręcznej podglądu i źródłowego PDF.
Klasa przygotowuje lokalizacje w systemie plików, na których opiera się podgląd i generator HTML. Tworzy dedykowany folder pamięci podręcznej dla plików tymczasowych, wyprowadza nazwę folderu z źródłowego PDF i przechowuje bezwzględną ścieżkę oryginalnego dokumentu. Te właściwości są udostępniane jako członkowie tylko do odczytu dla dalszego przetwarzania.
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
Jak wygenerować ścieżkę pliku strony HTML?
Feature_GenerateHtmlPageFilePath generuje deterministyczne nazwy plików dla każdej strony HTML na podstawie numerów stron.
Klasa tworzy nazwę pliku, która jednoznacznie identyfikuje każdą renderowaną stronę, używając prostego wzorca p{pageNumber}.html. Następnie łączy tę nazwę z wcześniej utworzoną ścieżką folderu pamięci podręcznej, aby uzyskać pełną lokalizację w systemie plików, w której można zapisać HTML. To deterministyczne nazewnictwo zapobiega kolizjom przy przetwarzaniu wielostronicowych PDF‑ów.
// ```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;
}
}
Jak utworzyć ścieżki plików zasobów strony HTML oraz URL‑e?
Feature_GenerateHtmlPageResourceFilePathAndUrl tworzy zarówno fizyczną ścieżkę pliku, jak i odpowiadający jej adres URL dla zasobów strony.
Zasoby takie jak obrazy, czcionki czy pliki CSS wymagają zarówno lokalizacji na dysku, a także URL, który przeglądarka może żądać. Ta klasa przyjmuje numer strony i nazwę zasobu, a następnie zwraca krotkę zawierającą bezwzględną ścieżkę w systemie plików wewnątrz folderu pamięci podręcznej oraz wirtualny URL, który może być mapowany przez serwer WWW. Dzięki temu podejściu odwołania do zasobów pozostają spójne we wszystkich generowanych stronach.
// ```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;
}
}
}
Praktyczne zastosowania
- Przegląd dokumentów prawnych: Podświetlaj klauzule, eksportuj do HTML i pozwól prawnikom komentować w przeglądarce.
- Treści e‑learningowe: Konwertuj oznaczone wykłady PDF na interaktywne strony internetowe z możliwością wyszukiwania podświetleń.
- Publikacje cyfrowe: Twórz wersje gotowe do publikacji w sieci magazynów, w których podświetlone fragmenty przyciągają uwagę czytelnika.
Scenariusze te korzystają z wysokowydajnego strumieniowania, które zapewnia GroupDocs.Redaction, umożliwiając obsługę tysięcy dokumentów dziennie.
Częste problemy i rozwiązania
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Podświetlenie nie pojawia się w HTML | Brak klasy CSS w wygenerowanej stronie | Upewnij się, że highlight.css podglądu jest odwołany lub wstaw blok stylów ręcznie. |
| Błąd braku pamięci przy dużych PDF‑ach | Użycie Document.Load bez strumieniowania | Użyj RedactorOptions z EnableStreaming = true. |
| Adresy URL zasobów zwracają 404 | Nieprawidłowa konfiguracja bazowego URL | Ustaw RedactionViewerOptions.BaseUrl na katalog główny folderu z plikami statycznymi. |
Najczęściej zadawane pytania
Q: Czy mogę podświetlić wiele sekcji w jednym PDF jednocześnie?
A: Tak. Przekaż kolekcję obiektów RedactionRegion do Redactor.Apply, a każda region zostanie podświetlony w tej samej operacji.
Q: Czy API obsługuje podświetlanie oparte na słowach kluczowych?
A: Tak. Użyj Redactor.Search, aby znaleźć wszystkie wystąpienia terminu, a następnie zastosuj podświetlenie redakcyjne do uzyskanych regionów.
Q: Czy wygenerowany HTML jest interaktywny (np. kliknij‑aby‑przejść)?
A: Domyślny wynik jest statyczny, ale możesz wstrzyknąć JavaScript po generowaniu, aby dodać nawigację, podpowiedzi lub własne obsługi kliknięć.
Q: Jak mogę zmienić kolor podświetlenia?
A: Zmodyfikuj klasę CSS .redaction-highlight w wyeksportowanym HTML lub ustaw właściwość HighlightColor w RedactionOptions przed zastosowaniem.
Q: Czy to będzie działać dla PDF‑ów większych niż 1 GB?
A: Tak, pod warunkiem włączenia strumieniowania i przydzielenia wystarczającej tymczasowej przestrzeni dyskowej; API nigdy nie ładuje całego dokumentu do pamięci RAM.
Podsumowanie
Masz teraz kompletny, gotowy do produkcji przepływ pracy dla how to highlight pdf i przekształcania ich w podświetlone strony HTML przy użyciu GroupDocs.Redaction dla .NET. Inicjalizując informacje o zindeksowanych plikach, generując deterministyczne ścieżki HTML i obsługując URL‑e zasobów, możesz zintegrować to rozwiązanie z dowolnym systemem zarządzania dokumentami opartym na .NET, portalem przeglądu prawniczego lub platformą e‑learningową.
Ostatnia aktualizacja: 2026-08-20
Testowano z: GroupDocs.Redaction 23.12 for .NET
Autor: 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;
}
}
}