Komponenty główne
- TPdf — główny komponent obsługi dokumentów PDF do otwierania, nawigacji, ekstrakcji tekstu i edycji dokumentów PDF
- TPdfView — wizualny komponent do wyświetlania i interakcji ze stronami PDF
- TPdfReadingSession — komponent orkiestracji czytania na głos dla silników TTS hosta i śledzenia słów w TPdfView
- TPdfThumbnailView — przewijalny boczny panel miniatur do nawigacji po stronach
Operacje na dokumentach
- Ładowanie dokumentów — ładowanie plików PDF z dysku, strumieni pamięci, tablic bajtów lub adapterów TStream na żądanie poprzez
LoadCustomDocument. PDFium odczytuje bloki na żądanie, dzięki czemu wielogigabajtowe dokumenty i źródła zdalne lub bazodanowe nie wymagają wstępnej kopii w pamięci.- Ochrona hasłem — otwieranie dokumentów PDF chronionych hasłem i raportowanie efektywnych
UserPermissionsdla uwierzytelnionej sesji- Tworzenie dokumentów — budowanie nowych dokumentów PDF od zera za pomocą
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageiCreatePath- Zapisywanie dokumentów — zapisywanie zmodyfikowanych dokumentów z różnymi opcjami (przyrostowy, usuwanie zabezpieczeń) oraz jawnymi docelowymi wersjami PDF od PDF 1.0 do PDF 1.7
- Wyjście PDF/A-1b —
SaveAsPdfA/SaveAsPdfAToStreamprzetwarza wynik zapisu bazowego poprzez aktualizację przyrostową, która wstrzykuje strumień metadanych XMP, OutputIntent sRGB ICC oraz zaktualizowany Catalog dokumentu, tak aby wynik był zgodny z PDF/A-1b. Niestandardowe profile ICC są obsługiwane poprzezTPdfASaveOptions.IccProfileData.- Walidacja PDF/A —
ValidatePdfAoraz właściwość tylko do odczytuPdfAConformanceskanują otwarty dokument w poszukiwaniu znaczników XMPpdfaid, OutputIntent z osadzonym ICC, obecności szyfrowania i raportują poziom zgodności (pac1a,pac1b,pac2b,pac3b,pacNonelubpacUnknown) wraz z listą wpisówTPdfAValidationIssueopisujących każdy wykryty problem- Walidator zgodności wersji PDF — gdy SaveAs jest skierowane na PDF 1.0 do PDF 1.7, zapis odrzuca każdy wpis słownika, filtr, podtyp adnotacji, typ akcji, czcionkę, przestrzeń kolorów lub parametr szyfrowania wprowadzony po wybranej wersji docelowej (np. JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, adnotacje Polygon / Caret / Watermark / Redact, akcje JavaScript / Trans / SetState)
- Kompresja strumieni — automatyczna kompresja FlateDecode gwarantuje, że wszystkie strumienie PDF są optymalnie skompresowane podczas zapisywania; ustaw
Compressed := False, aby zrezygnować w potokach debugowania- Łączenie dokumentów — importowanie stron z innych dokumentów PDF
- Import podzbioru stron —
ImportPagesByIndexkopiuje jawną tablicę indeksów liczonych od zera z dokumentu źródłowego, gdzie InsertAt = 0 wstawia przed stroną 1, a InsertAt = PageCount dołącza na końcu. Pusta tablica indeksów importuje każdą stronę źródłową.- Kompozycja N-up —
ImportNPagesToOnezwraca zupełnie nowyTPdf, którego strony są kompozytami NumX×NumY stron dokumentu źródłowego, o rozmiarze w jednostkach użytkownika PDF (1 jednostka = 1/72 cala)- Zmiana kolejności stron —
MovePageszmienia kolejność stron w miejscu, używając tablicy indeksów liczonych od zera oraz indeksu docelowego dla pierwszej przeniesionej strony- Ponowne użycie strony Form XObject —
CreateXObjectFromPagetworzy wielokrotnie używalny uchwytTPdfXObjectz dowolnej strony innego dokumentu;InsertFormObjectFromXObjectwstawia JEDNĄ kopię opakowanej strony do bieżącej strony. Idealne dla znaków wodnych, nakładek szablonowych i procesów typu „stempluj jedną stronę na wielu". Obiekt strony docelowej może być pozycjonowany, skalowany i obracany poprzezFPDFPageObj_SetMatrixoraz pomocnikiTPdfMatrix.- Zarządzanie stronami — dodawanie, usuwanie i manipulacja poszczególnymi stronami;
AddPage(0, ...)wstawia pierwszą stronę i natychmiast ją aktywuje- Pola strony — odczyt i zapis MediaBox, CropBox, BleedBox, TrimBox i ArtBox na bieżącej stronie
- Język Catalog — odczyt i zapis języka dokumentu zapisanego we wpisie /Lang w Catalog
- Identyfikatory plików trailera — odczyt stałych i zmiennych wpisów /ID trailera jako binarne bajty
- Akcje JavaScript dokumentu — wyliczanie nazw i skryptów akcji JavaScript drzewa nazw na poziomie dokumentu
- Drzewo struktury Tagged PDF — inspekcja logicznych elementów struktury, tekstu dostępności, języka, identyfikatorów marked-content i hierarchii stron Tagged PDF
- Viewer Preferences — odczyt
PrintCopies,PrintPageRanges,PrintScalingiPrintPaperHandlingze słownika viewer-preference dokumentu; zapisywane pliki PDF domyślnie ustawiają akcję otwarcia pierwszej strony Fit Height
Operacje na tekście
- Ekstrakcja tekstu — wydobywanie tekstu ze stron PDF z dokładnością na poziomie znaków poprzez właściwości
Text,TextInRectangle, indeksowaneCharacter,CharacterRectangleiCharacterOrigin- Jednostki czytania na poziomie zdań - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits i BuildReadingUnits udostępniają rekordy TPdfReadingUnit wielkości zdania dla zsynchronizowanego słuchania TTS
- Wyróżnianie czytania słowo po słowie -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowMapuje przesunięcie znaku strony na zawierający je TPdfWordBox, wyróżnia go i zwraca indeks słowa; Wyróżnia TPdfWordBox jako bieżące wypowiadane słowo w TPdfView; Czyści bieżącą nakładkę kursora czytania słowo po słowie w TPdfView; Steruje kolorem nakładki używanej przez bieżący kursor czytania słowo po słowie; Określa, czy TPdfView przewija bieżące wypowiadane słowo do widoku podczas śledzenia czytania- Orkiestracja sesji czytania na głos —
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChariEstimateSpokenWordIndexkoordynują silniki TTS hosta, segmenty mowy, wywołania zwrotne pozycji słów, szacowane tempo, wstrzymywanie / wznawianie oraz aktualizacje kursora słów TPdfView- Wyszukiwanie tekstu — znajdowanie tekstu z opcjami uwzględnienia wielkości liter, całych słów i wyszukiwania kolejnych wystąpień przy użyciu
FindFirst,FindNext,FindPrevious- Nakładka podświetlenia wyników wyszukiwania —
TPdfView.HighlightSearchTextskanuje bieżącą wyświetlaną stronę i nakłada rzeczywistą nakładkęHighlightColorz mieszaniem alfa nad każdym dopasowaniem przy każdym przerysowaniu, zwracając liczbę dopasowań.ClearHighlightusuwa nakładkę; przejście na inną stronę usuwa ją automatycznie, ponieważ dopasowania są specyficzne dla strony.HighlightColordomyślnie ma wartośćclYellowi jest opublikowane, więc aplikacje mogą je stylizować.- Właściwości znaków — dostęp do rozmiaru, wagi, kąta i pozycjonowania czcionki dla poszczególnych znaków za pomocą indeksowanych właściwości
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHypheniCharacterMapError- Obsługa znaków europejskich —
AddTextautomatycznie ładuje i buforuje pasującą systemową czcionkę TrueType przed utworzeniem obiektu tekstowego, dzięki czemu akcentowane znaki czeskie, francuskie, niemieckie, hiszpańskie, portugalskie, polskie i tureckie, których wbudowane standardowe czcionki PDFium nie potrafią reprezentować, są teraz poprawnie renderowane bez żadnych zmian w kodzie- Dodawanie tekstu — dodawanie nowego tekstu do stron PDF z niestandardowymi czcionkami, kolorami, przezroczystością i obrotem
- Pozycjonowanie obiektów tekstowych — ustawianie pozycji per-znak dla istniejących obiektów tekstowych poprzez
SetTextPositionsiTPdfSingleArray- Informacje o czcionce — pobieranie właściwości czcionki, w tym nazwy rodziny, statusu osadzenia, kąta kursywy, ascent / descent oraz surowych danych czcionki dla każdego obiektu strony
Obsługa adnotacji
- Typy adnotacji — wsparcie dla tekstu, linku, podświetlenia, podkreślenia, przekreślenia i wielu innych typów adnotacji
- Tworzenie adnotacji — programowe tworzenie nowych adnotacji
- Edycja adnotacji — modyfikacja istniejących właściwości adnotacji, w tym koloru, przezroczystości i treści
- Adnotacje linków — obsługa linków wewnętrznych i zewnętrznych z obsługą akcji
Obsługa formularzy
- Akcesory do głosowego wypełniania formularzy - FocusedFormFieldValue, FocusedFormFieldName i FocusedFormFieldDetails w TPdf oraz TPdfView udostępniają wartość, nazwę i TPdfFormFieldInfo bieżącego logicznego pola formularza dla wypełniania klawiaturą lub głosem
- Typy formularzy — obsługa formularzy AcroForm i XFA
- Wypełnianie formularzy — interaktywne wypełnianie formularzy z obsługą JavaScript
- Wybór biblioteki V8 DLL — ustaw
EnableV8Engineprzed załadowaniem, aby użyćpdfium.v8.dllz odpowiedniego folderuDLLs\Win32lubDLLs\Win64, oraz sprawdzaj dostępność pomocników V8/XFA przezV8FeaturesAvailable,XfaBStrHelpersAvailableiGetRecommendedV8Flags- Dostęp do pól — odczyt i zapis wartości pól formularzy według indeksu lub pozycji
- Informacje o polach — dostęp do typu pola, flag, nazwy i innych właściwości
- Flagi pól — aktualizacja flag pól AcroForm według indeksu lub pozycji poprzez
SetFormFieldFlags/SetFormFieldFlagsAt, w tym flag tylko do odczytu, wymaganych, hasła i wyboru wielokrotnego- Spłaszczanie formularzy —
GenerateFormAppearancesregeneruje strumień wyglądu /AP dla każdego widżetu formularza na każdej stronie, aFlattenPage/FlattenAllPageswypala adnotacje i pola formularzy w statyczną zawartość strony (nieedytowalną)- Zaznaczanie tekstu i Undo / Redo w widżecie formularza — na sfokusowanym widżecie AcroForm widok udostępnia
GetSelectedFormText(aktualnie zaznaczony tekst),SelectAllFormText(zaznacz każdy znak) orazFormUndo/FormRedo/FormCanUndo/FormCanRedo(sterują historią edycji per-widżet w PDFium). Wszystkie sześć metod bezpiecznie zwraca, gdy widok jest nieaktywny lub żaden widżet nie jest sfokusowany.
Operacje na obrazach
- Ekstrakcja obrazów — wyodrębnianie bitmap ze stron PDF za pomocą indeksowanej właściwości
Bitmap; iterujBitmapCount, aby zapisać każdy obraz na dysku- Wstawianie JPEG —
AddJpegImageprzyjmuje TStream surowych bajtów JPEG i osadza obraz jako XObject /DCTDecode bez ponownego kodowania- Obsługa Picture —
AddPictureprzyjmuje obiektTPicturez automatyczną konwersją formatu poprzez zarejestrowane klasy graficzne VCL/LCL- Bezpośrednie wstawianie obrazów —
AddImage(FileName)rozpoznaje każdy format zarejestrowany w jednostkach graficznych VCL lub LCL (BMP, PNG przez PngImage, JPG, ...) i współdzieli potok AddPicture.AddImage(TBitmap)pomija pośrednika TPicture, co upraszcza wywołujących, którzy już posiadają TBitmap z renderowania lub generowania wsadowego.- Generowanie miniatur — generowanie bitmap miniatur bieżącej strony przez właściwość
Thumbnailalbo renderowanie dowolnej strony numerowanej od 1 przezTPdf.RenderPageThumbnailbez zmianyPageNumber- Profil ICC obrazu — obiekty obrazów na stronie udostępniają osadzone dane profilu ICC, gdy są obecne (powiązanie dla
FPDFImageObj_GetIccProfileDataDecoded)
Jednostki pomocnicze
- Infrastruktura asynchroniczna —
FPdfAsyncudostępniaIPdfCancellationToken/IPdfCancellationTokenSourcedla semantyki kooperatywnego anulowania z UI, wielokrotnie używany singletonPdfNoCancellationTokenoraz lekki pomocnikTPdfFuture<T>, który uruchamia worker w wątku tła i wysyła kopertęTPdfFutureResult<T>z powrotem do głównego wątku, rozróżniając przypadki sukcesu, anulowania i niepowodzenia- Adapter strumienia —
TPdfStreamAdapterłączy pascalowyTStreamz callbackamiFPDF_FILEACCESSPDFium, dzięki czemuLoadCustomDocumentodczytuje bloki na żądanie, zamiast buforować cały PDF w pamięci- Kompozycja macierzy —
FPdfMatrixopakowujeFS_MATRIXPDFium obiektowym API dlaTranslate,Scale,Rotate,HorizontalFlip,VerticalFlip,CentralFlip,SkewiMultiply.Multiplytworzy migawkę sześciu elementów macierzy przed obliczeniem nowych wartości wierszy, unikając pułapki alternatywnej implementacji w Pascalu, gdzie wcześniejsze elementy zostają nadpisane w trakcie tego samego wywołania i powodują nieprawidłowe kompozycje.- Anulowalne renderowanie progresywne —
TPdf.RenderPageProgressivesteruje pętląFPDF_RenderPageBitmap_Start+RenderPage_ContinuePDFium i sprawdzaIPdfCancellationTokenmiędzy iteracjami poprzez callbackIFSDK_PAUSE, dzięki czemu długie renderowanie w wysokim DPI może zostać przerwane w połowie strony, zamiast blokować do zakończenia. ZwracaTPdfProgressiveStatuso wartościprsDone,prsCancelledlubprsFailed.- Ścieżka renderowania bez kopiowania —
RenderPage/RenderTile/RenderPageProgressivezapisują wyjście PDFium bezpośrednio do bufora DIB docelowejTBitmap, zamiast przechodzić przez bufor wewnętrzny, oszczędzając jedną kopię pamięci o rozmiarze szerokość × wysokość × 4 bajty na renderowanie — najbardziej zauważalne przy wysokim DPI (panele miniatur, eksport o jakości druku, eksport wsadowy). Ścieżka zapasowa per-scanline jest zachowana, gdy docelowy DIB nie może być bezpiecznie opakowany.- Transformacje bitmap dla słabowidzących - InvertPdfBitmap, GrayscalePdfBitmap i DuotonePdfBitmap transformują w miejscu piksele wyrenderowanego 32-bitowego TBitmap dla widoków odwróconych, szarych lub dwukolorowych dla słabowidzących
- Podgląd niskiego kontrastu na żywo —
TPdfView.OptionsobsługujereInvertireNightDuotone, aNightDuotoneInkiNightDuotonePapersterują bieżącą nocną paletą przed narysowaniem nakładek
Operacje rysowania
- Rysowanie ścieżek — tworzenie ścieżek z liniami, krzywymi Beziera i zamkniętymi kształtami
- Usuwanie obiektów — usuwanie obiektów strony i regeneracja zawartości strony z TPdf lub TPdfView
- Wypełnienie i obrys — konfiguracja trybu wypełnienia, kolorów, przezroczystości i właściwości obrysu
- Tryby mieszania — wsparcie dla różnych trybów mieszania PDF
- Style linii — konfiguracja zakończenia linii, łączenia linii i szerokości obrysu
Podpisy cyfrowe
- Wykrywanie podpisów — wykrywanie i wyliczanie podpisów cyfrowych w dokumentach PDF
- Informacje o podpisie — dostęp do zawartości podpisu, zakresu bajtów, sub-filter, powodu i czasu
- Uprawnienia MDP — sprawdzanie uprawnień wykrywania i zapobiegania modyfikacjom dokumentu
Obsługa załączników
- Dostęp do załączników — odczyt, tworzenie, modyfikacja i usuwanie osadzonych załączników plików
- Nazwy załączników — dostęp do nazw plików załączników
- Typy załączników — odczyt wartości podtypu MIME osadzonego pliku, jeśli są obecne
- Zakładki — nawigacja po zakładkach dokumentu z obsługą hierarchii poprzez tablicę
Bookmarks, pomocniki przejściaBookmarkChildren,HasBookmarkChildreniBookmarkFrom- Nazwane miejsca docelowe — dostęp do nazwanych miejsc docelowych według indeksu lub nazwy poprzez
Destination,DestinationByNameiDestinationCount- Etykiety stron — pobieranie etykiet stron dla każdej strony poprzez
PageLabel; przydatne, gdy dokumenty używają cyfr rzymskich dla stron wstępnych- Linki webowe — wykrywanie i nawigacja po linkach webowych na stronach za pomocą
WebLink,WebLinkCountiTPdfView.WebLinkAtPos- Adnotacje linków — dostęp do adnotacji linków z informacjami o akcji i miejscu docelowym poprzez
LinkAnnotation,LinkAnnotationCountiTPdfView.LinkAnnotationAtPos- Bezpieczna obsługa kliknięć linków — TPdfView wywołuje zdarzenia
OnAnnotationLinkClick/OnWebLinkClickprzed automatycznym przetwarzaniem goto / URI, przy czym akcje launch są domyślnie wyłączone. Wykrywanie kliknięcia linku działa tylko wtedy, gdy gest jest kliknięciem, a nie przeciągnięciem, używając świeżego punktu kotwicy MouseDown, dzięki czemu gesty panoramy nadal przechodzą przez istniejącą ścieżkę przewijania bez zmian.
Renderowanie
- Renderowanie wysokiej jakości — renderowanie stron do kontekstu urządzenia, bitmapy lub kafelka poprzez
RenderPage/RenderTile, z zapisem bezpośrednim bez kopiowania do docelowego bufora DIB- Anulowalne renderowanie progresywne —
RenderPageProgressivesteruje pętlą progresywną PDFium i sprawdzaIPdfCancellationTokenmiędzy iteracjami, zwracającprsDone,prsCancelledlubprsFailed. Bitmapa przechowuje częściową pracę wykonaną do momentu anulowania.- Opcje renderowania — optymalizacja tekstu LCD (
reLcd), adnotacje (reAnnotations), skala szarości i flagi trybu drukowania- Hooki Skia — niskopoziomowe powiązania
FPDF_RenderPageSkiaiFPDF_FFLDrawSkiasą dostępne, gdy wywołujący dostarczają zewnętrzny SkCanvas (zależne od eksportów dołączonej biblioteki DLL)- Wybór trybu druku — ustawianie trybów druku PDFium EMF, tylko tekst, PostScript, pass-through, image-mask i Type 42 poprzez
SetPdfPrintModezTPdfPrintMode- Nakładka asynchroniczna — TPdfView może wyświetlać opcjonalną nakładkę ładowania, podczas gdy workery zarządzane przez aplikację renderują z oddzielnymi instancjami TPdf
- Obrót strony — obsługa obrotu o 0, 90, 180 i 270 stopni (
ro0,ro90,ro180,ro270)- Wykrywanie przezroczystości — właściwość
Transparentraportuje, czy jakikolwiek obiekt na bieżącej stronie ma przezroczystość, w tym tryby mieszania i częściową alfę
Przeglądanie (TPdfView)
- Tryby wyświetlania —
dmSingleContinuous,dmTwoPageContinuousidmTwoPageContinuousWithCover(strona okładki stoi samodzielnie, a następnie kontynuuje rozkładówkami dwustronicowymi). Pomocnik na poziomie jednostkiComputeSpreadPagesudostępnia matematykę stron rozkładówek bez tworzenia przeglądarki.- Tryb dopasowania —
FitModewybiera sposób umieszczenia strony w obszarze wyświetlania:pfmNone(powiększenie ręczne),pfmActualSize(100%),pfmFitPage(cała strona mieści się w obszarze wyświetlania) ipfmFitWidth(szerokość strony pasuje do szerokości obszaru wyświetlania). Aktywny tryb dopasowania jest ponownie stosowany automatycznie przy zmianie rozmiaru i przy zmianie bieżącej strony; ustawienie Zoom bezpośrednio anuluje aktywny tryb dopasowania (FitMode powraca dopfmNone), zgodnie ze standardową konwencją przeglądarki PDF.- Sterowanie powiększeniem — zmienne powiększenie z pomocnikami per-strona
PageZoom,PageWidthZoom,PageHeightZoomiActualSizeZoom- Kolor strony —
PageColoroddziela renderowane tło strony PDF od koloru otaczającej kontrolki (Color). DomyślnieclWhite, więc strony PDF są teraz renderowane jako papierowo białe niezależnie od motywu aplikacji hosta. Przeglądarki w trybie ciemnym mogą zachować ciemny obszar przewijania, jednocześnie pozostawiając rzeczywistą stronę PDF białą (lub w dowolnym kolorze wybranym przez aplikację).- Interaktywne zaznaczanie tekstu — końcowe przeciąganie myszą w celu zaznaczenia tekstu na stronach PDF, z automatycznym przełączaniem hit-testu między zaznaczaniem a panoramą: kliknięcie na znaku rozpoczyna przeciąganie zaznaczenia, kliknięcie na białą przestrzeń przesuwa. Podwójne kliknięcie zaznacza słowo, potrójne kliknięcie zaznacza linię,
Ctrl+Azaznacza stronę (obie strony w trybie rozkładówki),Ctrl+Ckopiuje jakoCF_UNICODETEXT,Shift+strzałkirozszerza zaznaczenie, najechanie nad tekst przełącza kursor nacrIBeam, a przeciągnięcie do krawędzi przeglądarki automatycznie przewija stronę. Nowe opublikowaneSelectionColoriOnSelectionChange; nowe publiczneHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Tryby wyświetlania rozkładówki zaznaczają obie widoczne strony z łączeniem CR/LF. Domyślne menu podręczne Copy prawego przycisku myszy jest automatycznie dołączane, gdy host nie przypisał własnegoPopupMenu. Zabezpieczone flagąAllowUserTextSelectionz v1.17.0 dla hostów typu kiosk.- Mapowanie współrzędnych — konwersja między współrzędnymi urządzenia przeglądarki a współrzędnymi strony PDF za pomocą
DeviceToPage/PageToDevice, w tym przeciążenia przyjmująceTRecti zwracająceTPdfRectangle- Zaznaczanie tekstu i testowanie trafień — rozpoznawanie znaków pod punktami przeglądarki za pomocą
CharacterIndexAtPosi malowanie podświetleń zaznaczenia tekstu poprzezPaintSelection- Mysz i klawiatura — pełna obsługa urządzeń wejściowych z przewijaniem przez przeciąganie myszą, skróty PgUp / PgDn / Ctrl+Home / Ctrl+End oraz nawigacja po stronach kółkiem w górę / kółkiem w dół. Ctrl+kółko jest zarezerwowane dla powiększenia aplikacji i pomijane przez moduł nawigacji.
- Blokada wejścia użytkownika —
AllowUserPageChangekontroluje klawiaturowe skróty stron,ChangePageOnMouseScrollingkontroluje skoki stron kółkiem, aAllowUserTextSelectionkontroluje wejście zaznaczania tekstu z myszy / klawiatury. Wszystkie trzy domyślnie ustawione na True; przełącz je na False, aby zablokować kioski, panele podglądu lub osadzenia tylko do odczytu bez tworzenia podklasy.- Nakładka renderowania asynchronicznego —
AsyncRendering,LoadingTextiLoadingColorrysują mały wskaźnik „Loading..." nad renderowaną stroną, dzięki czemu aplikacje używające własnego workera do długich renderowań współdzielą spójną wizualną wskazówkę. Domyślne zachowanie jest zachowane.TPdfteraz serializuje wywołania renderowania i zwalniania stron per instancja; aplikacje nadal posiadają dyspozytora workerów i muszą unikać modyfikowania dokumentu, gdy renderowanie jest w toku.- Bezpieczna obsługa kliknięć linków —
LinkOptionsjest opublikowanym zbiorem, który kontroluje automatyczne zachowanie dla czterech typów akcji linku PDF:loAutoGoto(przejście do strony),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) iloAutoEmbeddedGoto(zarezerwowane). Domyślnie włączone są tylkoloAutoGotoiloAutoOpenURI;loAutoLaunchiloAutoEmbeddedGotopozostają wyłączone, aby przypadkowe kliknięcie nie mogło uruchomić dowolnego programu.OnAnnotationLinkClickiOnWebLinkClickuruchamiają się przed jakąkolwiek automatyczną akcją i umożliwiają aplikacji oznaczenie zdarzenia jako Handled lub przekierowanie go.- Interakcja z formularzami — interaktywna edycja formularzy w przeglądarce oraz pomocniki zaznaczania / Undo / Redo z v1.23.0
- Stylizacja wizualna —
PageShadowSize,PageShadowColoriPageBorderColormalują opcjonalny cień pod prostokątem strony i jednopikselowe obramowanie wokół niego;SmoothScrollteraz animuje polecenia paska przewijania linii/strony w odcinkach sterowanych timerem, podczas gdy śledzenie suwaka pozostaje natychmiastowe- Nawigacja miniatur —
TPdfThumbnailView(jednostkaFPdfThumbnail) renderuje jedną miniaturę strony w każdym wierszu w przewijalnym panelu bocznym z podświetlaniem najechania i zaznaczenia oraz nawigacją po kliknięciu. Zaprojektowany do umieszczenia obok TPdfView. Właściwości:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; zdarzenie:OnPageClick.
Kompresja
- Automatyczna kompresja — gdy właściwość
Compressedma wartość True (domyślnie), zapewnione jest, że wszystkie strumienie PDF są skompresowane FlateDecode podczas zapisywania- Przetwarzanie końcowe — silnik kompresji skanuje zapisane dane PDF i kompresuje wszystkie nieskompresowane strumienie przy użyciu maksymalnej kompresji zlib
- Odbudowa tablicy odwołań — automatyczna odbudowa tablicy xref, gdy kompresja strumieni zmienia przesunięcia bajtów
- Zerowy narzut — jeśli wszystkie strumienie są już skompresowane, dane przechodzą bez modyfikacji
Bezpieczeństwo
- Obsługa haseł — otwieranie dokumentów PDF chronionych hasłem
- Uprawnienia — odczyt uprawnień dokumentu i użytkownika; demo
SecurityAuditłączy uprawnienia, załączniki, JavaScript dokumentu, linki URI / Launch, podpisy, XFA i dostępność V8 w jedną powierzchnię ryzyka tylko do odczytu z akcjami zapisu raportu TXT / JSON i kopiowania TXT- Usuwanie zabezpieczeń — zapisywanie dokumentów z usuniętymi zabezpieczeniami (gdy autoryzowane)
Drukowanie
- Tryby druku — wybór między trybami druku EMF, tylko tekst, PostScript Level 2 / 3, PostScript pass-through, EMF image-mask i Type 42 poprzez globalną funkcję
SetPdfPrintMode- Viewer Preferences — odczyt intencji autora dokumentu poprzez
PrintCopies,PrintPageRanges(zakresy stron liczone od 1),PrintScalingiPrintPaperHandling;SetPdfPrintPaperHandlingDevModemapuje wskazówkę duplex do WindowsDEVMODE.dmDuplex- Drukowanie N-up — dema
PrintPreferencesw Delphi, C++Builder i Lazarus pokazują kompozycję arkuszy N-up (1 / 2 / 4 / 9 stron na arkusz) z filtrowaniem stron parzystych / nieparzystych, renderowaniem w skali szarości, opcjonalnymi obramowaniami komórek o szerokości 1 piksela, preferencjami druku autora PDF i mapowaniem intencji duplex poprzezSetPdfPrintPaperHandlingDevMode
Dołączone dema
Drzewa
Demo\Delphi,Demo\CBuilderiDemo\Lazarusdostarczają uruchamialne projekty przykładowe, które ćwiczą żywą powierzchnię API we wszystkich trzech rodzinach IDE. Wybrane przykłady:
- PDFViewer / MultiPageViewer / SplitView — kompleksowe użycie TPdfView: ładowanie, nawigacja, powiększenie, obrót, rozkładówka dwustronicowa, układy z okładką oraz porównywanie PDF obok siebie w Delphi / C++Builder / Lazarus z synchronizowanymi poleceniami; dema przeglądarki są również praktycznymi testami szybkości dla wielogigabajtowych plików PDF, gdzie dokumenty o rozmiarze 2.x GB mogą osiągnąć użyteczny pierwszy widok niemal natychmiast, podczas gdy renderowanie stron pozostaje responsywne
- ViewerInteractionLab — skoncentrowane na TPdfView próbki interakcji dla Delphi, C++Builder i Lazarus dla trybów wyświetlania, trybów dopasowania, kolorów stron, obrotu, podświetlenia wyników wyszukiwania, zaznaczania tekstu, podglądu zaznaczonego tekstu, akcji schowka i informacji zwrotnej współrzędnych DeviceToPage
- SearchAndSelect — skoncentrowane próbki przepływu pracy dla Delphi, Lazarus i C++Builder dla listy wyników wyszukiwania na wszystkich stronach, nawigacji do poprzedniego / następnego dopasowania, podwójnego kliknięcia w wynik,
HighlightSearchText, wyszukiwania z dopasowaniem wielkości liter / całego słowa,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectioni trybów wyświetlania rozkładówki- PreflightReport — dema przepływu pracy dla Delphi, Lazarus i C++Builder oraz konsolowy towarzysz Delphi wokół wielokrotnie używanego
FPdfPreflightReport, zbierający wyniki walidacji PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R i PDF/VT w wiersze statusu, priorytetu, kategorii problemów, liczników kategorii problemów, podsumowania kolejnych akcji, rekomendacji problemów, podgląd tekstowy / Markdown / JSON / CSV, raporty TXT / HTML / Markdown / JSON / CSV, skryptowalne generowanie raportów, przetwarzanie wsadowe list i katalogów z routingiem katalogów raportów, podsumowania zbiorcze TXT / JSON / HTML, manifesty wierszy CSV, opcjonalne osadzenie raportu w postaci załącznika oraz kody wyjścia bramkujące CI- ContentExtractionLab — ujednolicony przepływ pracy inwentaryzacji treści dla Delphi, Lazarus i C++Builder dla metadanych dokumentu, tekstu stron, obiektów stron, obrazów, załączników, linków, adnotacji, zakładek oraz metryk czcionek / znaków z eksportem TXT / JSON, wyborem wszystkich / żadnych kategorii, zapisem źródłowego PDF i akcjami kopiowania raportu
- WatermarkStamp — wielokrotnie używalny przepływ pracy Form XObject dla Delphi, Lazarus i C++Builder dla wycentrowanych znaków wodnych, stempli narożnych i etykiet numerów stron na wielostronicowym docelowym PDF
- CreatePDF — zbuduj wielostronicowy PDF od zera z tekstem, obrazami, ścieżkami, tabelami i kompozycją znaków wodnych; zawiera opcję 'European Text' do zapisu akcentowanego tekstu czeskiego / francuskiego / niemieckiego / hiszpańskiego / portugalskiego / polskiego / tureckiego w celu weryfikacji wyboru czcionek i obsługi Unicode
- ExtractText / ExtractImages / ContentExtractionLab — zapisz wyekstrahowany tekst (w tym osobne dane wyjściowe na stronę) lub osadzone obrazy na dysku; lub wygeneruj raport inwentaryzacji treści wielu kategorii w jednym przebiegu
- FormFill — odczyt metadanych pól AcroForm, zapis wartości, regeneracja wyglądu /AP i zapis edytowalnego lub spłaszczonego wyniku
- FontProperties — sprawdzanie metadanych indeksowanych znaków / czcionek poprzez TPdf i TPdfView w Delphi, C++Builder i Lazarus
- MergePDF / SplitPDF — połącz wiele źródłowych PDF (z wyborem zakresu stron per plik, opcjonalną ścieżką wyjściową, dziennikiem przebiegu, przyciskiem anulowania i podsumowaniem ukończenia łączenia) lub podziel jeden PDF na pliki wyjściowe per strona
- PDFtoJpg / BatchExport — jednorazowa lub wsadowa konwersja PDF na JPG dla wielu plików w Delphi, C++Builder i Lazarus z postępem ogólnym per plik, postępem bieżącym per strona, danymi wejściowymi DPI / jakości / hasła oraz wsadem anulowalnym kooperatywnie opartym na
IPdfCancellationToken- StandardsLab — próbki przepływu pracy dla Delphi, C++Builder i Lazarus dla walidacji PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R i PDF/VT, raportowania problemów i zapisu wyjść zorientowanych na standardy
- PrintPDF / PrintPreferences — standardowe drukowanie PDF w Delphi, C++Builder i Lazarus z podglądem, zakresami stron, kopiami, sortowaniem, postępem i anulowaniem (PrintPDF), oraz kompozycja arkuszy N-up w Delphi, C++Builder i Lazarus z filtrowaniem parzystych / nieparzystych i preferencjami druku autora PDF (PrintPreferences)
- SecurityAudit — próbki powierzchni ryzyka tylko do odczytu dla Delphi, C++Builder i Lazarus dla uprawnień, załączników, akcji JavaScript, linków URI / Launch, linków webowych, podpisów, stanu XFA, dostępności pomocników V8 / XFA oraz raportów audytu TXT / JSON
- Attachment — tworzenie plików PDF, dodawanie / lista / wyodrębnianie / usuwanie / zapisywanie osadzonych załączników plików z wyświetlaniem podtypu MIME
- ImageToPDF — wsadowa konwersja obrazów w jeden PDF dla Delphi, C++Builder i Lazarus, jeden obraz na stronę, z podglądem i postępem per obraz
Zestawy testów regresji w Delphi, C++Builder i Lazarus pokrywają 147 (Pas) / 123 (C++) przypadków współdzielących te same przykładowe pliki PDF, dzięki czemu zachowanie pozostaje wyrównane bajt-do-bajtu we wszystkich trzech rodzinach IDE.
Obsługa platform
- Delphi — Delphi XE5 (RAD Studio XE5) do Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder — C++Builder XE5 (RAD Studio XE5) do C++Builder 13.1 Florence
- Lazarus — wsparcie Free Pascal / Lazarus
- Win32 / Win64 — zarówno 32-bitowe, jak i 64-bitowe platformy Windows