PDFium Delphi Component to kompleksowa, profesjonalna biblioteka komponentów, która zapewnia potężne możliwości przetwarzania i przeglądania plików PDF dla aplikacji Delphi i C++Builder. Wykorzystuje silnik renderowania PDFium do renderowania stron i odczytu dokumentów, a wszystko to, czego ten silnik nie zapewnia, implementuje w Object Pascal
To rozróżnienie ma znaczenie przy ocenie biblioteki. PDFium rysuje strony, wyodrębnia tekst i odczytuje istniejące struktury. Nie potrafi podpisać dokumentu, zapisać szyfrowania, zwalidować standardu PDF ani wyemitować rewizji zlinearyzowanej lub przyrostowej. PDFium Delphi Component dostarcza około 115 000 linii Object Pascal w 55 jednostkach, z czego ponad 62 000 z tych linii znajduje się w 36 jednostkach, które w ogóle nie mają odpowiednika w API PDFium — kryptografia, podpisy, szyfrowanie, zgodność ze standardami, serializacja PDF, wymiana danych formularzy, układ i kształtowanie tekstu. Wszystko to jest dostarczane w postaci kodu źródłowego
Biblioteka składa się z trzech zarejestrowanych komponentów: TPdf do przetwarzania i manipulacji dokumentami ze 475 publicznymi elementami członkowskimi, TPdfView do interaktywnej prezentacji wizualnej ze 152 oraz TPdfThumbnailView do nawigacji po stronach. Niezależnie od tego, czy potrzebujesz zbudować prostą przeglądarkę PDF, przepływ pracy z podpisanymi dokumentami, potok konwersji archiwalnej czy kompletny system zarządzania dokumentami, PDFium Delphi Component dostarcza potrzebne narzędzia i elastyczność
Poniższe możliwości nie mają odpowiednika w API C PDFium. Każdą z nich implementuje PDFium Delphi Component w Object Pascal, zweryfikowaną względem opublikowanych klauzul ISO, ETSI, IETF lub FIPS i dostępną w postaci kodu źródłowego
Kompletne podpisywanie, a nie tylko odczyt podpisów. PDFium może zgłosić, że słownik podpisu istnieje; PDFium Delphi Component taki słownik tworzy
SignPades, SignPadesToStream i SignPadesBytes/Certs, /OCSPs i /CRLs, słowniki VRI per podpis oraz znacznik /Extensions /ESIC/SubFilter /ETSI.RFC3161 obejmujące cały plik, dla B-LTAICmsSigner, który może zaimplementować każdy inny backendPreparePadesRemoteSignature i CompletePadesRemoteSignature dzielą operację tak, aby klucz prywatny mógł pozostać w usłudze zdalnej lub module sprzętowymValidatePades raportuje najwyższy poziom bazowy, którego osiąga dokument, plus kody problemów na poziomie klauzul; ValidatePadesTrust i ValidatePadesTrustAsync dodają sprawdzanie zaufania łańcucha certyfikatówSignPadesWithPdfA konwertuje do PDF/A-4 i podpisuje w jednym wywołaniu, wg EN 319 142-1 Annex A.7PDFium otwiera zaszyfrowane pliki. Nie zapisuje szyfrowania. PDFium Delphi Component implementuje stronę zapisu zgodnie z ISO 32000-2 i jego specyfikacjami technicznymi
SaveAsEncrypted z derywacją kluczy V=5 / R=5 / R=6, w tym iteracją haszowania algorytmu 2.B, oraz wpisami słownika /O /U /OE /UE /Perms/Length i przebudowaną tablicą cross-reference/AuthCode ISO/TS 32004 — CMS AuthenticatedData z derywacją kluczy HKDF, owijaniem kluczy i weryfikacją HMACSześć rodzin standardów ISO, każda z walidatorem zwracającym kody wyników na poziomie klauzul oraz dopasowaną ścieżką zapisu lub wstrzykiwania znaczników
Silnik oferuje jeden sekwencyjny zapis całego pliku. Aplikacje często potrzebują więcej, więc PDFium Delphi Component zapisuje własne rewizje na szczycie semantycznego wyjścia silnika
SaveAsLinearized produkuje pliki Fast Web View z grupowaniem pierwszej strony, dwiema sekcjami cross-reference oraz tablicami podpowiedzi przesunięć stron i obiektów współdzielonych wg Annex FSaveAsObjectStream grupuje kwalifikujące się obiekty do /ObjStm z porządkiem lokalnym dla stron i kompletnym pokryciem cross-reference typu 2BeginIncrementalSave i CommitIncrementalSave dołączają tylko zmienione i nowe obiekty pośrednie do zaszyfrowanych lub niezaszyfrowanych źródeł, zachowując poprzednie wyjście bajt po bajcie wraz z /Prev, /Encrypt, /Info i trwałym /ID; zatwierdzenie bez zmian nie zwiększa plikuSaveAsRepaired zapisuje kopię jednorewizyjną i ponownie weryfikuje ją niezależnym ścisłym ładowaniem przed dostarczeniemTPdf.PdfVersion ponownie używa stanu parsera PDFium i wykonuje wyłącznie ośmiobajtową kontrolę nagłówka zamiast ponownego parsowania dokumentu źródłowegoTPdfRandomAccessStore trzyma dane pośrednie w pamięci do SaveMemoryLimit, a następnie migruje do wyłącznego pliku tymczasowego delete-on-close; postprocessing zapisu rdzenia stosuje tę samą politykę dla wszystkich trzech obszarów roboczych, podczas gdy domyślne aktualizacje Catalog dla open-action i etykiet stron korzystają z ograniczonych okien i rzadkiego indeksu/AF wg ISO 32000-2 §7.11.4 dołączone do Catalog lub strony docelowej, z ośmioma wartościami relacji z Table 45IPdfOcrProvider przyjmuje dowolny silnik rozpoznawania — komponent dostarcza bitmapy stron i zapisuje wynikową warstwę tekstu z możliwością wyszukiwania, ze statusem per strona i pomijaniem istniejącego tekstuGetStructuredText buduje hierarchię strona / blok / linia / stylizowany przebieg z geometrii znaków i semantyki Tagged PDF; ExtractTables i ExtractDocumentTables wykrywają tabele z obramowaniem i wyrównane do białych przestrzeni, zachowują scalone zakresy, oceniają pewność i emitują CSV lub JSONBuildReflowDocument zamienia PDF o stałym układzie w drzewo węzłów, którego bezpieczne wyjście HTML zachowuje nagłówki, akapity, listy, figury, sekcje stron i zakresy tabelMeasureText i WrapText zapewniają zawijanie słów bez dodawania czegokolwiek do stronyTPdfStreamInspector dekoduje dowolne obiekty strumieni pod jawnych budżetach źródła, surowca, dekodatu, wskaźnika ekspansji i liczby strumieni, zwracając ustrukturyzowany status zamiast wyczerpywać pamięć na spreparowanym plikuSerce systemu przetwarzania PDF — TPdf obsługuje wszystkie operacje na poziomie dokumentu, w tym ładowanie, zapisywanie, ekstrakcję tekstu, przetwarzanie formularzy i zarządzanie metadanymi
Zaawansowana kontrolka wizualna, która zapewnia bogate doświadczenie przeglądania PDF z pełnymi możliwościami interakcji użytkownika
TStream na żądanie poprzez LoadCustomDocument, z politykami zgodną, ścisłą i odzyskiwania oraz ustrukturyzowaną diagnostyką xrefSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream z dołączonym profilem sRGB ICC i obsługą profili niestandardowychValidatePdfA oraz właściwość tylko do odczytu PdfAConformanceMergeFiles (łączenie wsadowe z ograniczonymi źródłami), ImportPagesByIndex (import podzbioru), ImportNPagesToOne (siatka N-up), MovePages (zmiana kolejności w miejscu)CreateXObjectFromPage i InsertFormObjectFromXObjectRenderPageProgressive i IPdfCancellationTokenTPdfProgressiveDocument, w tym rzadkie podpowiedzi zakresów bajtów, priorytetyzowane planowanie zakresów, ograniczone ponowienia, anulowanie oraz bramki dostępności dokumentu, formularzy i stronSaveAsLinearized, w tym grupowanie pierwszej strony, dwie sekcje cross-reference oraz tablice podpowiedzi przesunięć stron i obiektów współdzielonych wg Annex FSaveAsObjectStream, w tym ograniczone grupy ObjStm, porządek lokalny dla stron i kompletne pokrycie xref typu 2BeginIncrementalSave i CommitIncrementalSave, w tym zachowywanie zaszyfrowanego prefiksu, odziedziczone parametry zabezpieczeń, zatwierdzenia no-op, ścisłą walidację ponownego otwarcia, trwałe pliki dodatkowe, atomową wymianę, wycofywanie zmian oraz statystyki per zatwierdzenieTPdfRandomAccessStore i SaveMemoryLimit, w tym bezpieczne przelewanie do pliku tymczasowego, wejście/wyjście pozycjonowane oraz diagnostyka szczytu per zapisFitMode wybiera sposób umieszczenia strony w obszarze wyświetlania (powiększenie ręczne, rzeczywisty rozmiar, dopasuj do strony, dopasuj do szerokości); ponownie stosowane automatycznie przy zmianie rozmiaru lub stronyPageColor oddziela renderowane tło strony PDF od koloru otaczającej kontrolki (Color) na potrzeby przeglądarek w trybie ciemnymHighlightSearchText i ClearHighlightPageShadowSize / PageShadowColor) i obramowanie strony (PageBorderColor)LinkOptions) oraz zdarzenia OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) dla kiosków i osadzeń tylko do odczytuTPdfThumbnailView| Aspekt | Szczegóły |
|---|---|
| Silnik renderowania | Google PDFium — branżowy, sprawdzony silnik PDF |
| Obsługa PDF | Wersje PDF od 1.0 do 1.7, pliki zaszyfrowane i chronione hasłem |
| Zgodność platform | Aplikacje Windows 32-bit i 64-bit |
| Wsparcie IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) do Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Kodowanie znaków | Pełna obsługa Unicode, przetwarzanie tekstu wielojęzycznego |
| Zarządzanie pamięcią | Zoptymalizowane dla dużych dokumentów, efektywne wykorzystanie zasobów |
| Bezpieczeństwo wątków | Architektura jednowątkowa (zgodnie z wymogami PDFium) |
PDFium Delphi Component stosuje wzorzec architektury warstwowej, który czysto rozdziela odpowiedzialności i maksymalizuje możliwość ponownego wykorzystania kodu:
| Warstwa | Pliki | Odpowiedzialność |
|---|---|---|
| Komponenty VCL | PDFium.pas, FPdfThumbnail.pas | Komponenty VCL Delphi (TPdf, TPdfView, TPdfThumbnailView) ze wsparciem czasu projektowania |
| Powiązania API | FPdfView.pas, FPdfDoc.pas, FPdfText.pas, FPdfEdit.pas, FPdfAnnot.pas, FPdfFormFill.pas, FPdfPageOps.pas, FPdfAttachment.pas, FPdfSignature.pas, FPdfStructTree.pas, FPdfDataAvail.pas, FPdfExtensions.pas, FPdfFWLEvent.pas, FPdfCompress.pas, FPdfUtils.pas | Deklaracje wskaźników funkcji dla wywołań biblioteki PDFium DLL |
| Potok PDF/A | FPdfPdfa.pas | Tworzenie PDF/A-1b (wstrzykiwanie XMP, sRGB ICC OutputIntent, aktualizacja Catalog) i walidacja (wykrywanie zgodności, wyliczanie problemów) |
| Infrastruktura asynchroniczna | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken oraz pomocnik TPdfFuture<T> dla długo wykonywanych zadań renderowania i eksportu |
| Pomocniki geometrii | FPdfMatrix.pas | Obiektowy wrapper wokół FS_MATRIX z pomocnikami Translate, Scale, Rotate, Flip, Skew i Multiply |
| Operacje na stronach | FPdfPageOps.pas | Wrappery dla FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, skalowalne planowanie wsadowe z oparciem w pliku, plus pomocniki Form-XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Panel boczny miniatur | FPdfThumbnail.pas | TPdfThumbnailView — przewijalny panel miniatur poszczególnych stron z najechaniem, zaznaczeniem i nawigacją OnPageClick |
| Silnik natywny | DLLs\Win32|Win64\pdfium.dll i pdfium.v8.dll | Natywny silnik renderowania Google PDFium z opcjonalnymi kompilacjami z włączonym V8 |
TPdf i 36 gotowych do uruchomienia projektów skraca czas tworzenia oprogramowaniaPDFium Delphi Component został zaprojektowany z myślą o natychmiastowej produktywności. Biblioteka komponentów obejmuje:
Niezależnie od tego, czy budujesz prostą przeglądarkę PDF, czy złożony system przetwarzania dokumentów, PDFium Delphi Component stanowi podstawę profesjonalnej funkcjonalności PDF w aplikacjach Delphi i C++Builder