Aspose.PDF FOSS for .NET jest darmową, na licencji MIT biblioteką .NET do odczytywania, tworzenia i manipulowania dokumentami PDF. Udostępniona na liberalnej licencji open-source, usuwa tradycyjną barierę do możliwości PDF klasy korporacyjnej — każda funkcja w bibliotece jest dostępna bez konieczności zakupu licencji komercyjnej.
Czym jest Aspose.PDF FOSS dla .NET?
Biblioteka jest przeznaczona dla .NET 8 i nowszych. Została opublikowana w NuGet pod identyfikatorem pakietu Aspose.Pdf.Foss i może być dodana do dowolnego projektu .NET 8+ za pomocą jednego polecenia:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
Główną przestrzenią nazw jest Aspose.Pdf, a powiązane przestrzenie nazw to Aspose.Pdf.Text, Aspose.Pdf.Forms i Aspose.Pdf.Facades. Biblioteka udostępnia 805 publicznych klas API, popartych 7 488 udokumentowanymi roszczeniami i 100 fragmentami kodu wyodrębnionymi bezpośrednio z zestawu testów.
Kluczowe możliwości
API obejmuje pełny cykl życia dokumentu PDF:
- Tworzenie i ładowanie dokumentu —
Document.Create()tworzy pusty dokument;Document.Open(data)ładuje istniejący PDF z tablicy bajtów lub strumienia. - Dostęp do stron i zawartości — kolekcja
Pageszapewnia indeksowany dostęp (od 1) do poszczególnych stron, z których każda udostępnia adnotacje, operatory i strumienie zawartości. - Ekstrakcja tekstu —
TextFragmentAbsorberodwiedza stronę i zbiera każdy fragment tekstu, z opcjonalnym filtrowaniem według frazy wyszukiwania oraz obsługą wyrażeń regularnych. - Interaktywne akcje —
PdfAction.CreateUri,PdfAction.CreateGoTo,PdfAction.CreateJavaScriptiPdfAction.CreateLaunchobejmują standardowe typy akcji PDF. - Adnotacje —
AnnotationCollection.AddLinkAnnotationdołącza adnotację linku z powiązaną akcją do dowolnego prostokątnego obszaru na stronie. - Formularze — przestrzeń nazw
Aspose.Pdf.FormsiAspose.Pdf.Facadeszapewniają dostęp do pól AcroForm, formatowania wyglądu oraz rozszerzeń JavaScript na poziomie pól.
Otwieranie dokumentu i dodawanie linku
Poniższy przykład demonstruje wzorzec round‑trip: utwórz nowy dokument PDF, dodaj adnotację linku akcji URI na pierwszej stronie, zapisz do strumienia i ponownie wczytaj, aby zweryfikować, że adnotacja pozostaje.
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com
Statyczna metoda Document.Open przyjmuje byte[] lub strumień. doc.Pages[1] uzyskuje dostęp do pierwszej strony za pomocą indeksu zaczynającego się od 1 — tej samej konwencji indeksowania używanej w całej bibliotece. Po zapisaniu do MemoryStream dokument może zostać ponownie wczytany i wszystkie adnotacje zostają zachowane.
Wyszukiwanie tekstu na stronie
TextFragmentAbsorber umożliwia wyszukiwanie słów kluczowych w strumieniu zawartości dowolnej strony. Przekaż frazę wyszukiwania do konstruktora, aby ograniczyć wyniki, lub użyj przeciążenia bez argumentów, aby zebrać wszystkie fragmenty:
using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text}");
}
Każdy TextFragment w powstałej kolekcji udostępnia właściwości, w tym Text, FontSize oraz dane pozycyjne, co ułatwia budowanie przepływów pracy wyszukiwania, podświetlania lub redakcji na bazie wyodrębnionych fragmentów.
Licencja MIT i otwarty rozwój
Wszystkie źródła są publikowane na GitHub i dystrybuowane na licencji MIT. Nie ma znaku wodnego wersji ewaluacyjnej, limitu użycia ani oddzielnego pliku licencyjnego do zarządzania. Właściwość Document.IsLicensed zawsze zwraca true w wersji FOSS.
Pakiet jest obecnie w wersji 0.1.0-alpha, odzwierciedlając aktywny rozwój. Powierzchnia API jest już znaczna — 805 klas, 7 488 roszczeń — a oznaczenie alfa sygnalizuje, że sygnatury API mogą ewoluować przed wydaniem wersji 1.0.