Informacje o wydaniach PDF Library for Delphi
Historia wydań
« Wróć do indeksu dokumentacji
Historia wersji PDF Library for Delphi obejmująca funkcje widoczne dla użytkownika, poprawki, rozszerzenia PDF, zmiany zgodności i aktualizacje dokumentacji
Ostatnie wydanie
- Najnowsza wersja: v3.555.0; Data wydania: 2026-10-10
Version 3.555.0
Dodano
- Windows 11 on ARM obsługuje natywne kompilacje ze źródeł Free Pascal ARM64 i Delphi ARM64EC, z osobnymi wynikami kompilacji biblioteki i DLL
Zmieniono
- Windows ARM korzysta z systemowych dostawców AES CBC/GCM i JPEG, przenośnej kompresji oraz biblioteki współdzielonej OpenJPEG dopasowanej do architektury dla JPEG 2000
- DLL Windows ARM udostępnia nazwane eksporty C ABI oraz dodatnie, nieprzezroczyste uchwyty instancji, bez ucinania 64-bitowych wskaźników
Naprawiono
- XMP w Delphi ARM64EC używa interfejsów MSXML świadomych przestrzeni nazw z ograniczonym parsowaniem XML, aby wywołania OLE z późnym wiązaniem nie kończyły się błędami
Version 3.554.0
Dodano
- Natywne wsparcie trybu bez GUI obejmuje teraz Linux ARM64 i macOS x64, z kompilacjami FPC dopasowanymi do architektury oraz dylib Delphi dla Intel macOS
- Natywne narzędzia weryfikacji obsługują Linux i macOS zarówno na x64, jak i ARM64
Naprawiono
- Intel macOS wybiera poprawne natywne lokalizacje dostawców OpenSSL, Cairo, Fontconfig i OpenJPEG zamiast ścieżek dla Apple silicon
- Linkowanie Delphi dla Intel macOS rozwiązuje bezwzględne ścieżki bibliotek systemowych i frameworków względem wybranego cache Windows SDK, gdy używany jest LLVM LLD
Version 3.553.1
Dodano
- Delphi macOS ARM64 obsługuje natywową edycję metadanych XMP i pełne cykle odczytu i zapisu, w tym właściwości niestandardowe, identyfikatory standardów oraz zachowywanie niepowiązanych przestrzeni nazw
Naprawiono
- Natywne podpisywanie PFX i znaczniki czasu RFC 3161 w Delphi dla macOS wybierają dostawcę macOS OpenSSL; podpisy PDF RSA i EC, jawne łańcuchy zaufania, znaczniki czasu podpisu oraz znaczniki czasu dokumentu są weryfikowane na ARM64
- Natywne cykle wczytania i zapisu XMP zachowują pojedynczą kopertę pakietu zamiast kumulować instrukcje przetwarzania
Version 3.553.0
Dodano
- Delphi potrafi teraz zbudować dynamiczną bibliotekę macOS ARM64 bez GUI, z tymi samymi 880 punktami wejścia C, co natywna kompilacja Free Pascal
- Backend Delphi dla macOS korzysta z natywnych czcionek, renderowania Cairo, szyfrowania i skrótów OpenSSL, systemowych zlib i libcurl, OpenJPEG oraz kodowania i dekodowania JPEG przez ImageIO
Naprawiono
- Dostęp do plików, wyszukiwanie zasobów, binarne struktury o stałej szerokości i powiązania natywnych kodeków w macOS używają teraz deklaracji poprawnych dla platformy
- Renderowanie w tle korzysta na macOS z przenośnego zdarzenia wstrzymania
- Delphi dla macOS poprawnie odszyfrowuje zaszyfrowane ciągi PDF i strumienie obiektów, nie zwalniając ich buforów wejściowych podczas dekodowania
Version 3.552.2
Naprawiono
- Przywrócono zgodność ze starszymi kompilatorami Delphi dla walidacji faktur i dostawców OCR, w tym kompilacje próbne biblioteki Win32 i Win64
Version 3.552.1
Naprawiono
- Bufory biblioteki dynamicznej w macOS udostępniają teraz rzeczywiste dane, zachowują osadzone bajty zerowe i poprawnie zgłaszają udane zwolnienia
- Uchwyty instancji biblioteki dynamicznej pozostają ważne na celach 64-bitowych, bez ucinania adresów obiektów ani ponownego używania zwolnionych uchwytów
- Wyładowanie biblioteki zwalnia pozostałe aktywne instancje i bufory
Version 3.552.0
Dodano
- Natywne generowanie PDF bez GUI, wczytywanie dokumentów, przepływy tekstowe i renderowanie bitmap przez Cairo w Free Pascal na Linux x86_64 i macOS arm64, z czcionkami systemowymi oraz natywnymi dostawcami PNG, JPEG i JPEG 2000
- Natywne szyfrowanie OpenSSL, skróty, podpisywanie PKCS12 i weryfikacja CMS, z jawnymi zakotwiczeniami zaufania certyfikatów i kontrolowanym czasem weryfikacji
- Wbudowany dostęp HTTP range przez libcurl i przepływy znaczników czasu RFC 3161 na natywnych celach Free Pascal, w tym atrybuty znaczników czasu podpisu i weryfikacja znacznika czasu dokumentu
- Natywne parsowanie i zapis metadanych XMP zachowują właściwości oparte na przestrzeniach nazw, a przed budową DOM odrzucają DTD oraz XML o nadmiarowym rozmiarze lub głębokim zagnieżdżeniu
Naprawiono
- Natywne pasmowe renderowanie bitmap inicjalizuje transformację strony i zachowuje antyaliasing Cairo na granicach pasm
- Współdzielone deklaracje znaczników czasu, walidacji i tagowania nie wymagają już opcjonalnej kompilacji PDFium
Version 3.551.0
Dodano
- Dokładne zastępowanie treści Unicode zachowuje otaczające znaki, istniejące odstępy TJ i kotwice następującego tekstu, obsługuje usuwanie oraz zweryfikowane czcionki zamienników i zgłasza nieobsługiwane mapowania przed zastąpieniem wybranego tekstu strony
- Ekstrakcja strukturalna podąża za otagowaną kolejnością czytania, rozwiązuje role semantyczne i przestrzenie nazw, wykrywa kolumny i stałe elementy strony oraz zachowuje puste, scalone i wielostronicowe komórki tabel w eksportach JSON, CSV, Markdown i DOCX
- Opcjonalne adaptery Tesseract OCR obsługują wyniki hOCR i TSV, pewność orientacji oraz linie bazowe, z jawnymi limitami i diagnostyką dla każdego etapu
- Warstwy tekstowe OCR mogą pomijać istniejący tekst albo zastępować wyłącznie warstwy wcześniej należące do biblioteki, zachowując przy tym piksele strony i wspólną zawartość
- Nowe kontrolki Delphi, DLL i ActiveX udostępniają opcje analizy strukturalnej, konfigurację OCR oraz diagnostykę dokładnego zastępowania
Zmieniono
- Strukturalny JSON używa schematu w wersji 2 ze stabilnymi identyfikatorami węzłów semantycznych, źródłami z kolejności czytania, zakresami tabel i pewnością wnioskowania
- Zastępowanie Unicode odrzuca niekompletne mapowania, częściowe klastry glifów i nieobsługiwane źródła, zamiast zgadywać bajty czcionki
Naprawiono
- Liczbowe odstępy TJ stosują teraz skalowanie poziome jednokrotnie — zarówno w renderowaniu, jak i w geometrii tekstu
- Pomiar czcionek ponownie wybiera rzeczywisty zasób, gdy kolekcje są współdzielone, i w obrębie każdego zakresu zasobów ponownie używa analizy czcionki bezpośredniej
- Odciski palców zawartości zachowują swoje wartości skrótu przy włączonych kontrolach zakresu i przepełnienia
Version 3.550.0
Zmieniono
- Eksport SVG zachowuje teraz kolejność rysowania strony, zagnieżdżoną zawartość Form, dokładne ścieżki przycinające i przekształconą geometrię obrysów
Dodano
- Ograniczony natywny fallback rastrowy obsługuje nieobsługiwane operacje rysowania, gdy ustawienia eksportu pozwalają na migawkę tła
- GetLastSVGExportDiagnostics zgłasza pominięte piksele, przybliżenia i fallback rastrowy, w tym widoczne wyglądy adnotacji wykraczające poza eksport zawartości strony
Version 3.549.0
Dodano
- Wersjonowany schemat XML faktur i walidacja Schematron akceptują opcjonalnych dostawców i zwracają stan ukończenia etapu, identyfikatory reguł, ścieżki pól, poziom ważności oraz diagnostykę silnika
- Wbudowana walidacja biznesowa faktur wczytuje wybrany załącznik z ograniczonym dekodowaniem i odrzuca brakujące lub niejednoznaczne nazwy plików
- Delphi, DLL i ActiveX mogą uruchamiać walidację xmllint i SaxonJ z jawnymi plikami reguł, limitami czasu i limitami wyjścia
Version 3.548.0
Dodano
- Kontrole czytnika PDF/UA-2 walidują identyfikację, wersję PDF, odniesienia do przestrzeni nazw, mapowania ról, korzenie dokumentu i rodziców struktury przez jawny lub automatyczny wybór profilu
- API Delphi, DLL i ActiveX wybierają cel PDF/UA w potoku walidacji wielokrotnego użytku i udostępniają sprawdzone, niezweryfikowane oraz ograniczone pokrycie walidacji
Zmieniono
- Raporty walidacji i preflight identyfikują PDF/UA-2 niezależnie od PDF/UA-1 i informują, że zaliczenie zaimplementowanych kontroli nie daje pełnej certyfikacji dostępności
Version 3.547.0
Dodano
- Wizualne porównanie wyrenderowanych stron z tolerancją kanałów, ignorowanymi regionami, zmienionymi obszarami, licznikami pikseli, maskami różnic i nakładkami
- Wizualne porównanie dokumentów dopasowuje identyczne obrazy stron wokół wstawionych i usuniętych stron oraz zgłasza zmienione lub przeskalowane pary stron
- Wizualne porównanie plików przez Delphi, DLL i ActiveX zwraca ustrukturyzowany raport JSON
Version 3.546.0
Dodano
- Raporty pokrycia walidacji Arlington rozróżniają pełne powodzenie, znane niepowodzenia, niekompletną obsługę reguł i błędy operacji poprzez API Delphi, DLL i ActiveX
Naprawiono
- Nieobsługiwane wyrażenia modelu generują teraz jawne komunikaty diagnostyczne, zamiast po cichu przyczyniać się do pomyślnego wyniku walidacji
Version 3.545.0
Dodano
- Przykłady WorkflowWorkbench dla DLL C# i VB.NET pokazują generowanie wielostronicowych raportów, ekstrakcję tekstu, dzielenie i scalanie stron, binarne transfery pamięci oraz jawną własność zasobów natywnych
- DocumentInspectionWorkbench oferuje teraz spisy stron i konfigurowalne progi ważności diagnostyki w Delphi, C++Builder i Lazarus, wraz z wygenerowanymi danymi wejściowymi do samodzielnego pierwszego uruchomienia
Zmieniono
- LinkDemo dla DLL C++ buduje teraz kompletny dokument nawigacyjny z linkami do stron i konspektami, przyjmuje jawne ścieżki DLL i pliku wyjściowego, weryfikuje zapisany dokument i zgłasza niepowodzenia kodami wyjścia procesu
- WorkflowGallery sprawdza zapisany dokument i treść odpowiedzi HTTP kontrolami round-trip i publikuje raport weryfikacji
- Szybka wycieczka po DocumentLab obejmuje teraz inspekcję dokumentów, a natywne zestawy przykładów i wprowadzenie do pakietu linkują do dedykowanego katalogu workflow DLL
Naprawiono
- Inspekcja dokumentów w Delphi inicjalizuje liczniki per plik przed analizą, w tym raporty dla danych wejściowych, których nie da się wczytać; Delphi i C++Builder zapisują liczby JSON w formie niezależnej od ustawień regionalnych
- Przykład diagnostyczny DLL C++ zwalnia natywne instancje przed wyładowaniem biblioteki, również na ścieżce sukcesu
Version 3.544.0
Dodano
- Dziewięć natywnych laboratoriów domenowych oferuje wybór scenariuszy, prowadzone szybkie wycieczki, logi dla każdego scenariusza oraz strony HTML do użytku offline, otwierane automatycznie po uruchomieniu laboratorium bez argumentów
Zmieniono
- Zestawy przykładów dla Delphi, C++Builder i Lazarus skupiają się teraz na Showcase, HelloWorld i dziewięciu laboratoriach, przy czym Delphi zachowuje swój interaktywny Reader
- Specjalistyczne demonstracje i tematyczne tutoriale są teraz zintegrowane jako lokalne moduły scenariuszy wewnątrz każdego laboratorium, zachowują swoje pierwotne operacje i nie wymagają osobnych projektów przykładowych ani wspólnego katalogu ze źródłami demo
- Wycieczki po laboratoriach wykonują własne scenariusze z izolowanymi katalogami wyjściowymi i limitami czasu, więc nie zależą już od osobno budowanych plików wykonywalnych sąsiednich przykładów
- Notatki scenariuszy są linkowane z przewodników domenowych, a opcjonalne integracje frameworka raportów Delphi są zgrupowane pod ContentLab
- Macierze kodeków skanowania w Lazarus oznaczają jako pominięte ścieżki kodowania, które nie mogą ukończyć wygenerowanej próbki, i publikują pomiary JBIG2 tylko wtedy, gdy żądany zewnętrzny koder jest dostępny
Naprawiono
- Scenariusze redakcji generują teraz dokumenty PDF 1.7, więc usuwanie treści przechodzi wymagane kontrole wersji
- Scenariusze przechwytywania stron zachowują tymczasową stronę dokumentu podczas przechwytywania ostatniej strony z treścią, co eliminuje nieudane przechwyty dla dokumentów jednostronicowych
- Galeria kodów kreskowych w C++Builder akceptuje teraz poprawne niezerowe uchwyty dokumentów i stron, zamiast odrzucać uchwyty o wartości większej niż jeden
- Scenariusz nawigacji w Lazarus zgłasza teraz nieudane zapisy PDF przed publikacją raportów o sukcesie, również dla towarzyszącego dokumentu ze zdalnym celem
Version 3.543.0
Zmieniono
- Natywny zestaw demo wysuwa teraz na pierwszy plan flagowe wycieczki i workbenchy funkcji, a nastawione na konkretne API tutoriale trafiają do folderu Miscellaneous każdej platformy
Usunięto
- Usunięto adaptację metadanych w C++Builder Reader, plik wykonywalny ReportBridges zawierający tylko wymagania wstępne, zduplikowany przykład Lazarus TextExtract oraz zbędny wpis Delphi AddWebLinkConsole; zamiast nich używaj właściwych przykładów viewer, report bridge, inspection, extraction i AddWebLink
Naprawiono
- LoggerDemo w C++Builder zamyka teraz obiekt zapisujący log przed odczytem ukończonego logu sesji i wypisuje go jako UTF-8, unikając błędów współdzielenia plików i awarii konsoli przy długich logach po utworzeniu PDF
Version 3.542.0
Zmieniono
- Showcase i AdvancedWorkflowMatrix zawierają teraz swoje jednostki implementacyjne w każdym folderze przykładów Delphi, C++Builder i Lazarus, więc skopiowanie projektu nie wymaga już wspólnego katalogu z jednostkami demo
- Przewodnik po źródłach Showcase wskazuje lokalny builder, zachowując dokument o dziewięciu stronach, edytowalne formularze, przełączalne warstwy i eksporty offline
Naprawiono
- Zestaw workflow w C++Builder zapisuje pełną listę przepływów i raport konsolowy przed zakończeniem działania
Version 3.541.0
Dodano
- Dziewięciostronicowy Showcase zawiera edytowalne założenia projektu i warstwowy rzut kondygnacji, ze zapisywanymi wartościami formularzy i opcjonalnymi notatkami projektowymi
- C++Builder zawiera teraz ten sam flagowy Showcase co Delphi i Lazarus
- Konsolowe uruchomienia Showcase tworzą stronę dostępną offline z pełnostronicowymi podglądami PNG, interaktywnym PDF i eksportami tekstu UTF-8
Zmieniono
- Showcase w Delphi otwiera się prowadzonym podglądem, bezpośrednią edycją formularzy, przełącznikiem widoczności notatek projektowych, zapisem edytowanego PDF oraz akcjami eksportu obrazu i tekstu
- Wszystkie trzy natywne wersje Showcase współdzielą builder dokumentów i implementację eksportu offline
Naprawiono
- Sekcje tabel, przykładowe adnotacje i symbole kodów kreskowych w Showcase mieszczą się w przewidzianych obszarach, a etykiety stron pozostają czytelne
- Showcase w Delphi zapisuje pliki do katalogu wyjściowego należącego do użytkownika i jawnie obsługuje niepowodzenia podglądu, eksportu i zapisu
Version 3.540.0
Zmieniono
- AdvancedWorkflowMatrix współdzieli jeden launcher workflow między Delphi, C++Builder i Lazarus, uruchamia specjalistyczne demonstracje z izolowanymi katalogami wyjściowymi, obsługuje wybór i limity czasu oraz odnotowuje brakujące pliki binarne i niepowodzenia procesów potomnych w raportach CSV i HTML
- TextExtract i ExtractText w Lazarus współdzielą jedną sesję ekstrakcji tylko do odczytu, przyjmują hasła, zapisują wyjście w UTF-8 i zachowują minimalny wpis konsolowy oraz porównanie trybów ekstrakcji
- C# ActiveX HelloWorld to zwięzły starter tworzący i zapisujący dokument, z opcją wyjścia bez GUI, jawnym zwalnianiem obiektów COM i jasną diagnostyką wdrożenia
Naprawiono
- C# Table2PDF unika dodatkowej pustej strony, używa zwróconych identyfikatorów czcionek i odnajduje DLL zgodnie z architekturą procesu
- Starter DLL dla Visual Basic zawiera natywne wiązanie potrzebne do kompilacji i obsługuje ładowanie DLL zależne od architektury
- Przewodnik po silniku raportów C++Builder zgłasza brakującą integrację i nie przedstawia już zastępczego PDF-a jako rzeczywistego wyniku mostka
- C++Builder Reader kończy się jawnym błędem, gdy dostarczony PDF jest nieczytelny, zamiast podstawiać swój wygenerowany przykład
Version 3.539.53
Naprawiono
- Demo TextPaging kończy się błędem, gdy nie da się wczytać wymaganych fontów albo gdy limit stron pozostawia część tekstu niewyrenderowaną — częściowy PDF nie jest już zapisywany i otwierany jako udany wynik
Version 3.539.52
Naprawiono
- Konsolowe demo ActionNavigationMatrix przed zgłoszeniem sukcesu sprawdza zapis głównego i towarzyszącego PDF oraz eksport FDF, a przy nieudanej operacji wyjściowej kończy się niezerowym kodem wyjścia
Version 3.539.51
Naprawiono
- Wyszukiwanie w drzewach nazw i drzewach numerów ignoruje zamienione miejscami granice zamiast ukrywać poprawne wpisy potomne w uszkodzonych PDF-ach
Version 3.539.50
Naprawiono
- Sortowanie liczb całkowitych obsługuje pełny zakres wartości ze znakiem bez przepełnienia porównania
- Puste posortowane listy liczb całkowitych i pozycji plikowych zwracają zero dla zapytań o następny element; sprawdzanie przynależności dla rzadkich liczb całkowitych unika alokowania każdego pośredniego zakresu, zachowując przy tym kolejność wstawiania i duplikaty
Version 3.539.49
Naprawiono
- Import PNG odrzuca ucięte chunki, uszkodzone nagłówki i palety, nieobsługiwane wartości interlacingu oraz brakujące lub błędne chunki końcowe, zanim obraz zostanie uznany za użyteczny
- Ponowne wczytanie PNG czyści poprzednie dane i metadane obrazu, zachowując opcje czytnika; odczyty tylko metadanych pomijają dane obrazu bez alokowania ich buforów
Version 3.539.48
Naprawiono
- Strumienie plikowe przy zmianie rozmiaru respektują żądaną długość, a długie nazwy plików są rozwijane do pełnych ścieżek bezwzględnych
- Wstawianie do strumienia zachowuje 64-bitowe długości i pozycje kursorów, odrzuca punkty wstawienia poza strumieniem przed modyfikacją danych oraz zgłasza niepełne odczyty i zapisy
- W nazwach plików z numerem strony numer jest dopisywany przed rozszerzeniem; nazwy katalogów pozostają zachowane, a nazwy bez rozszerzenia są obsługiwane poprawnie
Version 3.539.47
Naprawiono
- Renderowanie i kontynuacja tekstu HTML zachowują escapowane nawiasy kątowe i dosłowne zapisy encji zamiast interpretować zdekodowany tekst drugi raz
- Fragmenty i bloki kodu Markdown zachowują ampersandy i zapisy encji w wygenerowanym HTML oraz wyrenderowanym PDF; eksporty zbiorów danych zachowują ten sam dosłowny tekst w wartościach komórek
Version 3.539.46
Naprawiono
- Demo ExtractImage dla Delphi pomija obrazy, których nie da się zaznaczyć, zlicza udane zapisy i zgłasza niekompletne wyodrębnienie zamiast pokazywać bezwarunkowy komunikat o sukcesie
- ExtractImage tworzy katalog wyjściowy i przy nadawaniu nazw wyodrębnionym obrazom usuwa tylko rozszerzenie pliku wejściowego; ExtractAnnotAttach zatrzymuje się, gdy wczytanie zwróci jakikolwiek wynik inny niż sukces
Version 3.539.45
Naprawiono
- Zapytania do drzew nazw i numerów pomijają cykliczne lub powtarzające się węzły potomne, kontynuują przechodzenie do poprawnych węzłów sąsiednich i obsługują głęboko zagnieżdżone drzewa bez przepełnienia stosu wywołań
- Wyliczanie drzewa nazw ignoruje nieprawidłowe klucze, a wyszukiwanie i usuwanie zachowują pełne przesunięcie wpisu w liściach z więcej niż 32 768 parami nazwa/wartość
Version 3.539.44
Naprawiono
- Zapytania i przechwytywanie ramek strony ignorują nieodziedziczalne ramki Bleed, Trim i Art na nadrzędnych węzłach drzewa stron, używając zamiast tego ramki strony liścia lub jej efektywnej ramki cięcia
HasPageBoxspójnie zgłasza bezpośrednio odziedziczone ramki MediaBox i CropBox oraz ramki w postaci tablic pośrednich
Version 3.539.43
Naprawiono
- Wektorowy import EMF startuje z domyślnym czarnym piórem i białym pędzlem, więc rekordy rysujące bez jawnego wyboru obiektu pozostają widoczne
- Polilinie 32-bitowe i 16-bitowe zachowują niezależne figury wewnątrz nawiasów ścieżki, a wielopolilinie 16-bitowe wstrzymują malowanie do narysowania ścieżki i respektują puste pióro
Version 3.539.42
Naprawiono
- CapturePageEx z opcją ramki Bleed, Trim lub Art na stronie, która nie definiuje tej ramki, przechwytuje teraz — zgodnie z dokumentacją — ramkę cięcia zamiast całej ramki MediaBox; ramka uzupełniana na stronie jest zgodna z tą samą wartością domyślną z ISO 32000-1
Version 3.539.41
Naprawiono
- Import EMF rysuje 32-bitowe rekordy PolyBezier od ich pierwszego punktu zamiast traktować go jako punkt kontrolny, dzięki czemu krzywe zgadzają się z rekordami 16-bitowymi
- Rekordy EMF Polyline są rysowane jako otwarte linie tylko piórem, a nie jako zamknięte, wypełnione figury
- Rekordy EMF PolylineTo zaczynają się od bieżącej pozycji i nie są już zamykane, a rekord, którego pierwsze dwa punkty leżą na linii poziomej, nie wyłącza już pióra dla każdej figury rysowanej po nim
- 32-bitowe rekordy EMF PolyPolyline rysują każdą polilinię; wcześniej rekordy z więcej niż jedną polilinią były pomijane, a pojedyncze polilinie nic nie rysowały
Version 3.539.40
Naprawiono
- ImportAnnotationsFromFDFString i ImportAnnotationsFromFDF, podobnie jak import XFDF, zwracają liczbę faktycznie dodanych adnotacji; wpisy pomijane z powodu strony poza dokumentem lub braku /Subtype nie są już wliczane
Version 3.539.39
Naprawiono
- Import EMF dorysowuje rekordy PolyDraw do końca: punkty zamykające figurę przy rysowaniu linii lub krzywej nie są już odrzucane, dzięki czemu zamknięte figury zachowują ostatni segment, a kolejne krzywe nie tracą synchronizacji; rekord 16-bitowego PolyDraw z kilkoma figurami zachowuje je wszystkie, a figura niezaczynająca się od przesunięcia zaczyna od bieżącej pozycji
- Import EMF pomija rekordy Polyline, PolyBezier, Polygon, PolyDraw oraz 16-bitowe PolyPolyline i PolyPolygon, które deklarują więcej punktów, niż zawierają, zamiast czytać poza rekordem — wcześniej powodowało to zbłąkane linie z kolejnych rekordów albo mogło zepsuć konwersję
Version 3.539.38
Naprawiono
- Półtonowe obszary JBIG2, których siatka zaczyna się na lewo od lub nad obszarem albo których obrócona siatka umieszcza komórki na ujemnych współrzędnych, dekodują się poprawnie: takie komórki są przycinane do krawędzi obszaru zamiast być odrzucane lub przenoszone, początek siatki nie jest już ściągany do narożnika obszaru, a komórki leżące całkowicie na zewnątrz są pomijane dokładnie tak, jak określa ITU-T T.88
Version 3.539.37
Naprawiono
- Obrazy JBIG2 z półtonowym obszarem pomijającym komórki siatki poza obszarem dekodują się teraz poprawnie, gdy siatka półtonowa nie jest kwadratowa; maska pomijania była budowana z zamienionymi wierszami i kolumnami, więc komórki, które należało pominąć, były dekodowane, a reszta obszaru wychodziła popsuta
Version 3.539.36
Naprawiono
- Strona przeniesiona przez MovePage dostaje własne kopie ramek strony, obrotu i zasobów odziedziczonych ze starego węzła Pages, więc wywołanie SetPageBox ani rysowanie tekstu i obrazów na przeniesionej stronie nie zmienia już starego węzła ani stron, które wciąż po nim dziedziczą
- SetPageBox daje stronie własną ramkę, gdy istniejąca jest obiektem pośrednim współdzielonym z innymi stronami lub węzłem Pages, zamiast zmieniać rozmiar każdej strony, która się do niej odwołuje
- CopyPageRanges nie zostawia już skopiowanych stron źródłowych współdzielących ramki strony z węzłem Pages ani CropBox z MediaBoxem, więc zmiana ramki na stronie źródłowej po kopiowaniu nie zmienia już rozmiaru stron sąsiednich ani obu ramek naraz
Version 3.539.35
Naprawiono
- TransformPageElement zapisuje część macierzy odpowiedzialną za skalowanie i obrót, którą owija wokół ścieżki lub obrazu, z sześcioma miejscami dziesiętnymi zamiast czterech, więc małe obroty i drobne współczynniki skali nie są już widocznie przekłamane na dużych stronach; przesunięcie zachowuje cztery miejsca dziesiętne
Version 3.539.34
Zmieniono
- Edycje stron przepisujące warstwę zawartości, w tym ScalePage, TransformPageElement, DeletePageElement, RedactRegion, ConvertTextToPaths oraz programy z ParsePageContentLayer zapisywane z powrotem przez WritePageContentLayer, zachowują oryginalny tekst każdego operandu liczbowego, którego nie zmieniają, zamiast zaokrąglać całą warstwę do czterech miejsc dziesiętnych
- TPDFContentProgram ma nową właściwość CanonicalNumbers; ustaw ją przed parsowaniem, aby przepisać każdą liczbę do postaci kanonicznej tak jak robi to NormalizeContentStreams
Naprawiono
- Liczba niezerowa mniejsza od precyzji wyjściowej, na przykład współczynnik skali 0.00001, jest zapisywana ze swoimi cyframi znaczącymi zamiast zera, więc normalizacja zawartości, optymalizator zawartości działający przy zapisie i nowe obiekty PDF nie zamieniają już drobnej transformacji w macierz osobliwą ukrywającą zawartość
Version 3.539.33
Naprawiono
- RecolorPage i RecolorDocument nie kończą się już błędem konwersji na systemach z przecinkiem dziesiętnym, gdy strona ustawia kolor z wartością dziesiętną taką jak
0.5 g - DrawSVG, DrawSVGFromFile, GetSVGWidth i GetSVGHeight czytają dziesiętne długości SVG takie jak
width="100.5"na systemach z przecinkiem, zamiast wpadać na wartości domyślne, a ExportPageSVG zachowuje dziesiętne kolory wypełnienia i obrysu - RenderPageRegionToFile i RenderPageToDCClip przyjmują dziesiętne prostokąty przycinania takie jak
10.5,20.5,50.5,40.5w każdym ustawieniu regionalnym; nieprawidłowy tekst przycinania teraz kończy się błędem albo renderuje bez przycinania zamiast rzucać wyjątek, a nadmiarowe wartości nie wychodzą już poza prostokąt - AddPolygonAnnotation, AddPolyLineAnnotation i AddInkAnnotation czytają dziesiętne współrzędne wierzchołków w każdym ustawieniu regionalnym i odrzucają nieprawidłową listę współrzędnych
- SetOutputIntentMixingHints przyjmuje wartości solidity takie jak
0.95na systemach z przecinkiem dziesiętnym, a CheckDocumentPolicy porównuje liczbowo dziesiętne wartości cech takie jakDocument.Version >= 1.3
Version 3.539.32
Naprawiono
- AddTagAttribute zapisuje wartości z kropką dziesiętną takie jak
0.5czy2.5 3.5jako liczby PDF na systemach z przecinkiem, zamiast zamieniać je w nazwy PDF; wartości zapisane systemowym separatorem dziesiętnym są nadal akceptowane - SetStructElemBBox, SetStructElemSpaceBefore, SetStructElemSpaceAfter, SetStructElemStartIndent, SetStructElemEndIndent i SetStructElemColor formatują swoje liczby niezależnie od ustawień regionalnych systemu i nigdy w postaci wykładniczej
- Placeholdery PDF/VCR tworzone przez BeginPDFVCRPlaceholder przechodzą walidację GTS_BBox przed zapisem na systemach z przecinkiem dziesiętnym
Version 3.539.31
Naprawiono
- GetSimilarImageDeduplicationReportJSON zapisuje maxAcceptedMeanError jako poprawną liczbę JSON na systemach z przecinkiem dziesiętnym zamiast
0,333333333333333 - GetObjectJSON i ExportObjectJSON zapisują liczby PDF takie jak
-.25,+3czy007.5w składni liczb JSON, więc wynik jest poprawnym JSON-em i SetObjectJSON oraz ImportObjectJSON przyjmują go z powrotem - Raporty JSON zapisują
nulldla wartości NaN lub nieskończonych zamiast+InfczyNANalbo wywalenia z wyjątkiem zmiennoprzecinkowym: GetDocumentJSON dla przepełnionych liczb PDF, GetAnnotationHitsJSON dla nieskończonych współrzędnych oraz raporty kodów kreskowych, deskew, tekstu strukturalnego i PDF/VCR - Formatowanie liczb dla zawartości PDF oraz wyjścia SVG, HTML i CSV zapisuje 0 dla NaN zamiast zgłaszać nieprawidłową operację zmiennoprzecinkową
Version 3.539.30
Naprawiono
- ImportAnnotationsFromFDF i ImportAnnotationsFromFDFString znów tworzą importowane adnotacje; wcześniej każdemu wpisowi liczono, ale żaden nie trafiał do dokumentu, bo wartość /Subtype nigdy nie była czytana
- Import adnotacji FDF czyta /Rect, /Page, /Contents, /T i /Subj w dowolnej kolejności kluczy, trzyma każde wyszukiwanie w obrębie własnego wpisu adnotacji i parsuje liczby niezależnie od ustawień regionalnych systemu, w tym zapisywane przez wcześniejsze wersje przecinki dziesiętne
- ExportAnnotationsToFDF i ExportAnnotationsToFDFString zapisują własny /Rect każdej adnotacji w przestrzeni użytkownika PDF, dzięki czemu wyeksportowany plik importuje się z powrotem w tym samym miejscu zamiast przesuwać adnotację
Version 3.539.29
Naprawiono
- ExportAnnotationsToXFDF i ExportAnnotationsToXFDFString zapisują wartości rect, opacity, width i dashes z kropką jako separatorem dziesiętnym w każdym ustawieniu regionalnym systemu, zgodnie z wymaganiami XFDF
- ImportAnnotationsFromXFDF i ImportAnnotationsFromXFDFString czytają standardowy XFDF z kropką dziesiętną na systemach z przecinkiem, zamiast kończyć się błędem konwersji, a nieprawidłowa liczba pomija teraz tę wartość zamiast przerywać cały import
- Pliki XFDF zapisane przez wcześniejsze wersje na systemach z przecinkiem dziesiętnym, takie jak
rect="50,500 80,250 70,750 100,125"czyopacity="0,600", importują się z zamierzonymi wartościami
Version 3.539.28
Naprawiono
- Optymalizator strumienia zawartości nie usuwa już
1 0 0 1 0 0 Tmresetującego pozycję tekstu po Td, TD, T*, wcześniejszym Tm ani wyświetlonym tekście, co przesuwało kolejne glify przy optymalizacji strumieni zawartości podczas zapisu; tożsamościowe Tm bezpośrednio po BT oraz powtarzające wcześniejsze tożsamościowe Tm nadal są usuwane
Version 3.539.27
Naprawiono
- MovePage, a także CollateDocumentsEx przy zmienianiu kolejności stron, zachowują MediaBox, CropBox i Rotate odziedziczone po nadrzędnym węźle Pages, więc strona przeniesiona pod innego rodzica nie zmienia już rozmiaru, kadrowania ani orientacji; wcześniej przenoszono tylko /Resources
- BalancePageTree zachowuje odziedziczone /Resources, /MediaBox, /CropBox lub /Rotate będące obiektem pośrednim jako odwołanie do tego obiektu, zamiast kopiować je do każdej strony
Version 3.539.26
Naprawiono
- Zawartość strony zapisywana przez AddPageMatrix, ScalePage, DeskewPage, TransformPageElement, DeletePageElement, RedactRegion i ConvertTextToPaths zawsze używa kropki jako separatora dziesiętnego i zwykłej notacji, więc na systemach z przecinkiem jako separatorem dziesiętnym wywołania te nie produkują już zepsutych operatorów takich jak
0,5 0 0 0,5 0 0 cm, a bardzo małe wartości nigdy nie są zapisywane w postaci wykładniczej - ExportAnnotationsToFDF i ExportAnnotationsToFDFString zapisują prostokąty adnotacji z kropką dziesiętną niezależnie od ustawień regionalnych systemu
- RecolorPage i RecolorDocument zapisują operandy kolorów niezależne od ustawień regionalnych dla każdego separatora dziesiętnego, nie tylko dla przecinka
- AddPageMatrix, ScalePage i RedactRegion odrzucają argumenty NaN lub nieskończone, zamiast zapisywać je na stronie
Version 3.539.25
Naprawiono
- Naprawa wyglądu pól formularza zapisuje /Type i /Subtype w strumieniu wyglądu zamiast tworzyć fałszywe stany /N, kolory obramowania CMYK nie są już czytane poza czterema składowymi, a liczba stron przy usuwaniu pola formularza nie jest już błędnie odczytywana przez pośrednie wartości /Count
- Naprawa stylu pól wyboru zachowuje oba niestandardowe stany eksportu, gdy nie ma stanu Off, zamiast je usuwać, a elementy podrzędne przycisków opcji rejestrują stan włączony z tym samym kodowaniem, z jakim porównują go settery wartości
- Adnotacje załączników plików bez słownika /EF nie powodują już awarii, eksport adnotacji dźwiękowych przestaje zamieniać bajty 8-bitowego dźwięku, krycie adnotacji oznaczeń używa jednej spójnej skali, a SetAnnotRect znowu zgłasza sukces
- Przebudowa wyglądu adnotacji nie zostawia już zwolnionego strumienia w tabeli obiektów struktury, gdy dokument nie ma funkcji zwrotnej obiektów pośrednich
- Optymalizator peephole nie wyrzuca już operacji ustawiania koloru zastąpionych w międzyczasie przez inny operator koloru tej samej strony i nadal scala proste sąsiednie duplikaty
- Ekstrakcja tekstu traktuje operator " jak odstępy między wyrazami i znakami zamiast psuć interlinię, a FindInstructionsInRect nie zgłasza już nakładających się zakresów dla ścieżek z wieloma podścieżkami
- Import EMF: PolyDraw czyta flagi typów punktów z właściwego przesunięcia, POLYTEXTOUTW zawsze czyta tekst w UTF-16 i nie akumuluje już glifów między ciągami, mapowanie glifów drobnego wyprowadzania tekstu nie zastępuje już całego ciągu jednym znakiem, a wypełnienia gradientowe nie dzielą już przez zero na zdegenerowanych prostokątach
- Import EMF ogranicza podane w pliku rozmiar nagłówka bitmapy, liczbę prostokątów regionu, liczbę wielokątów i indeks wierzchołka gradientu do granic rekordu, a także przestaje ucinać wskaźniki rekordów do 32 bitów na Win64
- Obszary półtonowe JBIG2 układają wzory we właściwym kierunku siatki, testy maski pomijania porównują w arytmetyce stałoprzecinkowej, zachowane konteksty arytmetyczne robią migawkę statystyk dekodera zamiast się wysypać, tablice symboli run-length zabezpieczają przed kodem powtórzenia na pierwszej pozycji, symbole częściowo wystające poza kanwę są przycinane zamiast przesuwane, a błędne liczby ujawniają się jako błędy dekodowania, a nie niezwiązane błędy wykonania
- Dekodowanie CCITT inicjalizuje tabele elementów zmiany i obsługuje żądania bitów mniejsze niż pozostałe bity bez ujemnych przesunięć; koder CCITT obejmuje pełny zakres trybu pionowego i przestaje czytać bajt za buforem wiersza
- Wczytywanie TIFF sprawdza granice każdego odczytu IFD, nie pozwala obrazom z paletą dekodować się jak szare rampy, zapisuje StripByteCounts raz i ogranicza żądane numery stron; nieudana rekompresja JPEG nie podaje już uszkodzonego strumienia za sukces
- Porównywanie dokumentów włącza dane strumieni do odcisków obiektów, dopasowuje duplikaty obiektów jeden do jednego, sortuje klucze słowników, rozdziela elementy tablic i zgłasza niepowodzenia porównania zamiast fałszywego werdyktu o braku zmian
- Równoległy generator nazw renderowania nie czyta już poza wzorcem składającym się z jednego znaku
- Naprawiono jeszcze kilka dem: werdykty listy plików pasują do właściwego pliku, przeglądarka wielofunkcyjna faktycznie ponawia próbę z wprowadzonym hasłem, cztery dema nie dodają już pustej pierwszej strony, dema plików osadzonych i operacji na stronach ustalają ścieżki próbek i wyników obok swoich danych wejściowych, a pomocnicy strategii obrazów sprawdzają wyniki biblioteki, na których się opierają
- Kontrolka ActiveX inicjalizuje wynik każdej metody przyjmującej wariant, żeby odrzucony wariant nie zwracał już śmieci ze stosu
Version 3.539.24
Naprawiono
- Token stempla &T rozwija się teraz do Title dokumentu zamiast Author w nagłówkach, stopkach i stemplach
- Adnotacje PrinterMark zapisują rodzaj znacznika /PN jako obiekt nazwy PDF, zgodnie z wymogami ISO 32000-1, a nie jako literał tekstowy
- Zapytania o indeks elementu podrzędnego złożonego pola formularza zwalniają tymczasowe pole podrzędne, zamiast dopuszczać do wycieku
- Zrebalansowane drzewa stron dziedziczą MediaBox, CropBox i Rotate z węzłów przodków, a nie tylko Resources
- XMP CreateDate i ModifyDate zachowują poprawny kształt ISO 8601, gdy data PDF pomija strefę czasową, a import XMP bez opakowania x:xmpmeta nie gubi już kolejnych aktualizacji metadanych
- Ósemkowe sekwencje ucieczki w napisach PDF zatrzymują się na cyfrze 7, więc \0689 dekoduje się teraz jako \06, po którym następuje literał 89, zgodnie z definicją w specyfikacji
- Publikacja QDF zgłasza pierwotny błąd zapisu zamiast maskować go błędem zamknięcia pliku
- Buildy FPC kompresują i rozkompresowują strumienie Flate większe niż jeden chunk jako pojedynczy strumień zlib, a nie jako sklejane człony po jednym na chunk, które inni konsumenci ucinają
- Dema EditFormField generują swój przykładowy formularz przy pierwszym uruchomieniu, zamiast go nie znajdować, a kilka dem zgłasza teraz nieudane wczytanie dokumentu, zamiast po cichu zapisywać pusty PDF
Zmieniono
- Indeks wyszukiwania dokumentacji wymienia zlokalizowaną stronę argumentów sprzedażowych pod własnym tytułem każdego języka zamiast jednego wspólnego chińskiego tytułu dla wszystkich lokalizacji
Version 3.539.23
Dodano
- Natywne dekodowanie JBIG2 akceptuje samodzielną organizację pliku o dostępie losowym ze znanymi długościami segmentów, w tym niestandardowe tablice Huffmana i obrazy rafinacji
Naprawiono
- Wejście o dostępie losowym sprawdza kolejność nagłówków, wymagany nagłówek końca pliku i całkowite długości danych przed dekodowaniem, odrzucając obcięte lub nadmiarowe dane bez zachowywania starej bitmapy
Version 3.539.22
Dodano
- Natywne dekodowanie JBIG2 obsługuje niestandardowe tablice Huffmana dla słowników symboli i obszarów tekstowych, z jawnymi błędami dla źle sformowanych tablic i nieobsługiwanych długości prefiksów
Naprawiono
- Dekodowanie rafinacji Huffmana zużywa zadeklarowany rozmiar bitmapy i zachowuje piksele symboli o częściowych bajtach, zapobiegając uszkodzonemu tekstowi na dotkniętych obrazach JBIG2
Version 3.539.21
Naprawiono
- Dekodowanie Flate i LZW respektuje znacznik algorytmu PNG dla każdego wiersza przy predyktorach od 10 do 14, zamiast dekodować każdy wiersz algorytmem wskazanym w słowniku. Legitymiczne cross-reference streams skompresowane z Predictor 12 znowu się ładują, wiersze obrazu nie dekodują się już przesunięte, a wiersze mogą zmieniać algorytm w obrębie jednego obrazu
Version 3.539.20
Naprawiono
- Pierwsza edycja informacji o dokumencie lub identyfikatora standardowego przechwytuje oryginalny XMP przed inicjalizacją obiektu edytora, więc istniejący autor, identyfikator dokumentu i własne właściwości nie są już nadpisywane domyślnymi metadanymi; zmiany informacji o dokumencie trafiają też do XMP pod Free Pascal na Windows, a XML bez otoczki xpacket jest zapisywany bez zmian
Version 3.539.19
Naprawiono
- Zapisanie niezmodyfikowanego obiektu dziesiętnego zachowuje precyzję, z jaką został sparsowany, zamiast zaokrąglać go do domyślnej precyzji wyjściowej, więc skalibrowane parametry kolorów, takie jak gamma i macierz CalRGB, nie przesuwają już kolorów strony przy zwykłym zapisie; nowo utworzone lub edytowane liczby nadal używają skonfigurowanej precyzji
Version 3.539.18
Naprawiono
- Aktualizacja informacji o dokumencie podmienia tylko wartość pola docelowego: gdy data utworzenia i data modyfikacji odwołują się do tego samego ciągu pośredniego, odświeżenie daty modyfikacji nie przepisuje już daty utworzenia
Version 3.539.17
Zmieniono
- Wykrywanie wersji i sprawdzanie wstępne przy zapisie unikają powtarzających się kopii zarządzanych ciągów podczas zbierania reguł funkcji, ograniczając narzut skanowania na dużych dokumentach; wykrywanie funkcji, wymagania wersji i pierwsza diagnostyka niezgodnej funkcji zachowują się dokładnie jak wcześniej
Version 3.539.16
Naprawiono
SaveQDFToFileiConvertFileToQDFnie zapisują już zwykłych skompresowanych content streams Flate jako pustych strumieni pod Free Pascal i Lazarus; dekompresja od jawnego położenia początkowego stosuje poprawne przesunięcie liczone od jedynki i pełną długość wejścia
Version 3.539.15
Naprawiono
- Dekoder JBIG2 bezpiecznie czyta lokalne i globalne segmenty profilu i pobiera pierwszą bitmapę przez standardowy numer strony 1
- Dekodowanie bitmap MMR wyrównuje pozycję odczytu do zadeklarowanej granicy segmentu po ostatnim pikselu, więc końcowy EOFB lub padding nie jest już mylony z nagłówkiem następnego segmentu
- Niestandardowe tablice Huffman, organizacja o dostępie swobodnym oraz nieznane albo przesadnie długie długości segmentów kończą się jawnym błędem; ucięte profile i nielegalne odwołania do segmentów przerywają dekodowanie,
TPLJBIG2Decoder.LastErrorpodaje powód, a niepowodzenie czyści nieaktualną bitmapę RepairQDFFilepublikuje przez plik tymczasowy utworzony na wyłączność w katalogu docelowym i zastępuje cel dopiero po zapisaniu, opróżnieniu i zamknięciu pliku tymczasowego; naprawa w miejscu i wynik z nadpisaniem zachowują stary plik, gdy zapis, opróżnienie lub zastąpienie zawiedzie, i zgłaszają wynik 0 z kodem błędu 305- Publikacja zachowuje istniejący DACL celu przed zapisaniem pliku tymczasowego i jawnie zawodzi, gdy nie da się zachować uprawnień albo cel jest zaszyfrowany przez EFS; wejście zablokowane na wyłączność lub nieczytelne zgłasza kod błędu 401 zamiast rzucać wyjątek odczytu, a publikacja plików obsługuje ścieżki Windows Unicode i o rozszerzonej długości
Version 3.539.13
Naprawiono
- Naprawa pliku QDF nie gubi już zawartości strumieni, których ciało zawiera znaczniki
endstreamlubendobjw całych liniach; naprawa wybiera ostatnią kompletną parę znaczników końca przed znanym ogonem obiektu - Znaczniki końca specyficzne dla obiektu, powtarzające się wewnątrz strumienia, powodują niepowodzenie naprawy przed wyczyszczeniem strumienia docelowego, zachowując oryginalne bajty, długość i pozycję
RepairQDFFilewykonuje całą naprawę w pamięci i otwiera cel do zapisu dopiero po sukcesie, więc odrzucone wejście nie potrafi już utnąć pliku otwartego przezfmCreate- Ciągi specyfikacji pliku zachowują udokumentowaną kolejność — najpierw
/UF, potem/Fjako fallback — i nie nadają nieznanym kluczom/Pathpriorytetu nazwy
Version 3.539.10
Naprawiono
- Dekodowanie LZW rozszerza szerokość kodu na progu dekodera, a nie kodera, dzięki czemu strumienie we wszystkich szerokościach kodu i przy powtarzających się resetach słownika dekodują się poprawnie — zweryfikowano względem Pillow, libtiff i PDFium
- Analiza podpisów CMS przenosi granice rodzica przez ContentInfo, opakowania EXPLICIT, SignedData, zbiory i pola tożsamości, więc dane poza zakresem nie są już używane do liczenia certyfikatów ani dopasowywania tożsamości, natomiast poprawny padding po obiekcie zewnętrznym jest nadal akceptowany
- Aktualizacja etykiet stron w dokumencie, którego PageLabels używają drzewa liczbowego
/Kids, konwertuje istniejące wpisy na węzły liściowe korzenia zamiast dodawać drugi, wzajemnie wykluczający się wpis/Nums, który czytniki ignorowałyby - Przykład Lazarus MergePDF czyta wejścia z drugiego argumentu wiersza poleceń, traktuje pojedyncze jawne wejście jako błąd parametru i nie wypisuje już komunikatu o sukcesie, zanim generowanie się nie powiedzie
Version 3.539.6
Naprawiono
- Skanowanie bufora zatrzymuje się przy zerowym zwrocie z
TStream.Readzamiast przy skróconym odczycie, a strumienie zwracające po kilka bajtów naraz nie pomijają już końca skanowanych danych - Kodowanie OID scala pierwsze dwa łuki w jeden podidentyfikator base-128, dzięki czemu
2.999.3koduje się jako06 03 88 37 03zamiast po cichu zmieniać się w1.15.3 - Rysowanie podglądu do ponownie użytego strumienia obrazu najpierw czyści starą zawartość, więc mniejszy render nie zachowuje już ogona poprzedniego obrazu
CopyPageRangeszwalnia swoje instancje dokumentów w blokufinally, obejmując nieudane wczytanie, wyjątki i normalne zakończenie
Version 3.539.3
Poprawki
- Kod błędu 526 nie oznacza już dwóch różnych rzeczy.
PDFLIB_ERROR_TEXT_LOCATION_INVALID,PDFLIB_ERROR_TEXT_LOCATION_STALEiPDFLIB_ERROR_TEXT_LOCATION_READ_ONLYprzenoszą się na kody 535, 536 i 537, które były nieprzypisane, więc wywołujący rozgałęziający się według 526 widzi tylko awarię eksportu JSON, na którą ten kod był udokumentowany; kody 527 i 528 nie są już używane PDFlibErrorMessageopisuje kody od 101 do 104 według tego, co faktycznie je wywołuje. Te cztery kody należą do parametrów szyfrowania, a nie do błędów parsowania, na jakie wskazywała tabela komunikatów, więc awaria siły szyfrowania nie zgłasza już "Invalid PDF structure"PDFlibErrorMessagezwraca rzeczywisty komunikat dla każdego kodu, który zgłasza biblioteka. Awarie otwarcia byte-range i HTTP, otwarcie pliku sieciowego, rozmiar surowego klucza szyfrowania, eksport JSON, odrzucenia uchwytów oznaczonej zawartości i clip-path, przenumerowane kody lokalizacji tekstu, kody zgodności czcionek nadających się do osadzenia oraz PDF/VCR i PDF/E, a także formularze zduplikowanego pola i skryptów formularzy spadały wcześniej z powrotem na ogólny tekst "<segment> error (NNN)"- Strona referencyjna
LastErrorCodewymienia pełny zestaw kodów, w tym wcześniej brakujący kod 705 zduplikowanego pola, i nie pokazuje już wycofanych wpisów 527 i 528
Version 3.539.2
Poprawki
- Plik TIFF, którego katalog deklaruje więcej wartości niż zawiera plik, jest teraz całkowicie odrzucany. Wartości były odrzucane, ale liczba pozostawała, więc kolejne czytniki pobierały pierwszy element pustej tablicy
- Plik PNG z typem koloru lub głębią bitów poza formatem jest odrzucany zamiast dekodowania bez kanałów koloru, co wysyłało filtry wierszy do pustego bufora
- Fragment rozdzielczości PNG krótszy niż dziewięć zdefiniowanych bajtów nie czyta już poza przekazanymi danymi
- Dwuwymiarowe obrazy CCITT Group 3 i Group 4 dekodują się w Free Pascal i Lazarus; wyszukiwanie linii odniesienia zwracało tablicę nigdy nieutworzoną, a ten kompilator pozostawia ją pustą
Version 3.539.1
Poprawki
- Pamięć podręczna na dysku przeglądarki usuwa teraz renderowane bitmapy przy każdej aktualizacji biblioteki. Porównywany znacznik wersji był prowadzony oddzielnie od wersji biblioteki i zaczął pozostawać w tyle, więc pamięć ze starszej kompilacji mogła zostać ponownie użyta po aktualizacji
- Kompilacje Free Pascal i Lazarus ponownie poprawnie czytają 16-bitowe bitmapy
BI_BITFIELDS: maski kanałów pobierano z niewłaściwego przesunięcia, gdy plik używał rozszerzonego nagłówka informacji, przez co kolory były pomieszane - Wiersze bitmap nie są już błędnie czytane w kompilacjach bez obsługi urządzenia: wiersze 1- i 4-bitowe mierzono dzieleniem całkowitoliczbowym, traciły ostatnie piksele każdego wiersza, a zapis przesuwał blok pikseli o jeden bajt
- Przechwycenie rysunku do metapliku nie tworzy już pustego obrazu, gdy rozmiar nie jest znany wcześniej; rejestrowana ramka pochodzi teraz z samego rysunku, jak w VCL
- Odczyt bitmapy, której zadeklarowany rozmiar palety przekracza głębię kolorów, jest odrzucany zamiast być traktowany jako wiarygodny
- Zapytania o stan zadań drukarki zwalniają otwarty uchwyt bukietu, więc odpytywanie zadania nie przecieka już uchwytem na wywołanie
Docs\index.htmlto ponownie brama języków. Synchronizacja dokumentacji zastąpiła ją kopią nawigacji referencyjnej w uproszczonym chińskim, której łącza wskazywały nieistniejący katalog
Zmiany
- Pakiet Lazarus
PDFlibPasLaz.lpkzawiera teraz opcjonalne jednostki kodera LZW, Brainpool, Ed448, ML-DSA, drukarki PDF i zewnętrznego kodera JBIG2 wraz z deklaracjami metaplików, zgodnie z zestawem kompilacji wiersza poleceń build-Win64-Demo-Laz.cmdprzekazuje dobuild-Lazarus-Demo.cmd win64, więc oba punkty wejścia umieszczają programy demonstracyjne wbin\x86_64-win64, a nie w katalogu źródłowym
Version 3.539.0
Dodano
- Free Pascal i Lazarus obsługują teraz kompilacje 32-bitowego systemu Windows obok Win64, w tym tworzenie, wczytywanie i szyfrowanie plików PDF oraz obrazy JPEG 2000
- Skrypty budowania biblioteki Lazarus, wersji trial, demonstracji i testów konsolowych przyjmują
win32lubwin64i obsługują kompilatory krzyżowe działające na hoście Win32, z osobnymi katalogami wyjściowymi dla każdej architektury
Zmieniono
- W systemie Win32 na żądanie zewnętrznego kodera używany jest wbudowany koder Pascal JBIG2; statycznie dołączony koder zewnętrzny pozostaje dostępny w Win64
- Kompilacje FPC obejmują kompresję za pośrednictwem dołączonej implementacji zlib w Pascalu i nie ładują już
zlib1.dllze ścieżki wyszukiwania systemu
Version 3.538.0
Dodano
- Kompilacje Free Pascal i Lazarus mogą teraz korzystać z zewnętrznego kodera JBIG2: dodaj do projektu nową jednostkę PDFlibJBIG2EncDLL i trzymaj
pdflibjbig2enc.dllobok pliku wykonywalnego, aAddImageJBIG2FromStreamExi pozostałe punkty wejścia JBIG2 będą tam honorować żądanie kodera zewnętrznego dokładnie tak jak na Delphi. Bez DLL żądanie nadal wraca do wbudowanego kodera Pascal, więc projekty, które go nie dołączają, pozostają nietknięte - Nowy redystrybucyjny
DLL\JBig2Enc\Win64\pdflibjbig2enc.dlloraz skrypt budowy, który go tworzy
Version 3.537.0
Dodano
- Kompilacje Free Pascal i Lazarus konwertują metapliki na wektorową treść stron.
ImportEMFFromFile,ImportEMFFromStream, ich warianty Ex,LoadFromCanvasDCiNewPageFromCanvasDCprodukują tam teraz prawdziwe operatory rysowania PDF z osadzonymi czcionkami, jak na Delphi, zamiast zgłaszać, że tryb jest niedostępny. Tekst pozostaje zaznaczalny i przeszukiwalny, a wynik stanowi ułamek rozmiaru importu rastrowego
Version 3.536.7
Naprawiono
- Wyliczanie drukarek zwraca prawdziwe nazwy na Free Pascal i Lazarus. Każda drukarka była zwracana jako sam jej pierwszy znak, przez co wybór drukarki, własne profile drukarek i sam druk odrzucały każdą zainstalowaną drukarkę
GetPrinterNamesnie powoduje już awarii w kompilacjach bez VCL: teraz pyta spooler bezpośrednio, jak robiło to jużGetLatestPrinterNames
Version 3.536.6
Naprawiono
- Konwersja metaplika na wektorową treść stron zgłasza teraz niepowodzenie w kompilacjach, które tego nie potrafią, zamiast zwracać obraz o pustej treści.
ImportEMFFromFile,ImportEMFFromStream, ich warianty Ex iLoadFromCanvasDCzwracały tam pozornie poprawny identyfikator obrazu, więc strona wychodziła pusta bez żadnej wskazówki, dlaczego. Import tego samego metaplika jako obrazu pozostaje nietknięty i niesie identyczny obraz - Przechwytywanie z canvasu i import metaplików nie powodują już awarii, gdy konwersja nie może zostać wykonana: oba punkty wejścia używały otrzymanego obrazu bez sprawdzenia, czy w ogóle istnieje
Version 3.536.5
Naprawiono
- Rastrowy import metaplików działa na Free Pascal i Lazarus.
ImportEMFFromFile,ImportEMFFromStreami ich warianty Ex nie zwracały niczego, gdy żądano rasteryzacji, aLoadFromCanvasDCw tym samym trybie powodował awarię, ponieważ strumień rysowania przekazywany modułowi wczytującemu obrazy nie był takim, jaki ten potrafił odczytać. Ścieżki wektorowe nie były dotknięte
Version 3.536.4
Naprawiono
- Przechwytywanie metaplika na Free Pascal i Lazarus znów raportuje rozmiar fizyczny, więc
LoadFromCanvasDCi pozostałe punkty wejścia przechwytywania z canvasu importują rysunek zamiast zawodzić na ramce o zerowym rozmiarze - Obiekt czcionki bez VCL raportuje teraz prawdziwy
PixelsPerInchi poprawnie kopiuje się przyAssign. Wcześniej oba działania były martwe: kod pobierający z czcionki rozdzielczość renderowania żądał canvasu o zerowym rozmiarze, a przekazanie przygotowanej czcionki do canvasu po cichu zachowywało starą - Metapliki tworzone na Free Pascal domyślnie otrzymują format rozszerzony, jak na wszystkich innych platformach; wcześniej zapisywały się w przestarzałym układzie 16-bitowym, chyba że kod wywołujący sam ustawiał flagę
Version 3.536.3
Naprawiono
- Kompilacje Free Pascal i Lazarus importują teraz obrazy BMP o głębi 4, 8 i 16 bitów.
AddImageFromFileiAddImageFromStreampo cichu nie zwracały obrazu dla tych głębi, w tym 16-bitowej postaciBI_BITFIELDSzapisywanej przez programy graficzne, ponieważ czytnik bitmap bez VCL rozumiał tylko wejście 1-, 24- i 32-bitowe
Version 3.536.2
Naprawiono
- Klasyczny eksport metaplików GDI działa na Free Pascal i Lazarus:
RenderPageToMetafileFileiRenderPageToMetafileStreamzgłaszały naruszenie dostępu dlamfEMFimfWMF, ponieważ canvas metaplików bez VCL był pustym zastępnikiem bez pędzla, pióra i czcionki. Oba formaty zapisują się teraz do prawdziwego rozszerzonego metaplika i są zapisywane do pliku, przy czymmfWMFz nagłówkiem placeable, którego wymaga plik .wmf
Version 3.536.1
Naprawiono
- Kompilacje Free Pascal i Lazarus zapisują teraz poprawne pliki BMP o głębi 1, 4 i 8 bitów: zastępnik bitmapy w miejsce wersji VCL nie emitował w ogóle tablicy kolorów, więc bitmapy indeksowane paletą były odrzucane przez każdy czytnik i rysowane na całkowicie czarnej palecie
- Import obrazów dwupoziomowych znów działa na Free Pascal:
AddImageCCITTFromFile,AddImageCCITTFromStreami ich odpowiedniki JBIG2 potrafią teraz odczytać otrzymywane bitmapy 1-bitowe, zamiast zawodzić z powodu dekodowania wyłącznie wejścia BMP 24- i 32-bitowego
Version 3.536.0
Dodano
- Kompilacje Free Pascal i Lazarus wykonują teraz równoległe ścieżki wsadowe zamiast wracać do pętli seryjnych:
RenderPagesToFilesParallel, wsady optymalizacji stojące za optymalizacją dokumentu i równoległe renderowanie kafli rozpraszają się tam na rdzenie CPU, co odpowiada zachowaniu Delphi
Zmieniono
- Równoległe renderowanie stron renderuje teraz pierwszą stronę w wątku wywołującym, zanim rozdzieli pracę, dzięki czemu silnik renderowania inicjalizuje się raz, a nie równolegle przez każdy wątek roboczy
Version 3.535.0
Dodano
- Kompilacje Free Pascal i Lazarus dostarczają teraz koder JPEG 2000:
EncodeImageToJPXStream,EncodeImageToJPXFile,AddImageJPXFromFile,AddImageJPXFromStreamiAddImageJPXFromStringtworzą tam obrazy JPXDecode dokładnie tak jak na Delphi, zarówno w trybie stratnym, jak i bezstratnym - Bitmapa bez VCL używana przez kompilacje Free Pascal, macOS i FireMonkey wczytuje teraz nieskompresowane strumienie BMP o głębi 24 i 32 bity oraz zgłasza format z kanałem alfa
Naprawiono
- Dekodowanie obrazów przez backend obrazowania Windows nie powoduje już awarii w kompilacjach Free Pascal; strumienie są teraz przekazywane backendowi w formie, którą akceptuje
- Przypisanie jednej bitmapy do drugiej w kompilacjach bez VCL kopiuje piksele zamiast zostawiać bitmapę docelową pustą, co po cichu dawało pusty wynik w ścieżkach konwersji obrazów
Version 3.534.1
Naprawiono
- Wbudowany dekoder TIFF odrzuca teraz nieobsługiwane układy BigTIFF i układy kafelkowe z jawną diagnostyką oraz ogranicza zdekodowane wymiary i rozmiary pasków przed alokacją
Version 3.534.0
Zmieniono
CheckFileCompliancei wstępna weryfikacja PDF/UA walidują teraz osadzone szerokości czcionek prostych i CID, kompletne deklaracje Type 1/CharSeti CID/CIDSet, Form XObjects zawierające tekst wywoływane poza oznaczoną zawartością oraz operandy tekstowe rozwiązujące się do.notdef
Version 3.533.0
Dodano
TPDFlibPKCS11Clientpotrafi wykrywać jawnie wybrane klucze ML-DSA bez certyfikatów, zgłaszać ich zestaw parametrów i podpisywać oryginalne komunikaty za pośrednictwem mechanizmu PKCS #11 3.2CKM_ML_DSA
Version 3.532.0
Zmieniono
- Duże strumienie używające wspólnego łańcucha filtrów
/ASCII85Decodei/FlateDecodekodują i dekodują teraz przez potok o ograniczonej pamięci bez materializowania reprezentacji pośredniej
Version 3.531.0
Dodano
AddWebCaptureCommand,GetWebCaptureCommandCount,GetWebCaptureCommandiClearWebCaptureCommandstworzą, wyliczają i usuwają standardowe metadane poleceń Web Capture katalogu/SpiderInfobez wykonywania pobierania z sieci
Version 3.530.0
Dodano
BPLoadCurve,BPKeyGen,BPSignFixedKiBPVerifyimplementują ECDSA nad trzema krzywymi ciał pierwszych z RFC 5639: brainpoolP256r1, brainpoolP384r1 i brainpoolP512r1 w czystym Pascalu: 33-członowa arytmetyka o podstawie 2^16 wspólna dla wszystkich szerokości krzywych, bitowo-szeregowa redukcja modularna, podwojenie i dodawanie Jacobiego z jawnymi zabezpieczeniami przed aliasami, inwersja Fermata oraz dostarczana przez wywołującego liczba nonce do podpisu; wektory znanych odpowiedzi wygenerowane niezależną implementacją i skrośnie zweryfikowane w obu kierunkach przechodzą na każdej krzywej, podobnie jak testy regresyjne rundy i odrzucania manipulacji
Version 3.529.0
Dodano
Ed448PublicKeyFromSeed,Ed448SigniEd448Verifyimplementują RFC 8032 PureEdDSA na edwards448 w czystym Pascalu: 16-członowa arytmetyka ciała o podstawie 2^28 Goldilocks ze złożeniem Solinasa 2^448 = 2^224 + 1, silnie zunifikowane dodawanie grupowe w postaci iloczynowej dla krzywych a = +1, redukcja modularna modulo rząd grupy dla 114-bajtowych skalarów SHAKE256 oraz weryfikacja z kofaktorem 4; oba wektory znanych odpowiedzi z sekcji 7.4 RFC 8032 przechodzą bajt po bajcie, podobnie jak testy regresyjne rundy, odrzucania manipulacji i walidacji długości
Version 3.528.0
Dodano
MLDSA65KeyGen,MLDSA65SigniMLDSA65Verifyimplementują FIPS 204 ML-DSA-65 z kluczami publicznymi o długości 1952 bajtów, kluczami tajnymi o długości 4032 bajtów i podpisami o długości 3309 bajtówMLDSA87KeyGen,MLDSA87SigniMLDSA87Verifyimplementują FIPS 204 ML-DSA-87 z kluczami publicznymi o długości 2592 bajtów, kluczami tajnymi o długości 4896 bajtów i podpisami o długości 4627 bajtów
Version 3.527.0
Dodano
PDFlibMLDSAdostarcza czystą implementację Pascal FIPS 204 ML-DSA-44 z deterministycznym generowaniem kluczy z ziarna, podpisywaniem zabezpieczonym lub deterministycznym, ograniczonym próbkowaniem odrzucającym oraz weryfikacją podpisuMLDSA44KeyGen,MLDSA44SigniMLDSA44Verifyużywają standardowych rozmiarów: klucz publiczny 1312 bajtów, klucz tajny 2560 bajtów i podpis 2420 bajtów, obsługują konteksty do 255 bajtów i są weryfikowane względem oficjalnego wektora znanych odpowiedzi
Version 3.526.0
Dodano
- Strumieniowy kontekst SHAKE XOF (
PLShakeXOFInit/PLShakeXOFAbsorb/PLShakeXOFFinalize/PLShakeXOFSqueeze) wyciska dowolne liczby bajtów w permutacjach Keccak zarówno dla SHAKE128 (tempo 168), jak i SHAKE256 (tempo 136), z jednorazową otoczkąPLShakeXOF; 200-bajtowe wyjścia przekraczające bloki są weryfikowane względem referencyjnych skrótów obu wariantów
Version 3.525.0
Zmieniono
SHAKE256ByteArrayiSHAKE256StreamRangeakceptują teraz wyjścia do tempa gąbki wynoszącego 136 bajtów (wcześniej 64), co umożliwia jednorazowe skróty przy długości skrótu Ed448 wynoszącej 114 bajtów; nowe testy znanych odpowiedzi obejmują 114-bajtowe wyjścia pustego komunikatu i komunikatuabc
Version 3.524.0
Dodano
DownsampleImagesExklasyfikuje każdy obraz jako dwutonowy, w skali szarości lub kolorowy na podstawie zadeklarowanej przestrzeni barw i bitów na składową oraz stosuje budżet DPI dla każdej klasy i jakość JPEG w jednym przebiegu; skany dwutonowe są ponownie kodowane bezstratnie, a flaga tylko-jeśli-mniejsze zachowuje oryginalne bajty, gdy ponowne kodowanie rośnie
Version 3.523.0
Dodano
CopyForeignObjectkopiuje w głąb jeden obiekt pośredni wraz z jego pełnym domknięciem referencji z innego wczytanego dokumentu do dokumentu wybranego, przemapowując numery obiektów tak, aby współdzielone referencje pozostały współdzielone w kopii
Version 3.522.0
Dodano
SetPagePieceInfo,GetPagePieceInfoiClearPagePieceInfozarządzają słownikami prywatnych danych na poziomie strony (ISO 32000-2 14.5) kluczowanymi nazwą aplikacjiAddNamedPageiGetNamedPagerejestrują i rozwiązują strony po nazwie przez drzewo nazw /Names /Pages katalogu
Version 3.521.0
Dodano
GetImageListItemNativeDataToString,GetImageListItemNativeFormatiSaveImageListItemNativeDataToFilewyodrębniają surowy, nadal zakodowany strumień kodeka dowolnego obrazu z listy (JPEG, JPEG 2000, JBIG2, CCITT, Flate lub surowy) bez dekodowania, zachowując oryginalne bajty dla przepływów przekazywania bez zmian
Version 3.520.0
Dodano
AnalyzeModificationsklasyfikuje każdą zmianę od zapisanej rewizji względem białej listy aktualizacji LTA, wypełniania formularzy i adnotacji oraz zwraca ogólny poziom modyfikacjiGetModificationLevel,GetModificationFindingCount,GetModificationFindingLevel,GetModificationFindingObjNumiGetModificationFindingDetailudostępniają sklasyfikowane ustalenia z ostatniej analizy
Version 3.519.0
Dodano
CompareWithwykonuje porównanie strukturalne między wybranym dokumentem a zapisaną rewizją, klasyfikując każdy obiekt pośredni jako dodany, usunięty lub zmieniony za pomocą odcisków palców zawartości ignorujących przesunięcia numerów obiektówGetCompareFindingCount,GetCompareFindingKind,GetCompareFindingObjNumiGetCompareFindingDetailodczytują ustalenia z ostatniego porównania, w tym różnice liczby stron
Version 3.518.0
Dodano
SHAKE256ByteArrayiSHAKE256StreamRangeudostępniają skrót SHAKE256 o rozszerzalnym wyjściu (ISO/TS 32001, RFC 8702) z dwusegmentowymi odczytami zakresów bajtów i wyjściami 1..64 bajtów, zweryfikowany względem testów znanych odpowiedzi NIST FIPS 202
Zmieniono
- Rdzeń Keccak zawiera teraz bajt separatora domeny, dzięki czemu SHA-3 i SHAKE współdzielą jedną implementację permutacji; w profilu podpisywania CMS SHAKE256 pozostaje zarezerwowany jako wewnętrzny skrót Ed448 i celowo nie występuje w selektorze skrótów
Version 3.517.0
Dodano
AddPageAssociatedFileFromFileiAddPageAssociatedFileFromStringwiążą osadzone specyfikacje plików z tablicą /AF pojedynczej strony (ISO 32000-2 14.13) zamiast z katalogiem dokumentuGetPageAssociatedFileCount,GetPageAssociatedFileEmbeddedIndexiClearPageAssociatedFileswyliczają i usuwają powiązane pliki na poziomie strony po rundach zapisu i wczytaniaSetOptionalContentConfigInfozapisuje metadane prezentacji (nazwę konfiguracji, twórcę i tryb listy panelu warstw) w domyślnej konfiguracji zawartości opcjonalnej
Version 3.516.0
Dodano
ApplyContentFilterChainiTPDFContentFilterChainuruchamiają filtry zawartości na poziomie instrukcji na każdej warstwie zawartości strony, z uporządkowanymi łańcuchami, kontrolą wczesnego zatrzymania i przekazywaniem danych użytkownikaExportDocumentJSONiGetDocumentJSONserializują pełny graf obiektów dokumentu, w tym słowniki strumieni z ładunkami base64 oraz przyczepę, do struktury JSON w stylu qPDFSetPDFDeclarations,GetPDFDeclarationsURI,GetPDFDeclarationsRole,GetPDFDeclarationsVersion,GetPDFDeclarationsCount,HasPDFDeclarationiClearPDFDeclarationszapisują, odczytują i usuwają czytelne dla maszyn deklaracje zgodności PDF DeclarationsAuditPageTree,AuditXRefStructure,AuditObjectReachability,AuditStreamLengths,AuditFontEmbeddingiAuditColorSpacesuruchamiają sześć niezależnych przebiegów diagnostyki strukturalnej z ustaleniami klasyfikowanymi według wagiGetAuditFindingCount,GetAuditFindingSeverity,GetAuditFindingItemiGetAuditFindingDetailodczytują ustalenia z ostatniego wywołania audytu
Version 3.515.0
Dodano
ExecuteFormFieldScriptEventiTPDFlibFormScriptEventwykonują ograniczone zdarzenia pól Keystroke, Format, Validate i Calculate z kontrolowanymi właściwościami Event, Field i DocumentSetFormScriptLimits,GetFormScriptLimitsJSONiGetFormScriptDiagnosticskonfigurują i raportują budżety źródła, operacji, zagnieżdżenia, ciągów i dostępu do właściwości
Zmieniono
- Bezpieczne środowisko uruchomieniowe skryptów formularzy udostępnia teraz metadane źródłowego i docelowego pola tylko do odczytu, wyszukiwanie pól dokumentu oraz stan zaznaczenia keystroke, zachowując zgodność tylko-wartościową
Zabezpieczenia
- Wykonywanie skryptów odrzuca teraz zdarzenia wartości przycisków, mutacje obiektów i zaznaczenia poza zakresem, stosuje niezależne limity zasobów do wykonania i analizy zależności oraz raportuje ograniczone lokalizacje błędów parsera
Version 3.514.0
Dodano
SetPDFEModetworzy dokumenty inżynieryjne PDF/E-1 ze składnią PDF 1.6, zsynchronizowaną identyfikacją Info i XMP, metadanymi cyklu życia oraz osadzoną intencją wyjściową zarządzaną barwnieGetPDFEDiagnosticsi test zgodności 7 zapewniają walidację PDF/E-1 przy zapisie, bezpośredniego pliku i wspólnego potoku z ograniczonymi budżetami obiektów, zawartości i rekurencji
Zmieniono
- Zapisy PDF/E-1 wymuszają teraz identyfikację, metadane cyklu życia, dozwolone szyfrowanie, spójność intencji wyjściowej, wykluczenia XFA i bramki niebezpiecznych akcji, a wstępna weryfikacja dodatkowo audytuje przestrzenie barw urządzeń, operatory zawartości, czcionki, adnotacje, formularze, zawartość opcjonalną, odwołania do plików zewnętrznych, stany grafiki i ograniczenia strumieni 3D
Version 3.513.0
Dodano
SetPDFVCRModeoraz interfejsy API zakresów szablonów i symboli zastępczych tworzą szablony zastępowania PassThrough PDF/VCR-1 na fundamencie PDF/X-4GetPDFVCRDiagnostics,GetPDFVCRManifesti test zgodności 6 zapewniają walidację przy zapisie, bezpośredniego pliku i wspólnego potoku oraz walidowane wyodrębnianie pól JSON i symboli zastępczych
Zmieniono
- Zapisy PDF/VCR wymuszają teraz metadane identyfikacji, jeden bezpośredni katalog główny szablonu, unikalne zadeklarowane pola, prawidłowy wybór stron, zastępcze symbole na poziomie liści oraz dokładne powiązania stron i MCID w całym drzewie struktury
Version 3.512.0
Dodano
SetPDFRModei interfejsy API stron rastrowych PDF/R tworzą ograniczone dokumenty wymiany rastrowej z danych surowych, CCITT Group 4 lub JPEG bez transkodowania obsługiwanych danych skompresowanychGetPDFRDiagnosticsi test zgodności 5 zapewniają walidację PDF/R w pamięci, bezpośredniego pliku i wspólnego potoku
Zmieniono
- Zapisy PDF/R wymuszają teraz wymagany znacznik, profil wersji i szyfrowania, obiekty generacji zero, ograniczone słowniki i filtry, pojedynczy strumień zawartości, operatory wyłącznie rastrowe, uporządkowane zasoby pasków, spójność barw i rozdzielczości oraz pełne pokrycie strony
Version 3.511.0
Dodano
TPDFlibFormTextDirection,SetTextDirection,GetVisualCaretOrderiMoveVisualCaretdodają automatyczny lub jawny kierunek akapitu oraz bezpieczną dla grafemów fizyczną nawigację karetki dla edycji formularzy o mieszanym kierunkuResolvedTextDirectioniVisualCaretPositionujawniają efektywny kierunek akapitu i rozróżniają podzielone gniazda karetki na granicach dwukierunkowych
Zmieniono
- Kształtowane przebiegi tekstu stosują teraz wizualne uporządkowanie na poziomie osadzania dla zawartości mieszanej od lewej do prawej i od prawej do lewej, podczas gdy wartości pól pozostają w logicznej kolejności UTF-16
Version 3.510.0
Dodano
MinimumSlotHeightodkłada kompozycję dynamicznego składnika przed klonowaniem lub przechwytywaniem, gdy bieżący region jest zbyt niskiMinimumFollowingHeightzachowuje końcowy fragment wraz z pierwszym regionem następnego składnika zdefiniowanym przez wywołującego, bez ograniczania fragmentów pośrednichTPDFlibDynamicRetryReason,LastRetryReasoniLastRequiredSlotHeightujawniają, dlaczego rozmieszczenie zostało odroczone, oraz znaną wymaganą wysokość
Zmieniono
- Ponowienia w przestrzeni przepływu zachowują teraz zatwierdzone fragmenty, stan składnika, indeksy kompozycji i zawartość strony, odrzucając wyłącznie odizolowaną próbę
Version 3.509.0
Dodano
TPDFlibDynamicPaginationPolicydodaje tryby podziału, jednorazowego trzymania razem oraz ścisłego pełnego rozmieszczania z odrębnym wynikiem ponowienia i obserwowalnym stanem oczekiwania
Zmieniono
- Odroczone próby dynamicznych składników odrzucają teraz atomowo przechwyconą zawartość i stan zmienny, podczas gdy ścisłe rozmieszczanie akceptuje proporcjonalne zmniejszenie skali, ale nigdy wyjścia częściowe lub przycięte
Version 3.508.0
Dodano
TPDFlibFormSession.DispatchInputEventprzyjmuje typowane, niezależne od platformy zdarzenia wskaźnika, kółka, klawiszy nazwanych i tekstu złożonego oraz zwraca stan fokusa, najechania, naciśnięcia, zaznaczenia i zmiany wartości
Zmieniono
- Dyspozycja wejścia formularzy wymusza teraz uporządkowane przejścia wskaźnika Widget
/E,/X,/Di/U, anulowanie przechwytywania, edycję bezpieczną dla grafemów, przesuwanie karetki świadome linii, standardowe skróty zaznaczania i historii, aktywację przycisków oraz nawigację kółkiem wyboru
Naprawiono
- Historia Backspace i Delete przywraca teraz widoczną dla użytkownika karetkę sprzed naciśnięcia klawisza zamiast tymczasowego zaznaczenia grafemu używanego wewnętrznie do zamiany atomowej
Version 3.507.0
Dodano
TPDFlibFormSessionudostępnia teraz ograniczone cofanie i ponawianie na poziomie pola z zapytaniami dostępności, zachowanymi licznikami kroków, konfigurowalną pojemnością i jawnym czyszczeniem historii
Zmieniono
- Historia edycji formularza przechowuje zwarte delty tekstu, przywraca wartości i ukierunkowane zaznaczenia bez ponownego wysyłania akcji lub wywołań zwrotnych, odrzuca gałęzie ponawiania po nowych edycjach i czyści się na granicach cyklu życia edycji
Version 3.506.0
Dodano
TPDFlibFormSessionudostępnia teraz zamianę zaznaczenia, wycinanie i wklejanie dostarczane przez wywołującego z możliwością zawetowania, ze zmiennymi wywołaniami zwrotnymi edycji tekstu hosta i bezpiecznym dla grafemów wymuszeniem/MaxLen
Zmieniono
- Zatwierdzenia sesji formularza uruchamiają teraz dostępne akcje walidacji i formatowania przed zmianą pola, zachowują odrzucone edycje atomowo i utrzymują zwalidowaną wartość surową osobno od sformatowanego wyglądu Widget
Version 3.505.0
Dodano
- Dodano ukierunkowane zakresy zaznaczenia tekstu pól formularza w jednostkach kodu UTF-16, punktach kodowych Unicode i rozszerzonych klastrach grafemów, z raportowaniem zakotwiczenia i karetki oraz buforowaną konwersją granic
Version 3.504.0
Dodano
- Dodano rozmieszczanie dynamicznych składników świadome przepełnienia z zasadami odrzucenia, przycinania i proporcjonalnego zmniejszenia skali, niezależnym wyrównaniem oraz raportowaniem końcowej strony, geometrii i przekształcenia
Version 3.503.0
Dodano
TPDFlibDynamicComponentSessionleniwie komponuje jeden stanowy fragment strony na raz z kontekstem strony, raportowaniem użytego rozmiaru, statusem ukończenia oraz migawkami resetowania i stanu zatwierdzonegoReleaseCapturedPageunieważnia uchwyt przechwytywania Form XObject po jego ostatecznym rozmieszczeniu, zachowując odwołania do zasobów strony i istniejące wywołania
Zmieniono
- Próby dynamicznych składników rysują teraz na sklonowanym stanie wewnątrz izolowanego Form XObject i zatwierdzają dopiero po zwalidowanym rozmieszczeniu; odrzucone wywołania zwrotne, nieprawidłowa geometria i wyjątki przywracają wybraną stronę i pozostawiają zawartość docelową oraz stan składnika bez zmian
Version 3.502.0
Dodano
TPDFlibFormSessionudostępnia teraz obrócone prostokąty Widget wizualnego CropBox, testowanie trafień najwyższego poziomu, fokus oparty na punkcie oraz nawigację fokusa klawiatury w przód lub w tył
Zmieniono
- Sekwencje tabulacji stosują kolejność wierszową, kolumnową, strukturalną, tablicy adnotacji i Widget PDF 2.0 strony
/Tabsz kierunkiem ViewerPreferences, stabilną kolejnością między stronami i ograniczonym przejściem drzewa struktury SetTabOrderModewaliduje teraz wszystkie pięć trybów standardowych i automatycznie wybiera PDF 2.0 dlaAiW
Version 3.501.0
Dodano
ApplyRepeatedPageFragmentrozmieszcza jeden przechwycony Form XObject w zakresie stron jako typowane artefakty Pagination, Layout, Page lub Background PDF 2.0, współdzieląc strumień zawartości i zasoby między każdym rozmieszczeniem
Naprawiono
- Słowniki właściwości artefaktów używają teraz wymaganego operatora oznaczonej zawartości
BDCw ścieżkach publicznych i układu tabeli, a typy i podtypy artefaktów PDF 2.0 wybierają wymaganą wersję funkcji wyjściowej
Version 3.500.0
Dodano
SetTextFlowPaginationLinesniezależnie steruje minimalną liczbą linii sierot zachowywanych na dole pola tekstowego oraz linii bękartowych zachowywanych dla następnego pola lub kolumny
Zmieniono
- Paginacja przepływu tekstu przesuwa teraz w przód tylko wymagane końcowe linie z ograniczonym wglądem, podczas gdy niemożliwy podział pozostawia przepływ bez zmian do rozmieszczenia w większym regionie
Version 3.499.0
Dodano
TPDFlibFormSessionudostępnia niezależny od platformy fokus AcroForm, edycję tekstu i wyboru, zaznaczanie UTF-16 od zera, stan zatwierdzenia i anulowania z typowanymi wywołaniami zwrotnymi hosta dla akcji fokusa i rozmycia Widget
Zmieniono
- Zatwierdzone wartości sesji wymuszają teraz limity tekstu i regenerują tylko dotknięty zmieniony wygląd oraz domknięcie obliczeń przed zgłoszeniem zmiany wartości
Version 3.498.0
Dodano
GetDirtyFormAppearanceCountiRegenerateDirtyFormAppearancesśledzą zmienione odwołania do obiektów Widget AcroForm i regenerują wyłącznie zdedyuplikowane domknięcie obliczeń bieżącej sesji
Zmieniono
RegenerateFormAppearancesprzechodzi teraz przez pola hierarchiczne raz od ich korzeni, raportuje rzeczywistą liczbę udanych regeneracji Widget i zachowuje nieudane wyglądy do ponowieniaUpdateAppearanceStreamraportuje teraz dokładnie błędy generowania i utrzymuje nieudane Widgety w stanie oczekiwania z włączonymNeedAppearances
Version 3.497.0
Dodano
SetOutputIntentMixingHintszapisuje stałości tuszu PDF 2.0 i fizyczną kolejność drukowania, odrzucając nieprawidłowe wartości, zduplikowane nazwy, brakującą kolejność oraz barwniki już reprezentowane przez dane spektralneSetOutputIntentSpectralDataosadza ograniczone strumienie charakteryzacji kolorów spot CxF/X-4, ponownie używa identycznych danych przy powtarzających się i międzybarwnikowych przypisaniach oraz wymaga dokładnie jednego pasującegoSpotInkCharacterisation;ClearOutputIntentColorantDatausuwa oba słowniki metadanych barwników
Zmieniono
GetEffectivePageOutputIntentJSONraportuje teraz stałości mieszania, kolejność drukowania, barwniki spektralne i zdekodowaną ważność spektralną dla dokumentów utworzonych i wczytanych ponownie- Wstępna weryfikacja PDF/X audytuje teraz
MixingHintsiSpectralDataOutputIntent, w tym zabronioneDotGain, zakresy stałości, typy kolejności drukowania, konflikty barwników, dekodowanie strumieni i unikalne dopasowania tuszu spot CxF
Version 3.496.0
Dodano
DAOpenFileWithEncryptionKeyiDAOpenFromStreamWithEncryptionKeyotwierają zaszyfrowane dokumenty z autoryzowanego szesnastkowego klucza szyfrowania pliku bez wyprowadzania hasła, z pasującymi eksportami plików DLL i jawnym statusem walidacji
Zabezpieczenia
- Wejście plikowe z surowym kluczem jest zawsze tylko do odczytu źródła, wymusza dokładne długości klucza specyficzne dla rewizji i dostępne weryfikatory
/Ulub/Perms, odrzuca niezgodności nawet przy włączonym odzyskiwaniu brakującego weryfikatora oraz czyści przechowywany materiał klucza przy zamknięciu uchwytu
Version 3.495.0
Dodano
SetXRefLoadPolicyiGetXRefLoadPolicywybierają i raportują wczytywanie ścisłe, kompatybilne lub odzyskiwanie dla danych wejściowych wybranego dokumentu i Direct Access
Zmieniono
- Wczytywanie ścisłe wymaga teraz dokładnych nagłówków, końcowych znaczników, zadeklarowanych przesunięć, wpisów tabel o stałej szerokości, metadanych strumienia odsyłaczy oraz każdej połączonej sekcji
/Prevlub/XRefStm - Wczytywanie kompatybilne zachowuje kontrolowane naprawy przesunięć i struktury bez wchodzenia w surową rekonstrukcję, podczas gdy wczytywanie odzyskiwania może odbudować obiekty najwyższego poziomu i skompresowane oraz zsyntetyzować brakującą przyczepę
- Diagnostyka odsyłaczy raportuje teraz wybraną zasadę, uporządkowane decyzje parsera i flagi zgodności per sekcja, w tym odrzucone boczne łańcuchy hybrydowe i dowody odzyskiwania Direct Access
Version 3.494.0
Zmieniono
- Pełne niezaszyfrowane zapisy deterministyczne bez jawnego ziarna wyprowadzają teraz oba początkowe wpisy
/IDprzyczepy z pierwszych 16 bajtów strumieniowego skrótu SHA-256 po zserializowanym nagłówku i treści dokumentu - Skrót zawartości wyklucza wcześniejsze identyfikatory przyczepy, dane odsyłaczy i przyczepy zależne od przesunięć, normalizując przy tym generowane identyfikatory zasobów i UUID instancji XMP, tak aby zmiany stron, zasobów, załączników i metadanych sterowały wynikiem
- Wewnętrzne nazwy zasobów i znaczniki podzbiorów czcionek osadzonych są stabilne, gdy włączony jest tryb deterministyczny, w tym wyjście pakujące słowniki w skompresowane strumienie obiektów; zapisy domyślne zachowują losowe identyfikatory
Version 3.493.0
Dodano
LoadFromMappedFileiDAOpenMappedFileotwierają lokalne pliki PDF przez ograniczone widoki mapowane tylko do odczytu, z opcją wymagania mapowania lub dopuszczenia przenośnego odwrotu do strumienia plikowegoGetMappedFileInfoiDAGetMappedFileInforaportują aktywny stan mapowania, rozmiary pliku i okna, bieżący widok, wolumen odczytów oraz aktywność przemapywania
Zmieniono
- Źródła mapowane zachowują jedno okno wyrównane do alokacji i przemapowują je przy dużych odroczonych odczytach obiektów lub strumieni, ograniczając użycie przestrzeni adresowej niezależnie od rozmiaru pliku
- Lokalne źródła mapowane i oparte na wywołaniach zwrotnych współdzielą teraz odczyty absolutnych wycinków obiektów niezależne od kursora, podczas gdy istniejące interfejsy API wczytywania plików zachowują poprzednie zachowanie
Version 3.492.0
Dodano
GetPageThumbnailDataToStreamiGetPageThumbnailDataToStringujawniają zakodowane lub zdekodowane filtrem ładunki miniatur stron, aDeletePageThumbnailusuwa metadane strony bez zmiany wybranej strony
Zmieniono
- Zapytania o obecność miniatur i metadane wymagają teraz strumienia obrazu; źle sformowane wpisy niebędące strumieniami pozostają usuwalne zamiast być raportowane jako użyteczne miniatury
- Wyjście surowe jest kopiowane w ograniczonych fragmentach, a wyjście zdekodowane ponownie używa strumieniowego potoku filtrów, zachowując końcowe kodowania obrazów, takie jak DCT i JPX, dla wywołujących potrzebujących natywnych ładunków
Version 3.491.0
Dodano
InsertPageElementClipPath,ReplacePageElementClipPathiDeletePageElementClipPathdodają lokalne przycinanie do dokładnego elementu strony lub edytują przechwycony składnik źródłowy z regułami wypełniania non-zero i even-odd
Zmieniono
- Składniki przycinania zachowują teraz swoją warstwę źródłową, zakres instrukcji, głębokość zagnieżdżenia i znormalizowany odcisk palca, tak aby źródła edytowalne odróżniały się od granic początkowych, konturów tekstu, zagnieżdżonych formularzy, źle sformowanych ścieżek i obiektów ścieżek międzywarstwowych
- Lokalne przycinanie używa zrównoważonych zakresów stanu grafiki, w tym prawidłowej rekonstrukcji obiektów tekstowych, a usunięcie przycinania ze ścieżki, która także maluje, zachowuje oryginalne kreskowanie lub wypełnienie
Version 3.490.0
Dodano
SetPageElementMarkedContentTextProperty,SetPageElementMarkedContentPropertySourceiDeletePageElementMarkedContentPropertyedytują tekst Unicode, zserializowane obiekty PDF i istniejące właściwości na dokładnej wyliczonej ramce oznaczonej zawartości
Zmieniono
- Nazwane zasoby właściwości są edytowane przez lokalny dla strony copy-on-write, wbudowane listy właściwości są automatycznie awansowane, gdy wartość pośrednia wymaga zasobu, a usunięcie ostatniej właściwości zwija
BDCdoBMC - Edycje oznaczonej zawartości walidują przechwyconą instrukcję źródłową i rozwiązane migawki właściwości przed zapisem, a po udanej zmianie unieważniają wszystkie uchwyty elementów strony
Version 3.489.0
Dodano
GetTextBlockCharContentLocationiDAGetTextBlockCharContentLocationmapują każdą wyekstrahowaną pozycję UTF-16 na jej warstwę zawartości, strumień, instrukcję, operand, element tablicyTJi zakodowany zakres bajtów źródłowychReplaceTextBlockCharSourceByteswykonuje lokalną zamianę zmapowanych bajtów zakodowanych czcionką pod ochroną odcisku palca, zachowując sąsiednie ciągi i wartości kerningu
Zmieniono
- Lokalizacje generowane,
/ActualText, zagnieżdżone formularze, transkodowane i międzywarstwowe są jawnie klasyfikowane jako tylko do odczytu, a rozszerzenia ligatur zachowują swój współdzielony zakres glifów źródłowych - Wyszukiwanie zakresów zawartości używa wyszukiwania binarnego, a wyekstrahowane listy zachowują dwa niezależne odciski palców warstw, aby odrzucać nieaktualne edycje przed analizą lub przepisywaniem zawartości strony
Version 3.488.0
Dodano
ImportPageAsFormXObjectimportuje stronę z dowolnego otwartego dokumentu jako uchwyt przechwyconej strony wielokrotnego użytku bez zmiany któregokolwiek drzewa stron
Zmieniono
- Import strony do formularza kopiuje wyłącznie zdekodowaną zawartość strony, niezależne dziedziczone domknięcie zasobów oraz wpisy grupy, metadanych i informacji o częściach zgodne z formularzem, wyłączając adnotacje, miniatury i strukturę właściwą stronom
- Wybrane ramki stron używają standardowych reguł odwrotu, dziedzicowany obrót kwadrantowy jest normalizowany do macierzy formularza, a powtarzane rozmieszczenia współdzielą jeden skompresowany strumień zawartości
Version 3.487.0
Dodano
- Uchwyty elementów strony ujawniają teraz aktywny stos oznaczonej zawartości od zewnątrz do wewnątrz, znaczniki, zwalidowane wartości
/MCID, oryginalne operandy właściwości oraz każdy wpis z rozwiązanych słowników bezpośrednich lub opartych na zasobach
Zmieniono
- Śledzenie stanu zawartości rozwiązuje nazwane zasoby
/Propertiesraz na zakres zasobów i zachowuje niemodyfikowalne ramki oznaczonej zawartości bez ponownej analizy zawartości strony przy powtarzających się zapytaniach - Zagnieżdżenie oznaczonej zawartości jest śledzone niezależnie od
q/Qi ograniczone do każdego strumienia zawartości strony lub formularza, tak aby źle sformowane niedomknięte sekwencje nie mogły przeciekać do innego strumienia
Version 3.486.0
Dodano
- Uchwyty elementów strony ujawniają teraz każdy składnik efektywnego przecięcia przycinania, w tym przekształcone polecenia przesunięcia, linii, sześcienne i zamknięcia, reguły wypełniania non-zero lub even-odd, granice składników i diagnostykę regionu łącznego
Zmieniono
- Śledzenie stanu zawartości zachowuje niemodyfikowalne łańcuchy przycinania w obrębie granic stron, przywracania
q/Qi granic formularzy, współdzieląc niezmienione składniki między migawkami - Wyliczanie elementów strony zbiera cele mutacji ścieżek i stany grafiki w tym samym przebiegu zawartości, unikając wcześniejszej dodatkowej analizy warstwy ścieżek
Version 3.485.0
Dodano
GetTextBlockCharUnicodeFlagsiDAGetTextBlockCharUnicodeFlagsujawniają per znak diagnostykę mapowania Unicode, rozwiązania zapasowego, brakującego mapowania, niezmapowanego kodu, nieprawidłowego mapowania i podstawiania
Zmieniono
- Ekstrakcja tekstu zachowuje pochodzenie mapowania Unicode obok każdej jednostki kodu UTF-16 i waliduje pary surogatów przed zaakceptowaniem wyjścia
ToUnicode - Nieprawidłowe lub częściowe mapowania używają teraz niezależnego rozwiązania zapasowego kodowania czcionek i emitują U+FFFD, gdy nie istnieje znaczące rozwiązanie zapasowe
Naprawiono
- Mapy tożsamości Unicode zwracają teraz jedną zmapowaną jednostkę kodu zamiast traktować wartość kodu źródłowego jako liczbę wyjść
Version 3.484.0
Dodano
- Bloki tekstu wybranego dokumentu i Direct Access ujawniają teraz per znak kąty linii bazowej, punkty początkowe, macierze komórek, czwórki skorygowane o zejście oraz prostopadłe do osi prostokąty
GetTextBlockCharBoxdodaje odpowiednik dla wybranego dokumentu do istniejącego zapytania o prostokąt Direct Access
Zmieniono
- Ekstrakcja tekstu zachowuje wektory linii bazowej, napisu i wysokości komórki raz na znak, tak aby zapytania geometrii zachowywały obrót, ścinanie i odwrócone linie bazowe w czasie stałym
DAGetTextBlockCharBoxwyprowadza teraz swój wynik bezpośrednio z zachowanej geometrii znaków zamiast przechodzić przez każdą poprzedzającą szerokość
Naprawiono
- Szerokości znaków wybranego dokumentu i zrzuty bloków tekstu stosują teraz skonfigurowaną skalę współrzędnych dokładnie raz
Version 3.483.0
Dodano
GetTextBlockCharSourceFlagsiDAGetTextBlockCharSourceFlagsujawniają bitowe pochodzenie znaków generowanych, łączników i uszanowanych podstawień/ActualText
Zmieniono
- Ekstrakcja bloków tekstu zachowuje teraz flagi źródła znaków obok istniejących tablic tekstu i napisu, w tym spacje wywnioskowane z dużych odstępów między znakami, bez ponownej analizy zawartości strony przy powtarzających się zapytaniach
Version 3.482.0
Dodano
GetXRefDiagnosticsiDAGetXRefDiagnosticszwracają raporty JSON dotyczące efektywnych typów odsyłaczy, pozycji bajtów, granic przyczepy, liczby wpisów oraz każdej tabeli lub strumienia w łańcuchu rewizji
Zmieniono
- Łącza odwołań hybrydowych, ponowienia z przesuniętym nagłówkiem i decyzje odzyskiwania dokumentów edytowalnych pozostają teraz widoczne jako odrębne dowody diagnostyczne, w tym surowe skany obiektów, odzyskiwanie obiektów skompresowanych i zsyntetyzowane przyczepy
Version 3.481.0
Dodano
- Dokumenty o zakresie bajtowym oparte na wywołaniach zwrotnych i Direct Access mogą kolejkować w tle zadania wstępnego pobierania zależności stron, formularzy lub obiektów z czterema priorytetami szeregowania, anulowaniem, oczekiwaniem i diagnostyką postępu JSON
- Wstępne pobieranie zależności iteruje odkrywanie brakujących zakresów, aż cel będzie gotowy, z konfigurowalnymi limitami bajtów źródłowych, wyprzedzającego odczytu i przebiegów planowania
Zmieniono
- Każdy strumień zakresów bajtowych posiada teraz priorytetowego pracownika FIFO, który współdzieli ograniczoną pamięć podręczną zakresów przy izolowanym stanie parsera, pozwalając pracy nad dokumentem na pierwszym planie kontynuować bez współdzielenia zmiennego czytnika
- Anulowanie zakolejkowane nie wykonuje odczytów źródła, anulowanie bieżące jest sprawdzane przed każdym fragmentem, a zniszczenie strumienia odprowadza zaległą pracę przed zwolnieniem jej źródła
Version 3.480.0
Dodano
LoadFromRangeSourceprzyjmuje opcjonalne wywołanie zwrotne dostępności bez pobierania dla magazynów progresywnych, z zapytaniami wybranego dokumentu i Direct Access o gotowość stron, formularzy i obiektów pośrednich- Raporty dostępności zwracają jako JSON scalone wymagane i brakujące zakresy bajtów, kompletność zależności oraz liczniki przejścia obiektów
Zmieniono
- Strumienie zakresów bajtowych mogą testować pokrycie z pamięci podręcznej i dostępne ze źródła bez odczytu bajtów, przesuwania kursora strumienia i zmiany statystyk pamięci podręcznej
- Dostępność strony podąża wyłącznie za ścieżką docelowego drzewa stron i osiągalnymi zależnościami przetwarzania, a niedostępne zakresy są raportowane bez wywoływania wywołania zwrotnego odczytu
Version 3.479.0
Dodano
TByteRangeStream.ReadAtudostępnia odczyty absolutne niezależne od kursora ze współdzieleniem single-flight w tym samym fragmencie, ograniczonym scalaniem sąsiednich żądań i konfigurowalnym oknem zbierania- Diagnostyka pamięci podręcznej zakresów raportuje teraz oczekujące żądania, aktywne okno zbierania, żądania obsłużone przez scalanie oraz odczyty fizyczne obejmujące wiele fragmentów
Zmieniono
- Odroczone odczyty z dokumentów opartych na wywołaniach zwrotnych i URL używają teraz przesunięć absolutnych, szeregują wywołania zwrotne źródła i łączą współbieżne sąsiednie fragmenty w odczyty źródła ograniczone do 16 MiB
- Czyszczenie pamięci podręcznej zakresów w trakcie trwającego pobierania zapobiega teraz temu, aby nieaktualne ukończenie odnowiło pamięć podręczną lub liczniki po czyszczeniu, podczas gdy istniejący oczekujący nadal otrzymują swoje bajty
Version 3.478.0
Dodano
- Strumienie zakresów bajtowych zachowują teraz wyrównane fragmenty w ramach jawnego budżetu bajtów w strategii najrzadziej używanych i raportują liczbę okien, zachowane bajty, trafienia, pudła, eksmisje, odczyty źródła, bajty źródła i powtórzone odczyty
LoadFromRangeSourcei DelphiDAOpenFromURLprzyjmują początkowy budżet pamięci podręcznej, z nowymi interfejsami API wybranego dokumentu i Direct Access do inspekcji, zmiany rozmiaru i czyszczenia aktywnej pamięci podręcznej
Zmieniono
- Nagrzewanie pierwszej strony w wersji zlinearyzowanej mieści się teraz w skonfigurowanym budżecie zachowanych bajtów
Version 3.477.0
Dodano
LoadFromRangeSourcewczytuje kompletny dokument edytowalny przez dostarczone przez wywołującego wywołanie zwrotne losowego zakresu bajtów, pozwalając wejściom HTTP, baz danych, magazynów obiektów i niestandardowym pozostać zdalnymi, podczas gdy parser pobiera wyłącznie zakresy potrzebne do wczytania i operacji odroczonych- Nowa umowa
TPDFlibRangeReadEventodbiera przesunięcia absolutne, bufory docelowe i ograniczone liczniki, przy czym dostawca wywołania zwrotnego pozostaje własnością wywołującego przez cały czas życia wczytanego dokumentu
Version 3.476.0
Dodano
- Dodano tworzenie PDF/VT-3 na bazach PDF/X-6, PDF/X-6p i PDF/X-6n z zsynchronizowanymi metadanymi identyfikacji, obowiązkowym pokryciem części dokumentu i dedykowaną wstępną weryfikacją
Zmieniono
- Hierarchie części dokumentu emitują i walidują teraz standardowe bloki podrzędne po 8192 wpisów wraz z ostrzejszymi ograniczeniami nazw i typów XML
Version 3.475.0
Zmieniono
TPDFlibContentGraphicsState.BlackPointCompensationraportuje teraz efektywny stanDefault,ONlubOFFw zawartości strony, przywracaniu stanu grafiki i rekurencyjnie wyliczanych Form XObjects- Wstępna weryfikacja PDF/X-6 odrzuca teraz wpisy
UseBlackPtComp, których typ lub wartość wykracza poza model kompensacji punktu czerni PDF 2.0
Version 3.474.0
Zmieniono
- Wstępna weryfikacja PDF/X-6 waliduje teraz flagi adnotacji drukowalnych, deterministyczne wyglądy normalne, stany wyglądu przycisków, pola AcroForm i podpisów, wykluczenia wyglądów generowanych przez przeglądarki oraz bezpieczne rozmieszczenie i łańcuchy akcji
- Tworzenie PDF/X-6 dopuszcza JavaScript wyłącznie na bezpośrednio aktywowanych adnotacjach Link, ogranicza akcje nazwane do nawigacji po stronach i odrzuca niebezpieczne ścieżki akcji na poziomie dokumentu, strony i pola formularza, zanim zmienią dokument
Version 3.473.0
Dodano
SetPDFXModeprzyjmuje teraz tryb 5 dla wymiany barw procesowych PDF/X-6p i tryb 6 dla wymiany n barwników PDF/X-6n, oba z użyciem PDF 2.0 i zewnętrznych odwołań do profilów wyjściowych- Nowe interfejsy API
SetOutputIntentProfileReferenceiAddOutputIntentProfileReferenceURLtworzą słowniki/DestOutputProfileRefna poziomie dokumentu lub strony, wyprowadzają sumę kontrolną ICC, wersję i sygnaturę przestrzeni barw, walidują metadane urządzenia wyjściowego i barwników oraz zachowują co najmniej jedną lokalizację pobierania RFC 3986 bez osadzania bajtów profilu
Zmieniono
- Wstępna weryfikacja PDF/X rozpoznaje identyfikatory XMP PDF/X-6p i PDF/X-6n oraz waliduje typ zewnętrznego profilu, długości metadanych, sygnatury barw procesowych lub n barwników, tablice barwników i specyfikacje plików URL
GetEffectivePageOutputIntentJSONraportuje teraz metadane profilu referencyjnego, w tymprofileCS,profileName,iccVersion,checkSum,profileURLsicolorants, po utworzeniu lub wczytaniu w obie strony
Version 3.472.0
Dodano
- Nowe interfejsy API
SetPageOutputIntent,ClearPageOutputIntentsiGetEffectivePageOutputIntentJSONtworzą, usuwają i badają intencje wyjściowe stron PDF 2.0, w tym efektywny odwrot na poziomie dokumentu
Zmieniono
- Wstępna weryfikacja PDF/X-6 akceptuje teraz intencje wyjściowe na poziomie stron, nadaje im pierwszeństwo przed intencją dokumentu i weryfikuje, że każda strona rozwiązuje się do osadzonego profilu Gray, RGB lub CMYK
Version 3.471.0
Dodano
SetPDFXMode(4)tworzy dokumenty pełnej wymiany PDF/X-6 ze składnią PDF 2.0, identyfikacją XMP PDF/X-6 oraz osadzoną intencją wyjściową zarządzaną barwnie
Zmieniono
- Wstępna weryfikacja PDF/X rozpoznaje PDF/X-6, wymaga składni PDF 2.0 i weryfikuje, że intencja wyjściowa zawiera osadzoną deklarację profilu ICC Gray, RGB lub CMYK
Version 3.470.0
Nowości
- Układ HTML obsługuje kierunek, zawijanie, współczynniki grow, shrink i basis, odstępy, justowanie oraz wyrównanie na osi poprzecznej w modelu Flexbox
- Układ HTML obsługuje jawne ścieżki CSS Grid, rozmiary ułamkowe, powtarzane ścieżki, spans, automatyczne rozmieszczanie w wierszach lub kolumnach, odstępy i wyrównanie elementów
- Artykuły HTML obsługują numerowane przypisy, które rezerwują dolną część ramki, ponownie układają tekst główny i zachowują numerację przy kontynuacji na kolejnych stronach
Zmieniono
- Mierzenie HTML i odtwarzanie z pamięci podręcznej uwzględniają geometrię Flexboxa, Grida i przypisów, zachowując ograniczenia pojemników i ścieżek
Naprawiono
- Masowe czyszczenie słowników PDF i zmiana nazw kluczy unieważniają buforowane indeksy kluczy, co zapobiega nieaktualnym wyszukiwaniom podczas kompaktowania pamięci i wielokrotnego przetwarzania dokumentów
Version 3.469.1
Naprawiono
- Import EMF i konwersja Canvas DC zachowują teraz tekst Unicode oraz mapowania glifów dla osadzonych i nieosadzonych czcionek TrueType
NewPageFromCanvasDCdołącza każdą żądaną stronę, aTPDFlibPrinterzatwierdza każdą kanwę dokładnie raz, bez gubienia ani duplikowania stron
Version 3.469.0
Nowości
SetImageSoftMaskExdołącza maski miękkie obrazów w skali szarości z opcjonalnymi kolorami matteNewSoftMaskGraphicsStatetworzy wielokrotnego użytku stany graficzne alfa, luminancji, funkcji transferu i resetowania na podstawie przechwyconych Form XObjectsFlattenTransparencyzastępuje wybrane strony nieprzezroczystą zawartością statyczną o wybranej rozdzielczości i kolorze tła, przeznaczone dla starszych wersji PDF i przepływów archiwizacyjnych
Zmieniono
- Spłaszczanie przezroczystości przetwarza jedną stronę naraz, normalizuje obrót wizualny, opcjonalnie zachowuje interaktywne adnotacje, obsługuje postęp i anulowanie oraz domyślnie usuwa nieosiągalne zasoby przezroczystości
Version 3.468.0
Nowości
- Obrazy AVIF, HEIF, HEIC i JPEG XL można importować przez istniejące interfejsy API obrazów lub dedykowane metody
AddModernImageFromFile,AddModernImageFromStreamiAddModernImageFromString SetModernImageCodecLibrary,ModernImageCodecAvailablei wywołanie zwrotne dekodera zapewniają wdrażalny wybór kodeków w ramach procesu, bez tymczasowych plików konwersji
Zmieniono
- Dekodowanie nowoczesnych obrazów zachowuje orientację źródła, kanał alfa, profile ICC i głębokość kanału do 16 bitów, zanim zostanie ponownie wykorzystany natywny potok obrazów PNG
Naprawiono
- Walidacja użycia klucza w danych seed podpisu odczytuje teraz natywny kontekst certyfikatu z poprawnym wyrównaniem wskaźników na Win64
Version 3.467.0
Nowości
DeduplicateSimilarImageskonsoliduje wizualnie podobne XObjecty obrazów z konfigurowalnymi progami hasha różnicowego, średniego błędu kanału i maksymalnego błędu kanału, z obsługą przebiegu próbnego i opcjonalnym zbieraniem obiektów osieroconychGetSimilarImageDeduplicationReportJSONiTPDFlibImageSimilarityDedupStatsraportują pokrycie dekodowania, pracę na indeksowanych kandydatach, zaakceptowane błędy, przekierowane odniesienia oraz szacowane oszczędności zakodowanych danych
Zmieniono
- Przybliżone dopasowywanie obrazów wymaga identycznych semantycznych słowników obrazu, potwierdza zdekodowane próbki koloru 64 × 64 i korzysta z ośmiopasmowego indeksu hashowego, aby uniknąć wyczerpujących porównań parami
Version 3.466.0
Nowości
EncodeImageToJPXStreamiEncodeImageToJPXFilekodują wejściową bitmapę jako konfigurowalny stratny lub odwracalny bezstratny JPEG 2000 w standardowym kontenerze JP2AddImageJPXFromFile,AddImageJPXFromStreamiAddImageJPXFromStringdodają zakodowaną bitmapę bezpośrednio jako XObjecty obrazówJPXDecode
Zmieniono
- Tworzenie obrazów JPEG 2000 waliduje opcje jakości i bezstratności, przywraca pozycje należących do wywołującego strumieni wejściowych, usuwa częściowe wyniki przy niepowodzeniu, automatycznie wymaga PDF 1.5 i zachowuje istniejącą bramkę zgodności PDF/A-1
Version 3.465.0
Nowości
RenderPageTileToStreamiRenderPageTileToFilerenderują dowolne obszary w pikselach urządzenia z przycinanymi zakładkami oraz białym, przezroczystym (klucz koloru) lub własnym tłemRenderPageTilesToFiles,RenderPageTiledToStreamiRenderPageTiledToFiletworzą równoległe siatki kafli albo zszywają ich dokładne granice rdzeni w obraz strony bez widocznych łączeńSetRenderSurfaceCacheLimit,GetRenderSurfaceCacheInfoiClearRenderSurfaceCachezapewniają opcjonalną, bezpieczną wątkowo pamięć podręczną LRU z niezależnymi limitami liczby wpisów i bajtów dla w pełni skomponowanych powierzchni kafli
Zmieniono
- Równoległe renderowanie pojedynczych stron wstępnie przygotowuje teraz jedną wspólną listę wyświetlania przed rozwidleniem wątków roboczych, dzięki czemu strumienie zawartości są parsowane tylko raz, a kompilatory bez obsługi równoległości zachowują deterministyczną ścieżkę szeregową
Version 3.464.0
Nowości
GetXFARenderedPageCountoraz rodzinaRenderXFAPageToStream,RenderXFAPageToStringiRenderXFAPageToFiletworzą statyczne strony rastrowe z szablonów XFA, powiązanych zbiorów danych i jawnych podziałów stron bez modyfikowania dokumentu źródłowegoConvertXFAToAcroFormkonwertuje obsługiwane kontrolki tekstowe, haseł, wyboru, pola wyboru, przyciski i podpisu na edytowalne pola, zachowując nazwy, wartości, opcje, flagi, strony i obszary
Zmieniono
- Jednorazowa kompresja Flate dużych danych przekazuje teraz natywnemu backendowi chroniony fragment końcowy wejścia, co zapobiega nieprawidłowym sumom kontrolnym Adlera w wyjściowych PNG o wysokiej rozdzielczości, zachowując skompresowane wyjście
Version 3.463.0
Nowości
RenderPageLayerToStream,RenderPageLayerToStringiRenderPageLayerToFileeksportują podstawową zawartość strony, adnotacje, pola formularzy lub wszystkie obiekty interaktywne jako niezależnie komponowalne warstwy PNGFlattenFormFieldTaggediFlattenFormFieldsTaggedOnPageRangewpiekają wyglądy pól w statyczną zawartość strony, zachowując lub tworząc dostępne semantyki strukturyForm
Zmieniono
- Renderowanie wyłącznie interaktywne pomija interpreter zawartości podstawowej, wykonuje jedno przejście wyglądów adnotacji i zapisuje przezroczyste tło bez zmiany trwałych ustawień renderera
- Spłaszczanie oznakowane konwertuje skojarzenie
OBJRz ParentTree właściwe dla typu Widget na oznaczoną zawartośćMCRstrony, zachowuje istniejący tekst alternatywny i rzeczywisty, a gdy nie można udowodnić bezpiecznego skojarzenia, pozostawia pola nienaruszone
Version 3.462.0
Nowości
HitTestAnnotationiGetAnnotationHitsJSONznajdują najwyższą lub wszystkie adnotacje w punkcie strony, korzystając z geometrii uwzględniającej podtyp oraz opcji tolerancji, widoczności i prostokątów otaczającychMoveAnnotationZOrderzmienia w miejscu kolejność istniejących odniesień do adnotacji, aSimplifyInkAnnotationsredukuje punkty pociągnięć Ink z ograniczonym odchyleniem geometrycznym i szczegółowymi statystykami
Zmieniono
- Interakcja z adnotacjami sprawdza teraz czworokąty znaczników, ścieżki wektorowe, geometrię elips i wypełnione obszary po szybkiej eliminacji prostokątnej, a zmienione wyglądy Ink są przebudowywane automatycznie, chyba że jawnie odroczono tę operację
Version 3.461.0
Nowości
RepairAnnotationAppearancesprzebudowuje na wszystkich stronach brakujące, nieaktualne, nieprawidłowe, niespójne ze stanem lub niewidoczne wyglądy normalne i zwraca statystyki problemów oraz kategorii adnotacjiGetAnnotationAppearanceAuditJSONraportuje problemy wyglądów poszczególnych adnotacji i zagregowane liczby bez zmieniania dokumentu
Zmieniono
- Generowanie wyglądów znaczników, kształtów, ścieżek, tekstu swobodnego i ikon korzysta teraz ze wspólnego jednoprzebiegowego skanera dokumentu, przyrostowych kreatorów wyjścia i zwięzłych odcisków źródła do deterministycznego wykrywania nieaktualności
Version 3.460.0
Nowości
ExecuteFormFieldScriptwykonuje ograniczony lokalny podzbiór akcji walidacji, obliczeń i formatowania formularzy bez udostępniania możliwości dostępu do plików, sieci, procesów, interfejsu użytkownika ani kodu dynamicznegoRecalculateFormFieldswykonuje pełne lub ograniczone do zależności przyrostowe obliczenia, aGetFormCalculationGraphJSONraportuje zależności pól, pozycje w kolejności obliczeń i cykle
Zmieniono
- Przeliczanie formularzy wykonuje obliczenia na prywatnej migawce wartości, porządkuje gotowe pola według kolejności obliczeń AcroForm, odrzuca cykle zależności przed mutacją i zatwierdza wartości dopiero po ukończeniu wybranego grafu
Version 3.459.0
Nowości
MergeDocumentExdodaje jawne zasady postępowania ze zduplikowanymi polami formularzy: odrzucenie scalania, zachowanie wspólnej nazwy z zsynchronizowanymi wartościami albo przydzielenie deterministycznych przyrostków liczbowych
Zmieniono
- Odrzucenie zduplikowanych pól jest sprawdzane przed zmianą numerów obiektów, drzew stron lub tablic formularzy, dzięki czemu dokumenty docelowy i źródłowy pozostają użyteczne po odrzuconym scaleniu
Version 3.458.0
Nowości
DrawOpenTypeText,GetOpenTypeTextWidthiGetOpenTypeGlyphRunkształtują, mierzą, rysują i sprawdzają tekst bezpośrednio z istniejącego uchwytu czcionki TrueType lub OpenType, bez wymagania zainstalowanej nazwy kroju- Przenośne natywne moduły kształtowania i subsettingu OpenType są dołączone dla 32- i 64-bitowego Windows, wraz z budowanymi źródłami dla Linux i macOS oraz nadpisaniem środowiskowym dla własnych ścieżek wdrożenia
Zmieniono
- Rysowanie złożonych systemów pisma preferuje teraz kształtowanie GSUB i GPOS na bajtach czcionki, obejmujące podstawienia, kerning, pismo łączone i przyczepianie znaków diakrytycznych, a ograniczony mechanizm awaryjny w Pascalu obsługuje łączenie arabskie i popularne formaty wyszukiwania układu OpenType, gdy moduł natywny jest niedostępny
- Subsetting czcionek po kształtowaniu zachowuje teraz identyfikatory glifów i domyka zależności układu, czcionek zmiennych i czcionek kolorów, w tym dane COLR/CPAL oraz fvar/gvar/HVAR
Version 3.457.0
Nowości
CreateOpenTypeFontVariationtworzy wielokrotnego użytku statyczne czcionki CFF na podstawie żądanych współrzędnych osi czcionki zmiennej CFF2
Zmieniono
- Import OpenType CFF2 wybiera teraz statyczną instancję domyślną do natychmiastowego rysowania i osadzania, zachowując program zmienny do późniejszej instancjacji
- Instancjonowanie CFF2 oblicza magazyny wariacji,
vsindexiblendna rozwiniętych podprogramach lokalnych i globalnych, stosuje wariacje metryk poziomych i globalnych oraz emituje ograniczoną, poprawną względem sumy kontrolnej czcionkę OpenType CFF1 dla istniejących ścieżek osadzania i subsettingu CFF
Version 3.456.0
Nowości
- Dodano wejście WOFF2 dla punktów wejściowych plików TrueType, OpenType i kolekcji w Windows 10 w wersji 1703 lub nowszej, obejmujące przekształcone kontury i metryki TrueType, czcionki CFF oraz kroje z kolekcji
Zmieniono
- Kontenery czcionek webowych są rozpakowywane raz w pamięci, do mapowania znaków używają najlepszego dostępnego Unicode cmap, a osadzany lub eksportowany jest wynikowy sfnt, a nie skompresowany kontener
Version 3.455.0
Nowości
GetFontVariationAxesudostępnia każdą oś czcionki zmiennej TrueType wraz ze zlokalizowaną nazwą, zakresem projektowym, wartością domyślną i stanem ukrycia, aCreateTrueTypeFontVariationtworzy wielokrotnego użytku czcionkę statyczną z żądanych współrzędnych osi
Zmieniono
- Instancjonowanie czcionek zmiennych TrueType stosuje dane
avar,gvar,HVARiMVAR, spłaszcza kontury złożone, przebudowuje metryki poziome i globalne, usuwa nieaktualne tabele wariacji i hintingu oraz emituje poprawny względem sumy kontrolnej sfnt do rysowania, osadzania, subsettingu i inspekcji glifów SaveFontToFilemoże bezpośrednio eksportować zatrzymane w pamięci programy TrueType, w tym nowo utworzone instancje czcionek zmiennych jeszcze przed zapisaniem pliku PDF
Version 3.454.0
Nowości
GetFontColorGlyphiGetFontColorGlyphByIndexudostępniają grafy malowania COLR v0 i v1, palety CPAL, dokumenty SVG-in-OT oraz osadzone bitmapy strikes do bezpośredniej inspekcji i renderowania przez aplikację
Zmieniono
- Inspekcja tabel czcionek kolorowych korzysta z leniwego, ograniczonego dostępu do sfnt i uczestniczy we wspólnym budżecie bajtowym pamięci podręcznej czcionek, unikając wczesnego parsowania konturów dużych czcionek kolorowych
Version 3.453.0
Nowości
SetFontCacheLimit,GetFontCacheInfoiClearFontCachezapewniają wspólny budżet bajtowy, usuwanie elementów najdawniej używanych oraz statystyki trafień, chybień i zajętości dla zatrzymywanych zasobów krojów, ukształtowanych przebiegów tekstu i sparsowanych programów konturówGetFontGlyphIndexmapuje pełne punkty kodowe Unicode przez tabele cmap TrueType formatu 4 i 12, aGetFontGlyphOutlinezwraca proste i przekształcone ścieżki złożone wraz z surowymi metrykami posunięcia, odstępu lewego, prostokąta otaczającego i jednostek na em
Zmieniono
- Powtórzone pomiary ukształtowanego tekstu i wywołania rysowania wykorzystują ponownie głęboko skopiowane ukształtowane przebiegi w ramach wspólnego budżetu pamięci podręcznej, a powtórzona inspekcja glifów ponownie używa sparsowanego programu czcionki zamiast parsować go od nowa dla każdego glifu
- Programy binarne czcionek wczytane z ciągów i kontenerów WOFF zatrzymują własny strumień surowych bajtów, co zapobiega rekodowaniu tekstu i wygasłym odniesieniom do strumienia podczas odroczonego dostępu do tabel
Version 3.452.0
Nowości
soCanonicalEquivalentpozwala wyszukiwaniu tekstu, wyszukiwaniu wsadowemu i przepływom zastępowania dopasowywać kanonicznie równoważny tekst NFC i NFD, raportując przy tym przesunięcia i długości w oryginalnym wyodrębnionym tekściesoGraphemeClustersogranicza dopasowania do granic rozszerzonych klastrów grafemów i sprawia, że symbol wieloznaczny?pochłania jeden kompletny klaster, chroniąc pary zastępcze, sekwencje łączące, sekwencje emoji ZWJ, flagi i ligatury pisma indyjskiego
Zmieniono
- Normalizacja Unicode i segmentacja grafemów korzystają ze zwięzłych wygenerowanych tabel Unicode 15.1 na każdej obsługiwanej platformie, bez polegania na usłudze tekstowej systemu operacyjnego
Version 3.451.0
Nowości
ExternalizeInlineImageszastępuje na wybranym zakresie stron powtórzone obsługiwane obrazy inline jednym współdzielonym XObjectem obrazu, gdy szacowany rozmiar po serializacji maleje
Zmieniono
- Eksternalizacja obrazów inline zachowuje maski obrazów, interpolację, tablice decode, filtry i parametry dekodowania oraz automatycznie kompresuje Flate niefiltrowane dane, gdy to zmniejsza rozmiar
- Grupowanie po dokładnej sumie SHA-256, deterministyczne nazwy zasobów, eliminacja zduplikowanych stron, raportowanie postępu i kooperatywne anulowanie utrzymują wyniki optymalizacji ograniczonymi i powtarzalnymi
- Nieznane wpisy słowników inline i przestrzenie barw inne niż urządzeniowe pozostają bajtowo identyczne zamiast być przekształcane bez pełnej semantyki
Version 3.450.0
Nowości
NormalizeContentStreamskanonizuje tokeny białych znaków i liczbowe na wybranym zakresie stron, zachowując operatory, wartości ciągów i dane obrazów inline
Zmieniono
- Kompresja zawartości emituje teraz tokeny kanoniczne nawet wtedy, gdy optymalizacja peephole nie znajduje zbędnych instrukcji
Naprawiono
- Liczby rzeczywiste PDF z jawnym znakiem plus na początku zachowują teraz swoją wartość podczas parsowania i normalizacji
- Zastąpione dane strumienia nie zatrzymują już przestarzałych parametrów dekodowania z poprzedniego potoku filtrów
Version 3.449.0
Nowości
SetTempFileQuota,GetTempFileQuotaiCompactDocumentMemoryzapewniają ograniczone buforowanie obiektów na dysku z automatycznym mechanizmem awaryjnym w pamięci
Zmieniono
- Dane obiektów tymczasowych korzystają teraz z indeksowanego wyszukiwania uwzględniającego generacje i pozostają dostępne po zamknięciu uchwytu zapisu bufora
Version 3.448.0
Nowości
SetRecoveryModeiGetRecoveryModewybierają tryb ścisły, naprawę opartą na trailerze albo odzyskiwanie na najlepszy wysiłek przed wczytaniem uszkodzonych danych PDF
Zmieniono
SaveToStreamzapisuje teraz bezpośrednio do celów tylko do zapisu i nieprzeszukiwalnych, zachowując istniejącą ścieżkę serializacji fragmentami- Odzyskiwanie na najlepszy wysiłek pozostaje domyślne, tryb ścisły wyłącza rekonstrukcję surową, a tryb naprawy wymaga przetrwałego trailera zamiast go syntetyzować
Version 3.447.0
Nowości
SetOptimizationWorkersiGetOptimizationWorkerskonfigurują ograniczone partie wątków roboczych dla optymalizacji obrazów i rekompresji strumieni Flate, z domyślnym automatycznym wyborem procesorów oraz szeregowym trybem zgodnościOptimizeImages,RecompressStreams,MergeFileList,MergeFileListFastiMergeFileListStrictraportują teraz śledzony postęp i respektują kooperatywne anulowanie przezAbort
Zmieniono
- Rekompresja Flate i samodzielna transkodacja obrazów działają w ograniczonych partiach równoległych, podczas gdy mutacje dokumentu pozostają deterministyczne i jednowątkowe
- Optymalizacja obrazów zachowuje teraz zdekodowane dane bitmapowe do ponownego kodowania, pomija obrazy masek wzornikowych i z kluczem koloru oraz usuwa nieaktualne parametry dekodowania przy stosowaniu zastąpień JPEG
- Scalania dużych list plików utrzymują otwarte tylko aktywne czytniki źródłowe, raportują postęp według liczby wejść i obiektów oraz usuwają niekompletne wyjście po anulowaniu lub niepowodzeniu
Naprawiono
- Operacje scalania wielu plików raportują teraz pomyślne ukończenie, gdy scalono więcej niż jedno źródło
- Redukcja rozdzielczości i optymalizacja obrazów zachowują teraz zdekodowaną bitmapę wymaganą przez ich ścieżki ponownego kodowania
Version 3.446.0
Zmieniono
- Dwuparametrowe przeciążenie
SetDisplayListCacheLimitogranicza zatrzymywaną pamięć list wyświetlania oraz liczbę wpisów, a istniejące przeciążenie zachowuje skonfigurowany budżet bajtowy - Usuwanie list wyświetlania z pamięci podręcznej faworyzuje teraz często ponownie używaną zawartość o większej wartości przebudowy na zatrzymany bajt, a pojedyncze nadmiarowe listy omijają retencję bez blokowania renderowania
- Aktywne operacje przechwytywania i odtwarzania przypinają swoje listy, równoległe wyszukiwania nigdy nie widzą częściowo zbudowanych nagrań, a anulowane lub nieudane przechwycenia są odrzucane
GetDisplayListCacheInfoiGetResourceUsageStatisticsJSONraportują zatrzymane bajty, limity, szacowany koszt odtworzenia, usunięcia, ominięcia, odrzucone przechwycenia i rywalizację przy budowie
Naprawiono
- Odtwarzanie list wyświetlania zwalnia teraz zastąpione ciągi operandów zamiast zatrzymywać po jednej alokacji z każdego poprzedniego operatora
Version 3.445.0
Zmieniono
- Trójparametrowe przeciążenie
SetMemoryBudgetdodaje budżet zdekodowanych bajtów dla pamięci podręcznej skompresowanych strumieni obiektów każdego dokumentu - Wpisy pamięci podręcznej strumieni obiektów są teraz usuwane według zasady najdawniej używanych, z uwzględnieniem zarówno liczby wpisów, jak i rozmiaru zdekodowanych danych, a nadmiarowe wpisy omijają pamięć podręczną bez blokowania dostępu do obiektów
- Budżety pamięci skonfigurowane przed wczytaniem mają teraz zastosowanie do istniejących i przyszłych dokumentów i można je odpytać przez
GetMemoryBudget GetResourceUsageStatisticsJSONraportuje teraz bieżące bajty pamięci podręcznej strumieni obiektów, limity bajtowe i liczby usunięć
Version 3.444.0
Nowości
- Trójparametrowe przeciążenie
SetParserLimitsogranicza tolerowane błędy parsera i przerywa deterministyczne odzyskiwanie przezpdsErrorLimit, gdy budżet zostanie wyczerpany SetStreamDecodeLimitsodrzuca nadmiernie długie łańcuchy filtrów przed przydzieleniem dekoderów i egzekwuje skumulowany budżet zdekodowanych bajtów w ramach jednej śledzonej operacji- Ścieżki dekodowania strumieniowego i w pamięci współdzielą tę samą księgowość filtrów i bajtów, w tym dekodowanie strumieni obiektów podczas wczytywania dokumentu
GetResourceUsageStatisticsJSONraportuje szacunki pamięci struktur i strumieni, liczby obrazów i czcionek, szczyty zdekodowanych bajtów, niepowodzenia oraz trafienia i chybień pamięci podręcznej obiektów, strumieni obiektów i list wyświetlaniaResetResourceUsageStatisticszeruje liczniki diagnostyczne bez porzucania wczytanych dokumentów ani wielokrotnego użytku pamięci podręcznych
Version 3.443.0
Nowości
SetParserLimitsiGetParserLimitskonfigurują i sprawdzają twarde limity dla zagnieżdżonych obiektów PDF oraz liczbę wpisów w każdej bezpośrednio parsowanej tablicy lub słowniku- Limity parsera są stosowane, zanim ścieżki wczytywania plików, strumieni, ciągów, dziennika edycji, QDF i kontroli integralności skonsumują obiekty, przy czym domyślnie zachowywany jest istniejący limit zagnieżdżenia i nieograniczony rozmiar kontenerów
TPDFStructure.DecodeMaxContainerItemsodrzuca nadmiarowe tablice i słowniki z odrębnym statusempdsContainerLimiti zachowuje pozycję błęduRegenerateFormAppearancesodświeża każde pole AcroForm najwyższego poziomu i podrzędne w jednym przejściu, opcjonalnie zachowuje użyteczne wyglądy i czyściNeedAppearances
Version 3.442.0
Nowości
CheckFileComplianceprzyjmuje test zgodności 3 dla PDF/X i audytuje ukończony dokument względem reguł wymiany drukarskiej ISO 15930: identyfikację edycji pdfxid, poziom składni wynikający z części, dokładnie jedną intencję wyjściową GTS_PDFX z osadzonym profilem i identyfikatorem warunku, zadeklarowany stan trappingu, geometrię TrimBox i BleedBox na każdej stronie, osadzone programy czcionek, zabronione typy adnotacji, JavaScript na poziomie dokumentu, osadzone pliki, szyfrowanie oraz filtry LZWDecode- Problemy są zgłaszane jako wiersze z prefiksem PDFX przez ten sam uchwyt listy ciągów, którego używają kontrolery PDF/A i PDF/UA
Version 3.441.0
Nowości
SetPDFXModewybiera tryb zgodności PDF/X (1 = PDF/X-1a:2003, 2 = PDF/X-3:2003, 3 = PDF/X-4), który egzekwuje reguły wymiany drukarskiej ISO 15930 w czasie tworzenia i zapisuje identyfikację edycji XMP pdfxid- Tryb instaluje intencję wyjściową GTS_PDFX (domyślnie CMYK dla druku), deklaruje stan /Trapped i opiera wersję zapisu na części (PDF 1.4 dla X-1a / X-3, PDF 1.6 dla X-4)
- Bramki tworzenia: przestrzenie DeviceRGB i ICCBased odrzucane w X-1a (X-3 / X-4 wymagają intencji wyjściowej RGB dla DeviceRGB), przezroczystość i zawartość opcjonalna odrzucane poza X-4, a JavaScript, załączniki plików, szyfrowanie, obrazy LZWDecode i nieosadzone czcionki odrzucane w każdym trybie
- Poprawki przy zapisie: każda strona otrzymuje TrimBox (domyślnie równy MediaBox), flagi Print adnotacji i NeedAppearances AcroForm są normalizowane, a /Trapped jest deklarowany
GetInformation(203)raportuje aktywny tryb PDF/X
Version 3.440.0
Nowości
AddWatermarkAnnotationFromImageIDzapisuje adnotację /Subtype /Watermark z macierzą przechowywania /FixedPrint /Matrix, dzięki czemu druk skaluje wygląd razem ze stroną (ISO 32000-1 12.5.6.17)AddPrinterMarkAnnotationFromImageIDzapisuje adnotację /Subtype /PrinterMark przenoszącą nazwę znaku drukarskiego /PN (ISO 32000-1 12.5.6.18)SetFillColorICCBasediSetLineColorICCBasedrysują przez przestrzenie barw /ICCBased na poziomie zawartości, oparte na osadzonym pliku profilu ICC, z liczbą komponentów odczytaną z nagłówka profilu, a identyczne profile współdzielą jeden zasób
Version 3.439.0
Nowości
- Kontenery czcionek webowych WOFF 1.0 są importowane transparentnie przez każdy punkt wejściowy TrueType (
AddTrueTypeFontFromFile, interfejsy API strumieniowe); tablice są dekompresowane ze swoich strumieni zlib, a spłaszczony katalog sfnt jest przebudowywany przed parsowaniem - Dokumenty osadzają rozwinięty program sfnt w FontFile2, nigdy kontener WOFF, dzięki czemu osadzone czcionki pozostają prawidłowe dla wszystkich przeglądarek
Version 3.438.0
Nowości
- Egzekwowanie wartości seed rozciąga się na
LegalAttestation, akceptowalne wpisyIssuercertyfikatu i pozycyjne wzorceKeyUsage(ISO 32000-2 tabele 237 i 238), wraz z pasującymi interfejsami API tworzenia: wartościami legal-attestation wSetSignatureFieldSeedValue,AddSignatureFieldSeedIssueriSetSignatureFieldSeedKeyUsage SetSignProcessLegalAttestationdeklaruje poświadczenie podpisującego walidowane względem wymaganego ograniczenia LegalAttestation w chwili podpisuTPDFlibPKCS11Client.InitializeUserPINiChangeUserPINzarządzają kodami PIN tokenów przez dedykowaną sesję odczytu/zapisu z logowaniem funkcjonariusza bezpieczeństwa dlaC_InitPIN
Version 3.437.0
Nowości
SetSignProcessRSAPSSPaddingpodpisuje odłączone podpisy RSA z wypełnieniem RSASSA-PSS, emitując pełny zestaw parametrów RFC 4055 (MGF1 z skrótem podpisu, długość soli równa skrótowi) wewnątrz identyfikatora algorytmu podpisu CMS- Podpisy z wypełnieniem PSS przechodzą przez weryfikator biblioteki, który parsuje teraz parametry RFC 4055 (kodowania jawne i niejawne) i waliduje je przez CNG z zadeklarowaną długością soli
Version 3.436.0
Naprawiono
- Ekstrakcja tekstu dekoduje teraz suplementalne nazwy glifów AGL (formy
uniXXXXiuXXXXXX) przenoszone w tablicach /Differences czcionek bez mapy ToUnicode - Gniazda kodowania, których nazwa glifu nie rozwiązuje się do niczego, powracają teraz do bazowego kodowania czcionki zamiast ujawniać surowe punkty kodowe lub znaki zastępcze podczas ekstrakcji
- Symboliczne osadzone czcionki TrueType bez mapy ToUnicode są teraz dekodowane przez tabele cmap osadzonego programu czcionki, odzyskując prawdziwy Unicode za każdym kodem znaku
Version 3.435.0
Nowości
AddTrueTypeCollectionFontFromFileosadza dowolny krój kolekcji TrueType (.ttc) według indeksu od zera; poprzednie zachowanie zawsze pobierało pierwszy krójGetJPEGFileOrientationodczytuje znacznik orientacji EXIF (1..8, 0 przy braku) pliku JPEG, aGetJPEGFileICCProfileToFilewyodrębnia jego profil ICC z APP2 bez importowania obrazu
Version 3.434.0
Nowości
- Opcje renderowania 11..15 mapują flagi jakości PDFium: włączenie/wyłączenie renderowania tekstu LCD, brak wygładzania tekstu, obrazów i ścieżek oraz wymuszoną rasteryzację półtonową; wartości domyślne zachowują historyczne wyjście, a backendy GDI+/Cairo ignorują te flagi
SetDisplayListCacheLimitogranicza pamięć podręczną list wyświetlania strumieni zawartości parsowanych raz; dodatni limit usuwa najdawniej utworzone wpisy przed wstawieniem, zero przywraca zachowanie bez limitu
Version 3.433.0
Nowości
- Wybór skrótu znacznika czasu podpisu przyjmuje rodzinę SHA-3 (kody 5..7 w
SetPAdESSignatureTimeStampDigestAlgorithm), zgodnie z opcjami skrótu podpisującego SetTimeStampRetryCountkonfiguruje 0..10 dodatkowych prób TSA po błędach transportu lub odpowiedziach 5xx, z liniowym odstępem między próbamiTPDFlibCertificateInfozyskuje polaFriendlyName,ThumbprintSHA1iThumbprintSHA256odczytywane z właściwości kontekstu certyfikatu podczasEnumCertificates- Raport walidacji historycznej AdES zyskuje
BaselineProfile: 0 dla podfiltrów innych niż PAdES, następnie 1=B-B, 2=B-T, 3=B-LT, 4=B-LTA wyliczane ze znacznika czasu i danych dowodowych DSS
Version 3.432.0
Nowości
- Ciągi zakresów stron przyjmują słowa kluczowe
odd,also even,firstilast, również jako granice zakresu (3-last), w każdym interfejsie API przyjmującym zakres ReversePagesodwraca kolejność stron wczytanego dokumentuFlattenAnnotsOnPageRangewpieka wszystkie adnotacje zakresu w zawartość stron jednym wywołaniemGetPageContentBoxraportuje wspólne granice wszystkich elementów tekstowych, obrazowych i ścieżek, aAutoCropPagesustawia CropBox każdej strony na ten prostokąt powiększony o marginesAddBatesNumberingstempluje sekwencyjne numery z uzupełnieniem zer oraz prefiksem i sufiksem w dziewięciu pozycjach w układzie klawiatury numerycznejExtractDocumentRevisionzapisuje stan dokumentu z dowolnej wcześniejszej rewizji przyrostowej do nowego pliku, obcinając łańcuch rewizjiSplitDocumentByOutlinetnie dokument według wpisów konspektu do określonego poziomu, tworząc jeden plik na sekcjęComparePageTextsWithporównuje dwa dokumenty strona po stronie na wyodrębnionym tekście i raportuje liczbę różnic oraz pierwsze niedopasowanieSanitizeDocumentzyskujeSANITIZE_XMP_PACKET(wartość 32), które usuwa cały strumień metadanych XMP oraz każdy słownik/PieceInfo
Version 3.431.0
Nowości
- Opcja ekstrakcji 19 (
SetTextExtractionOptionsi wariant z bezpośrednim dostępem) odrzuca tekst w trybie renderowania 3, na przykład warstwy OCR, z ekstrahowanego wyjścia bez dotykania widocznej zawartości - Opcja ekstrakcji 20 zastępuje podczas ekstrakcji glify sekwencji oznaczonej zawartości
/Spanich wartością/ActualText(ISO 32000-1 §14.9.4), z uwzględnieniem zarówno wbudowanych słowników właściwości, jak i nazwanych zasobów właściwości DAGetTextBlockCharBoxwyprowadza osiowe prostokąty poszczególnych znaków z czworokątów bloku i posunięć, przydatne do prostokątów podświetlenia i obliczeń obszarów trafień dla pojedynczych znakówExportFormValuesToJSONserializuje wartości pól AcroForm do tablicy JSON z poprawnym escapingiem, opcjonalnie pomijając puste polaGetPageTextStatisticszlicza znaki, słowa oddzielone białymi znakami i bloki dla dowolnej stronyGetXMPPropertyodczytuje proste wartości z pakietu XMP dokumentu (schodząc przez opakowaniardf:Alt/rdf:Bag/rdf:Seqi rozwiązując encje XML), aSynchronizeXMPToInfokopiuje metadane XMP z powrotem do słownika Info- Inwentarze czcionek raportują rozmiary osadzonych programów:
TPDFlibDocumentFontzyskujeFontFileBytes, a rekord diagnostyczny sumaryczneEmbeddedBytes
Version 3.430.0
Nowości
- Wyszukiwanie tekstu zyskało cztery nowe opcje:
soDiacriticInsensitivedopasowuje zapytania przez jednokierunkowe składanie Unicode, więc zwykłe litery znajdują swoje akcentowane odpowiedniki (Latin-1, Latin Extended-A, grecki i cyrylica, z zachowaniem czułości na wielkość liter w połączeniu zsoCaseSensitive),soWildcardsinterpretuje*i?w zapytaniu z semantyką skrajnie-lewego-najdłuższego zgodną zsoWholeWord,soAcrossLinesdopasowuje frazy rozciągające się przez łamania wierszy i bloków przez łączenie wyodrębnionych bloków każdej strony, asoPreserveStylesprawia, żeSearchAndReplaceTextrysuje zamienniki w rozmiarze i kolorze tekstu zastępowanego bloku zamiast bieżących ustawień wywołującego - Trafienia wyszukiwania raportują teraz pozycję i długość dopasowania w tekście bloku (
MatchStart,MatchLength) oraz opcjonalne okna kontekstu (ContextBefore,ContextAfter) sterowane nową właściwościąSearchContextChars AddTextMarkupFromSearchHitsiHighlightTextSearchHitskonwertują trafienia wyszukiwania albo trafienia zatrzymane przez działającą sesjęBeginTextSearchna adnotacje znacznikowe Highlight / Underline / Squiggly / StrikeOut na ich stronach- Dosłowne wzorce wyszukiwania o długości co najmniej czterech znaków korzystają teraz z tablicy przeskoków Boyera-Moorea-Horspoola z zachowawczą kolacją znaków szerokich, przyspieszając wyszukiwania wsadowe na długich stronach
Naprawiono
- Osadzone czcionki TrueType zapisane z bazowym kodowaniem WinAnsi i tablicą Differences generowały mapę CMap
/ToUnicode, która zawierała tylko wpisy Differences, dlatego korzystające z niej czytniki dekodowały każdy pozostały akcentowany kod WinAnsi jako nieprawidłowe dane: wyodrębnianie zwracało?jako znaki zastępcze, gromadzenie bloków mogło zatrzymać się na dotkniętym wierszu, a wyszukiwanie uwzględniające znaki diakrytyczne pomijało takie dokumenty. Generator CMap obejmuje teraz całe kodowanie bazowe z nadpisaniami Differences, podzielone na zgodne ze specyfikacją sekcje po 100 wpisów - Księgowanie scalania słów w lejku tekstowym wstawiało fantomowy wpis posunięcia przy dołączaniu przebiegów bez separatora, przesuwając każdy późniejszy offset znakowy o jeden i uszkadzając dane pochodne, takie jak prostokąty podrzędne trafień wyszukiwania i spacje wnioskowane z odstępów
Version 3.429.0
Naprawiono
- Subsetting przez
AddTrueTypeSubsettedFontprodukował dokumenty, których tekst renderował się pusto w każdej przeglądarce: strumień mapowania CID-na-GID był po cichu nadpisywany na wpisanym na sztywno wpisie/Identity, więc CID-y wywodzone z Unicode wskazywały złe kontury glifów. Strumień jest teraz wiążący, a/Identitypozostaje tylko jako mechanizm awaryjny, gdy nie można wywieść mapowania; dokumenty z subsettingiem ze zbiorami CJK i automatycznie aktualizowanymi glifami renderują się ponownie poprawnie - Wypełnienia cieniowaniem osiowym i promienistym renderowały się jako pełna czerń na wewnętrznym rendererze GDI+:
GdipCreateLineBrushodrzucaWrapModeClamp(tryb wyłącznie dla pędzli teksturalnych), a nieudane utworzenie pędzla spadało do czarnego wypełnienia jednolitego. Pędzle gradientowe są teraz tworzone zWrapModeTile, a wypełnienia cieniowaniem renderują się identycznie jak w backendzie Cairo i zewnętrznych przeglądarkach - Tworzenie instancji
TPDFlibzgłaszałoEIntOverflow, gdy biblioteka była kompilowana z kontrolą nadmiaru (flagi wydaniowe skryptów budowy demo z linii poleceń): hash nazw FNV-1a, akumulacja stanu MD5 i liczniki bitów MD5 to z założenia arytmetyka modularna i działają teraz z lokalnie wyłączoną kontrolą nadmiaru. Wyjście wydaniowebuild-Win32-Demo/build-Win64-Demonie ulega już awarii przy starcie
Version 3.428.1
Nowości
- Nowe flagowe demo
Showcase(Demo\Delphi\Showcase): buduje przy starcie siedmiostronicowy dokument — gradientowa okładka, grafika wektorowa z cieniowaniami i wzorcami, typografia z osadzonym TrueType, stylizowane tabele, galeria kodów kreskowych, interaktywne łącza z adnotacjami recenzenckimi i zakładki oraz strona podsumowania — i podgląda go na żywo w osadzonej kontrolceTPDFlibViewer - Demo Showcase działa również bez interfejsu (
Showcase.exe <output.pdf>) z opcjonalnym argumentemrender, który eksportuje każdą stronę jako PNG, dzięki czemu pełny potok dokumentu można uruchomić ze skryptów budowy
Naprawiono
- Parsowanie strumienia zawartości nie błędnie odczytuje już operatora koloru obrysu
RG: podgląd odniesienia pośredniego w dekoderze obiektów konsumował0 0 0 RGjako liczbę plus fantomowe odniesienie0 0 R, co uszkadzało kolory obrysu po optymalizacji zawartości i powodowało błędy składni operatorów w ścisłych przeglądarkach - Optymalizator peephole zawartości nie porzuca już powtórzonego settera
cs(przestrzeni barw) następującego po dowolnym operatorze koloru:rg/g/kniejawnie resetują przestrzeń barw, więc wypełnienia wzorcem (scn) po zmianach koloru tekstu zachowywały swoje/Pattern csi ponownie renderują się poprawnie
Version 3.428.0
Nowości
- Dziewiętnaście nowych konsolowych demo Free Pascal / Lazarus w katalogu
Demo\Lazarus: OutlineBuilder, WatermarkDemo, NamedDestinations, EmbeddedFiles, XmpMetadata, TextBlockExtraction, AnnotationInspector, BarcodeGallery, TaggedPDF, SearchReplace, Redaction, LinearizeDemo, PatternShowcase, DocumentProperties, SecurityPermissionMatrix, PageStitch, OutputStream, MergePDF i PdfToImage - Shim zgodności
IOUtils(TPath / TDirectory / TFile) dla kompilacji FPC utrzymuje przeniesione demo identyczne ze źródła z ich odpowiednikami Delphi
Zmieniono
- Zastępcza grafika NOVCL pod Windows materializuje teraz prawdziwe obiekty GDI: TBitmap przydziela sekcję DIB o układzie od góry do dołu, TCanvas posiada pamięciowy DC i ponownie wybiera obiekty GDI pędzla, pióra i czcionki przy zmianach właściwości, a TBrush / TPen / TFont przebudowują swoje uchwyty przy zmianie kolorów, stylów lub atrybutów czcionki
- Renderowanie stron pod FPC daje teraz pikselowe wyjście zgodne z kompilacją Delphi (rasteryzacja GDI+ przez zastępczy DC), co przywraca także eksport JPEG i BMP w
PdfToImage
Naprawiono
- Tworzenie zaszyfrowanych PDF pod FPC uszkadzało binarne wartości ciągów (odczyt zwrotny
/IDtrailera, szyfrowanie/U), powodując niepowodzenie weryfikacji ponownego wczytania wyjścia; kompilacje FPC nie przekazują już-FcUTF8, którego oznaczanie stron kodowych ansistring sprawiało, że konkatenacjaAnsiString + AnsiCharzastępowała każdy bajt powyżej $7F znakiem zapytania
Version 3.427.0
Nowości
- Obsługa Free Pascal / Lazarus: biblioteka kompiluje się teraz pod FPC 3.2 (Win64) z tych samych źródeł co kompilacje Delphi, z nowymi skryptami budowy
build-Lazarus-Lib,build-Lazarus-Lib-TRIAL,build-Lazarus-Testsibuild-Win64-Demo-Lazoraz pakietemPDFlibPasLaz - Kompresja i dekompresja Flate pod FPC przechodzą przez statyczne zlib dołączone do FPC; szyfrowanie AES linkuje ten sam obiekt unity, którego używają kompilacje Delphi; obrazy JPEG dekodują przez backend GDI+
- Konsolowy zestaw testów FPCUnit (
Tests\Lazarus) obejmuje pełne cykle tworzenia, zapisywania i wczytywania dokumentu, deflate/inflate, AES oraz wyodrębnianie tekstu, a dwa konsolowe przykłady Lazarus (HelloWorld,TextExtract) są dołączone w kataloguDemo\Lazarus
Zmieniono
- Prefiksy zakresów jednostek (
System.SysUtils,Winapi.Windowsi inne) zostały usunięte ze źródeł biblioteki, aby te same jednostki rozwiązywały się pod oboma kompilatorami; kompilacje biblioteki z linii poleceń Delphi przekazują teraz jawnie listę zakresów jednostek - Poprawiono dwie literówki dyrektyw
NO_VCL/NOVCLw rendererze i eksporcie bitmap Cairo, które stały się widoczne dopiero po faktycznej kompilacji konfiguracji NOVCL dla Windows
Version 3.426.0
Nowości
- Renderowanie stron potrafi teraz symulować nadruk procesowy i farbami nazwanymi przez konfigurowalne interfejsy API Delphi, DLL i ActiveX
Zmieniono
- Rozszerzone stany graficzne zachowują teraz skumulowaną semantykę
/OP,/opi/OPM, a ograniczona kompozycja pikseli zachowuje nakładające się kanały farby na rendererach GDI+ i Cairo
Version 3.425.0
Nowości
- Ekstrakcja obrazów zachowuje teraz segmenty strony i globalne JBIG2 w samodzielnych plikach oraz utrzymuje dane CCITT fax w samodzielnych opakowaniach TIFF
- Manifest deduplikacji obrazów tylko do odczytu grupuje dokładne duplikaty zakodowane według skrótu, tożsamości obiektu, użycia na stronach i odzyskiwalnych bajtów danych w klientach Delphi, DLL i ActiveX
Zmieniono
- Listy obrazów stron identyfikują teraz natywne dane JPX i JBIG2 bez wymuszania rozwijania bitmapy, w tym strumienie obrazów osiągalne przez zagnieżdżone Form XObjects
Version 3.424.0
Nowości
- Interfejsy API plików powiązanych na poziomie dokumentu tworzą, wyliczają, mapują, dodają i usuwają teraz członkostwo
/AFkatalogu w klientach Delphi, DLL i ActiveX - Adnotacje RichMedia mogą ponownie wykorzystywać istniejący plik osadzony lub powiązany, utrzymując jedno medium współdzielone przez panel załączników i graf zasobów adnotacji
Zmieniono
- Tworzenie plików powiązanych przyjmuje pliki, strumienie Delphi, ciągi binarne, bufory DLL i tablice bajtów ActiveX, zachowując sumy kontrolne, opisy, metadane relacji i binarne bajty zerowe
- Usuwanie osadzonego pliku usuwa teraz także pasujące odniesienia plików powiązanych katalogu, więc wczytane dokumenty nie mogą zatrzymywać wiszących wpisów
/AF
Version 3.423.0
Nowości
- Interfejsy API zawartości opcjonalnej budują teraz zagnieżdżone etykiety panelu warstw i gałęzie grup w klientach Delphi, DLL i ActiveX
- Interfejsy API tworzenia, członkostwa, usuwania i inspekcji grup radiowych dodają wzajemnie wykluczające się kontrolki warstw dla przepływów CAD i map
Zmieniono
- Aktualizacje zablokowanych warstw raportują teraz sukces, alternatywne konfiguracje używają swoich poprawnych identyfikatorów jedynkowych, a zniekształcone hierarchie warstw są przemierzane z ograniczoną ochroną przed cyklami
- Usunięcie grupy zawartości opcjonalnej usuwa jej odniesienia ze struktur kolejności warstw, stanów, blokad, grup radiowych i stanów automatycznych w każdej konfiguracji
Version 3.422.0
Nowości
- Interfejsy API adnotacji 3D PRC osadzają modele z plików, strumieni, ciągów pamięci, buforów DLL i tablic bajtów ActiveX z nazwanymi widokami domyślnymi i jawnymi zasadami aktywacji
- Adnotacje PRC obsługują dokumenty inżynieryjne PDF/A-4e, automatycznie podnosząc zwykłe wyjście do PDF 2.0
Zmieniono
- Adnotacje PRC i U3D zawierają teraz kompletny widok 3D, słowniki aktywacji i dezaktywacji, flagi adnotacji drukowalnych, nazwy alternatywne oraz wygląd normalny
- Starsze osadzanie U3D odrzuca profile PDF/A niepozwalające na adnotacje 3D i przyjmuje PDF/A-4e
Version 3.421.0
Nowości
- Interfejsy API części dokumentu dodają
/DPartRootPDF 2.0, hierarchiczne/DParts, liście zakresów stron, poziomy rekordów, nazwy poziomów oraz walidowane metadane/DPMw klientach Delphi, DLL i ActiveX - Interfejsy API inspekcji i cyklu życia udostępniają walidację hierarchii, liczby osiągalnych części, wyszukiwanie strony do części, pełne cykle metadanych i kompletne usunięcie hierarchii
Zmieniono
- Duże zestawy podrzędne używają ograniczonych bloków tablicowych, a walidacja sprawdza powiązania nadrzędne, cykle, jednolitą głębokość liści, uporządkowane pełne pokrycie stron, odwrotne powiązania stron, tokeny nazw XML i ograniczone grafy metadanych
- Utworzenie hierarchii części dokumentu podnosi wyjście do PDF 2.0 i uczestniczy w wykrywaniu funkcji wczytanego dokumentu oraz blokowaniu wersji zapisu
Version 3.420.0
Nowości
DrawHTMLStorydodaje wysokopoziomowy stylizowany przepływ HTML przez kolumny o równej szerokości i automatycznie generowane strony w klientach Delphi, DLL i ActiveX- Ograniczone limity stron zwracają wielokrotnego użytku ciąg kontynuacji, który zachowuje aktywną kaskadę arkuszy stylów, zagnieżdżony stan stylów, ustrukturyzowane bloki, tabele, łącza, mapowania czcionek i powiązania obrazów
Zmieniono
- Generowane strony artykułu dziedziczą efektywne wymiary wybranej strony startowej, a każda kolumna ponownie wykorzystuje buforowane plany układu mierzenia i odtwarzania
- Układ artykułu odrzuca nieprawidłową geometrię, ogranicza kolumny i generowane strony oraz kończy działanie, gdy kolejne ramki nie mogą poczynić postępu
Version 3.419.0
Nowości
TPDFlibPrinterdodaje fasadę komponentu VCL z metodami cyklu życiaBeginDoc,Canvas,NewPage,EndDociAbortdo bezpośredniego tworzenia PDF- Zadania drukowania PDF obsługują konfigurowalne wymiary papieru, orientację pionową lub poziomą, DPI kanwy, opcje importu wektorowego, tytuły dokumentów oraz opcjonalne bezpośrednie wyjście do pliku
Zmieniono
- Każde zadanie komponentu posiada niezależny dokument PDF, zatwierdza pierwszą i kolejne kanwy ze spójną semantyką stron oraz zatrzymuje ukończone wyjście do dalszego przetwarzania przez bibliotekę
- Komponent nigdy nie otwiera okna dialogowego drukowania ani nie korzysta z bufora systemu operacyjnego, co pozwala przenieść istniejący kod rysowania na kanwie VCL bez zależności od fizycznej drukarki
Version 3.418.0
Nowości
RenderPagesToPrintStream,RenderPagesToPrintString,RenderPagesToPrintFile,RenderPagesToPrintDataiRenderPagesToPrintBufferdodają wyjście drukarskie niezależne od sterownika w klientach Delphi, DLL i ActiveX- Wybrane zakresy stron mogą być emitowane jako PostScript Level 3, jednostronicowe EPS, PCL 5c lub PWG Raster z opcjonalnymi kontrolkami monochromatyczności, dupleksu, tumble i ramek zadań PCL
Zmieniono
- PostScript i EPS zachowują wektorową zawartość stron, a PCL i PWG Raster używają ograniczonych koderów wierszy do bezpośredniej dostawy na serwery i urządzenia wbudowane
- Strumienie drukowania są generowane bez otwierania drukarki, pokazywania okna dialogowego drukowania ani przesyłania pracy do bufora systemu operacyjnego
Version 3.417.0
Nowości
ExportPageSVGiExportPageSVGToFiledodają skalowalny eksport stron w klientach Delphi, DLL i ActiveX- Wyjście SVG może niezależnie obejmować natywne malowane ścieżki, przeszukiwalny tekst, osadzone obrazy PNG, klikalne łącza adnotacji i przezroczyste tło strony
Zmieniono
- Ścieżki stron zachowują swoje przekształcenia, wygląd wypełnienia i obrysu, krycie, style linii, reguły parzystości-nieparzystości oraz efektywne granice przycinania bez rasteryzowania całej strony
- Każda strona jest przetwarzana w ograniczonych przebiegach i produkuje samodzielny dokument SVG bez zewnętrznych zależności obrazowych
Version 3.416.0
Nowości
DrawSVG,DrawSVGFromFile,GetSVGWidthiGetSVGHeightdodają natywne umieszczanie i mierzenie wektorów SVG w klientach Delphi, DLL i ActiveX- Rysowanie SVG obsługuje view boxy, wyrównanie proporcji, grupy, definicje i ponowne użycie, przekształcenia, przycinanie, prosty CSS i style inline, krycie, ścieżki z łukami eliptycznymi oraz standardowe kształty prostokąta, okręgu, elipsy, linii, łamanej i wielokąta
Zmieniono
- Geometria SVG jest zapisywana jako skalowalne ścieżki PDF bez rastrowych XObjectów obrazów, a powtórzone mierzenie i rysowanie ponownie wykorzystują ostatnio sparsowane ograniczone drzewo SVG
- Niezaufane wejście SVG jest ograniczone rozmiarem źródła, liczbą elementów i głębokością zagnieżdżenia, nie wykonuje dostępu do zasobów zewnętrznych i używa pierwszego przystanku koloru jako deterministycznego jednolitego zamiennika dla serwerów malowania gradientem
Version 3.415.0
Nowości
DrawFormula,GetFormulaWidthiGetFormulaHeightdodają zagnieżdżony układ matematyczny w klientach Delphi, DLL i ActiveX- Znaczniki formuł obsługują ułamki piętrowe, jednoczesowe indeksy górne i dolne, pierwiastki kwadratowe z opcjonalnymi wskaźnikami, litery greckie, popularne symbole matematyczne, znaki escaped, grupy tekstowe i ograniczone zagnieżdżenie
Zmieniono
- Tekst formuły używa wybranej czcionki, rozmiaru tekstu, koloru, kształtowania i łańcucha zastępczego, a kreski ułamkowe i znaki pierwiastka pozostają zawartością wektorową
- Powtórzone mierzenie i rysowanie ponownie wykorzystują sparsowane i zmierzone drzewo pudeł, dopóki dokument, skala pomiaru i pełny stan malarza pozostają niezmienione
Version 3.414.0
Nowości
MarkdownToHTML,DrawMarkdownText,DrawMarkdownTextBox,GetMarkdownTextHeight,GetMarkdownTextWidthiGetMarkdownTextLineCountdodają bezpośrednią konwersję Markdown, mierzenie, rysowanie i kontynuację z limitem wysokości w klientach Delphi, DLL i ActiveX- Wejście Markdown obsługuje nagłówki ATX i setext, akapity, blokowe cytaty, listy uporządkowane i nieuporządkowane, tabele rurkowe z wyrównaniem, kod ogrodzony i wcięty, wyróżnienia, tekst wzmocniony, przekreślenia, łącza, obrazy, automatyczne łącza webowe, sekwencje ucieczki oraz twarde łamania wierszy
Zmieniono
- Powtórzone mierzenie i rysowanie Markdown ponownie wykorzystują przekonwertowany HTML i ograniczoną pamięć podręczną układu HTML, a surowe nawiasy kątowe pozostają tekstem escapowanym
DrawMarkdownTextBoxzwraca nieprzezroczysty token kontynuacji przyjmowany przez tę samą metodę, dzięki czemu częściowo wyrenderowany stan inline może być kontynuowany na innej stronie
Version 3.413.0
Zmieniono
- Mierzenie i rysowanie HTML współdzielą teraz ograniczone plany układu, które buforują parsowanie, rozwiązywanie CSS, geometrię wierszy i tabel, obrazy, stylizowane tła oraz łącza
- Pasujące wywołania
GetHTMLTextHeight,GetHTMLTextWidthlubGetHTMLTextLineCountmogą zasilaćDrawHTMLTextbez powtarzania parsowania HTML ani pracy układu
Naprawiono
- Mierzenie HTML ze stylizowanymi tłami tekstu nie zapisuje już operatorów prostokątów do strumienia zawartości wybranej strony
Version 3.412.0
Nowości
BeginDeferredPageLayer,EndDeferredPageLayer,ComposeDeferredPageLayers,CancelDeferredPageLayersiGetDeferredPageLayerCountzapewniają odroczoną kompozycję z-index w klientach Delphi, DLL i ActiveX- Ujemne warstwy renderują się pod istniejącą zawartością strony, a warstwy zerowe i dodatnie nad nią, ze stabilną kolejnością nagrywania dla równych wartości z-index
Zmieniono
- Odroczone warstwy są zatrzymywane jako XObjecty Form o rozmiarze strony i komponowane przez jedną operację umieszczenia na warstwę, bez parsowania ani odtwarzania ich poleceń rysowania
Version 3.411.0
Nowości
SetPageHeaderFooterVariant,ApplyPageHeaderFooterSetiClearPageHeaderFooterSetzapewniają wielokrotnego użytku nazwane szablony żywych pagin nagłówka i stopki z wariantami pierwszej strony, stron nieparzystych, parzystych i domyślnym- Warianty nagłówka i stopki mogą renderować zwykły tekst bieżącą czcionką lub bogaty HTML z automatycznym mierzeniem wysokości, rozwijaniem zmiennych na stronę, wyrównaniem, marginesami i kryciem w klientach Delphi, DLL i ActiveX
Zmieniono
- Generowane żywe paginy nagłówka i stopki są artefaktami paginacji, zachowują stan strony i malarza wywołującego oraz obsługują jawne puste warianty, które wyciszają podstawienie dla stron tytułowych lub otwierających sekcje
Version 3.410.0
Nowości
StartPageNumberChapter,AddPageNumberPlaceholderiResolvePageNumberPlaceholderszapewniają dwuprzebiegowy przepływ dla ostatecznych numerów stron dokumentu i rozdziału w zwykłym tekście głównym- Szablony paginacji obsługują fizyczne numery stron, ostateczne sumy dokumentu, nazwy rozdziałów, numery stron względem rozdziału i ostateczne sumy rozdziału w klientach Delphi, DLL i ActiveX
Naprawiono
- Pola tekstowe o szerokich ciągach przekazują teraz swój tekst do silnika zawijania zamiast produkować puste pole
Version 3.409.0
Nowości
AutoFitTableColumnsprzydziela szerokości kolumn tabeli na podstawie stylizowanej zawartości komórek, honorując dokładną szerokość tabeli i zdefiniowane przez wywołującego limity poszczególnych kolumn- Klienci Delphi, DLL i ActiveX współdzielą to samo zachowanie automatycznego wymiarowania tabel, w tym ograniczenia scalonych komórek
Zmieniono
- Udane automatyczne wymiarowanie unieważnia buforowane pomiary wierszy, a niewykonalne ograniczenia szerokości pozostawiają każdą istniejącą kolumnę bez zmian
Version 3.408.0
Nowości
DrawTextFlowColumnsprzepływa zatrzymany fragment przez jedną do 64 kolumn o równej szerokości z konfigurowalnymi odstępami i opcjonalnym wyważaniem końcowego obszaru- Klienci DLL i ActiveX mogą teraz tworzyć, rysować, mierzyć, sprawdzać, przewijać i zwalniać uchwyty TextFlow przez kompletny publiczny cykl życia
Zmieniono
- Wyważone kolumny używają dokładnych liczby wierszy, gdy pozostały fragment się mieści, a obszary przepełnione zachowują pełną wysokość kolumn dla maksymalnej pojemności strony
Version 3.407.0
Nowości
- Renderowanie tekstu HTML obsługuje teraz osadzone arkusze stylów, inline CSS, nagłówki, bloki strukturalne, tabele ze scaleniami kolumn oraz obrazy związane z dokumentem
SetHTMLImageiClearHTMLImagesudostępniają pasujące kontrolki Delphi, DLL i ActiveX dla wielokrotnego użytku źródeł obrazów HTML
Zmieniono
- Mierzenie i rysowanie HTML współdzielą teraz rozwiązaną kaskadę i decyzje układu, wiersze tabel kontynuują atomowo między polami tekstowymi, a stan kontynuacji zachowuje zagnieżdżone formatowanie CSS
Version 3.406.0
Nowości
- TextFlow obsługuje teraz ograniczone, uwzględniające język automatyczne dzielenie wyrazów dla angielskiego, niemieckiego, niderlandzkiego, francuskiego, hiszpańskiego, włoskiego, portugalskiego, rosyjskiego i tureckiego, w tym dziedziczenie języka z wartości
/Langkatalogu dokumentu SetTextFlowLanguageiSetTextFlowHyphenationudostępniają pasujące kontrolki Delphi, DLL i ActiveX dla języka oraz minimalnych długości prefiksu i sufiksu
Zmieniono
- Łamanie wierszy w TextFlow mierzy teraz całe słowa, używa ograniczonego wyszukiwania tylko dla nadmiernych tokenów i renderuje opcjonalne miękkie lub automatyczne dywizy tylko wtedy, gdy wybrane jest złamanie
Version 3.405.0
Nowości
- Automatyczne podstawianie czcionek rozwiązuje teraz brakujące klastry CJK, symboliczne, matematyczne, złożonych systemów pisma i emoji przez buforowane zainstalowane kroje, zachowując kształtowanie i kolejność przebiegów dwukierunkowych
SetAutomaticFontFallback,AddFontFallbacki interfejsy API inspekcji łańcucha zastępczego udostępniają pasujące kontrolki Delphi, DLL i ActiveX
Zmieniono
- Rysowanie tekstu i pomiar szerokości współdzielą teraz te same uwzględniające klastry decyzje zastępcze i leniwie osadzają tylko czcionki zastępcze wybrane do wyjścia
Version 3.404.0
Nowości
- Brakujące glify są teraz wykrywane jako skalary Unicode w tekście zwykłym i ukształtowanym, zatrzymywane w ograniczonym raporcie JSON i udostępniane przez wywołania zwrotne Delphi, DLL i ActiveX
SetMissingGlyphPolicymoże zachować zgodne zachowanie porzucenia z raportem albo odrzucić operację tekstową przed zapisaniem zawartości zLastErrorCode 521
Version 3.403.0
Nowości
GetAPIScopeReportJSONiClearAPIScopeReportudostępniają deterministyczną diagnostykę środowiska uruchomieniowego i strumienia zawartości przez interfejsy API Delphi, DLL i ActiveX- Nieprawidłowe przejścia ścieżki, stanu grafiki, aktualizacji strony, zawartości oznaczonej, formularza, wzorca, strony, dokumentu i finalizacji wyjścia kończą się teraz natychmiast błędem
LastErrorCode 117
Version 3.402.0
Nowości
AnalyzePageSkewJSON,DeskewPageiDeskewPageRangewykrywają i korygują obrót zeskanowanych stron przez interfejsy API Delphi, DLL i ActiveX- Analiza prostowania używa ograniczonych rastrów o adaptacyjnej rozdzielczości i punktowania profili linii od zgrubnego do dokładnego, a korekta zachowuje oryginalną zawartość PDF i oferuje opcjonalny tryb wypełnienia strony
Version 3.401.0
Nowości
DetectPageBarcodesJSONrozpoznaje jednowymiarowe i dwuwymiarowe kody kreskowe z pełnej strony PDF lub ograniczonego obszaru strony i zwraca tekst, symbolikę, orientację, ważność, punkty narożne i granice jako deterministyczny JSON- Skanowanie obszarów renderuje tylko żądane piksele, zachowuje wybraną stronę, obsługuje maski formatu i opcji dekodera oraz udostępnia pasujące interfejsy API Delphi, DLL i ActiveX
Version 3.400.0
Nowości
SaveDOCXToStreamiSaveDOCXToFilekonwertują zakresy stron PDF na edytowalne akapity WordprocessingML, wywnioskowane nagłówki, natywne listy punktowane i numerowane, wykryte tabele, stylowanie czcionek, łamania stron i pozycjonowane obrazy PNG- Deterministyczny składacz pakietów DOCX używa surowych wpisów Deflate ze sprawdzaniem CRC bez automatyzacji Office, zapisuje dane obrazów w miarę przetwarzania każdej strony, zachowuje jawną kolejność stron i przywraca wybraną stronę PDF
Version 3.399.0
Nowości
ExportPageMarkdowniExportDocumentMarkdownkonwertują semantyczną zawartość stron na escapowane akapity Markdown, wywnioskowane nagłówki, listy uporządkowane lub nieuporządkowane oraz tabele rurkowe z opcjonalnymi znacznikami stron i stylowaniem czcionekSaveMarkdownToStreamiSaveMarkdownToFilezapisują UTF-8 po jednej stronie bez buforowania pełnego wyjścia dokumentu, a pasujące punkty wejściowe DLL i ActiveX udostępniają przepływy eksportu do ciągu i pliku
Version 3.398.0
Nowości
ExportPageHTMLiExportDocumentHTMLtworzą samodzielny HTML5 z pozycjonowanym tekstem, osadzonymi obrazami PNG, łączami URI i wewnętrznymi kotwicami stron- Eksport dokumentu zachowuje jawną kolejność zakresu stron, przywraca wybraną stronę, zatrzymuje jeden model ekstrakcji strony naraz i udostępnia pasujące interfejsy API Delphi, DLL i ActiveX
Version 3.397.0
Nowości
ExtractStructuredPageiExtractStructuredDocumentprzekształcają tekst strony w hierarchie akapitów, wierszy, fragmentów, tabel, rzędów i komórek oraz eksportują ten sam model jako JSON, semantyczny XHTML lub CSV z wykrytych tabel- Ekstrakcja dokumentu zatrzymuje jedną hierarchię strony naraz, przywraca wybraną stronę i udostępnia pasujące punkty wejściowe Delphi, DLL i ActiveX
Version 3.396.0
Nowości
ApplyOCRTextLayerprzyjmuje neutralny względem dostawcy JSON OCR i dołącza filtrowany ufnością, dopasowany do prostokątów niewidzialny tekst, który czyni zeskanowane strony przeszukiwalnymi bez zmiany renderowanych pikseliOCRPage,OCRDocumentiOnOCRPagezapewniają wtykowy potok OCR strona po stronie z ograniczoną pamięcią rastra, a wywołujący DLL i ActiveX mogą łączyć istniejące renderowanie stron zApplyOCRTextLayer
Version 3.395.0
Nowości
AddImageFromFileiAddImageFromStreamprzyjmują teraz obrazy WebP; biblioteka wykrywa kontener RIFF/WEBP i dekoduje przez GDI+, który w Windows 10 1809 i nowszych dostarcza wbudowany kodek WebP
Version 3.394.0
Nowości
SetRenderTargetICCpozwala wywołującemu dostarczyć docelowy profil ICC, aby przekształcenia ICC renderera mapowały kolory źródłowe przez profil proofingu CMYK zamiast domyślnego sRGB, umożliwiając miękkie proofing CMYK i podgląd gamutu
Version 3.393.0
Nowości
OptimizeImagesskanuje każdy osadzony obraz, dekoduje go, ponownie koduje jako JPEG o jakości podanej przez wywołującego i zastępuje oryginalny strumień w miejscu tylko wtedy, gdy JPEG jest ściśle mniejszy — automatycznie zmniejszając zeskanowane dokumenty i nieskompresowane obrazy, chroniąc jednocześnie obrazy, które urosłyby
Version 3.392.0
Nowości
GetImageInfoJSONskanuje każdy XObject obrazu w dokumencie i zwraca metadane każdego obrazu (numer obiektu, wymiary w pikselach, przestrzeń barw, bity na komponent, filtr) jako JSON bez dekodowania jakichkolwiek danych pikselowych, więc audyt inwentarzy obrazów pozostaje O(liczba obrazów) w pamięci zamiast O(całkowite bajty obrazów)
Version 3.391.0
Nowości
- Obrazy JPEG2000 (JPXDecode) są teraz ekstrahowane z natywnym przepustem bajtów, gdy tryb ekstrakcji go obsługuje, zachowując oryginalny skompresowany strumień bez dekodowania i ponownego kodowania, zgodnie z istniejącym zachowaniem przepustu JPEG
Version 3.390.0
Nowości
NewMultiStopAxialShaderiNewMultiStopRadialShadertworzą gradienty z dowolną liczbą wewnętrznych przystanków koloru w dowolnej przestrzeni barw PDF (DeviceRGB, DeviceCMYK, DeviceGray, ICCBased), używając funkcji szycia Type 3 do łańcuchowania po jednej wykładniczej interpolacji Type 2 na segment- Nowy rekord
TPDFGradientStopprzenosi pozycję w[0,1]i wartości koloru na komponent dla każdego przystanku
Version 3.389.2
Zmieniono
- Kształtowanie tekstu złożonego buforuje teraz SCRIPT_CACHE Uniscribe, HFONT i DC na czcionkę przez cały czas życia dokumentu, więc sparsowane tablice cmap/GSUB/GPOS czcionki przeżywają między wywołaniami
DrawShapedTextzamiast być za każdym razem tworzone i zwalniane
Version 3.389.1
Zmieniono
- Konwersja liczby na ciąg przy zapisie strumienia zawartości używa teraz wbudowanej pętli cyfr z prekalkulowaną tablicą potęg dziesięciu zamiast ogólnej ścieżki
Power+IntToStr+Insert, co istotnie redukuje obciążenie CPU przy generowaniu gęstej grafiki, dając bajtowo identyczne wyjście
Version 3.389.0
Nowości
SetMemoryBudgetogranicza pamięć konsumowaną przez duże dokumenty, nakładając limit na próg rozmiaru dekodowanych strumieni i pamięć podręczną skompresowanych strumieni obiektów, utrzymując szczyt pamięci w budżecie ustawionym przez wywołującego
Zmieniono
- Pamięć podręczna skompresowanych strumieni obiektów czytnika o dostępie swobodnym ma teraz domyślnie 50 wpisów zamiast rosnąć bez limitu, więc dotknięcie wielu strumieni ObjStm nie gromadzi już dekodowanej zawartości w nieskończoność
Version 3.388.1
Zmieniono
- Tokeny nazw PDF parsowane podczas wczytywania dokumentu są teraz internowane w puli haszy per struktura, więc miliony zduplikowanych nazw w dużych dokumentach współdzielą po jednym buforze z licznikiem odniesień zamiast przydzielać świeże ciągi; wyszukiwania kluczy słowników skracają się do porównań wskaźników
Version 3.388.0
Nowości
- Czcionki CFF, OpenType-CFF i CID-keyed są teraz subsettingowane przy zapisie przez tę samą usługę
CreateFontPackage, z której korzysta subsetting TrueType, osadzając tylko glify faktycznie narysowane przez strumień zawartości i istotnie zmniejszając dokumenty CJK i OTF - Wyjścia CIDFontType0 po subsettingu zawierają teraz strumień
/CIDSetdeklarujący, które CID-y są osadzone, co spełnia regułę PDF/A 00032 i oczekiwania zgodnych czytników
Version 3.387.0
Nowości
SetRenderBandingrenderuje stronę jednym poziomym pasem naraz do niskiej bitmapy, komponując pasy do wyjścia pełnego rozmiaru, więc strony o wysokim DPI i dużym formacie utrzymują ograniczony szczyt pamięci zamiast przydzielać jedną wielką bitmapęGetRenderBandHeightraportuje aktywną wysokość pasa albo 0, gdy pasowanie jest wyłączone- Nowe interfejsy API renderowania pasowego Delphi, DLL i ActiveX udostępniają ten przepływ na każdej powierzchni publicznej
Version 3.386.0
Nowości
SetDisplayListCachingnagrywa strumień zawartości strony raz do odtwarzalnej listy wyświetlania, więc późniejsze renderowania przy dowolnym powiększeniu lub DPI pomijają ponowne tokenizowanie; XObjecty Form i procedury glifów Type 3 buforują po jednej liścieGetDisplayListCacheInforaportuje jako JSON, czy buforowanie jest włączone, oraz liczbę wpisów i liczniki trafień i chybień, aClearDisplayListCacheporzuca nagrania i odzyskuje ich pamięć- Nowe interfejsy API list wyświetlania Delphi, DLL i ActiveX udostępniają ten przepływ na każdej powierzchni publicznej
Version 3.385.0
Nowości
StartRenderPageJobrenderuje stronę w zadaniu w tle przez odosobnioną instancję, więc duża strona nie może już zablokować wątku hosta podczas renderowaniaPauseRenderJob,ResumeRenderJobiCancelRenderJobprzerywają pojedynczą stronę w locie na granicach operatorów strumienia zawartości przez kooperatywną flagę anulowania i bramkę pauzy wpiętą w rendererWaitForRenderJob,GetRenderJobStateiGetRenderJobResultraportują postęp i wynik zadania przez kodyRENDER_JOB_STATE_*- Nowe interfejsy API zadań renderowania Delphi, DLL i ActiveX udostępniają ten przepływ na każdej powierzchni publicznej
Version 3.384.0
Nowości
DAOpenFromURLotwiera zdalny PDF po HTTP, używając żądań zakresów bajtów, pobierając tylko obiekty, których czytnik faktycznie dotyka, i pobierając z góry sekcję pierwszej strony zlinearizowanych dokumentów, aby strona 1 renderowała się pierwszaGetLinearizedURLAccessPlansonduje zdalny URL jednym małym żądaniem zakresu i zwraca raport JSON z całkowitą długością, obsługą zakresów bajtów, linearizacją, liczbą stron, obiektem pierwszej strony i końcem sekcji, rozpiętością strumienia podpowiedzi oraz scaloną listą zakresów bajtów wymaganych przez stronę 1- Nowa opcja
PDF_NET_OPT_NO_WARMINGoraz kody błędówPDFLIB_ERROR_NET_OPEN,PDFLIB_ERROR_NET_RANGE_UNSUPPORTEDiPDFLIB_ERROR_NET_HTTPuwidaczniają czytanie sieciowe w Delphi, DLL i ActiveX
Version 3.383.0
Nowości
SaveQDFToFileiConvertFileToQDFtworzą dokumenty PDF diagnostyczne edytowalne ręcznie, z czytelnym formatowaniem obiektów, komentarzami oryginalnej tożsamości obiektów, rozwiniętymi popularnymi strumieniami zawartości oraz pośrednimi, naprawialnymi długościami strumieniRepairQDFFileprzelicza edytowane długości strumieni i przebudowuje dane odsyłaczy, trailery istartxref, w tym naprawę w miejscu- Nowe interfejsy API QDF Delphi, DLL i ActiveX oraz opcja
PDF_QDF_OMIT_ORIGINAL_OBJECT_IDSudostępniają ten przepływ na każdej powierzchni publicznej
Version 3.382.0
Nowości
PDF_LINEARIZE_OBJECT_STREAMSwłącza ograniczone pakowanie strumieni obiektów i skompresowany główny strumień xref, zachowując bezpośrednio czytelne dane odsyłaczy pierwszej strony
Zmieniono
SaveToFileOptionszachowuje teraz pakowanie strumieni obiektów, gdyLinearizeiPackObjectStreamssą włączone razem
Naprawiono
LinearizeFileobsługuje teraz identyczne ścieżki wejścia i wyjścia bez obcinania bajtów źródła, zanim przebieg linearizacji zdąży je odczytać
Version 3.381.0
Nowości
ValidateLinearizationFileiGetLinearizationValidationReportniezależnie audytują słowniki Fast Web View, zakresy podpowiedzi i tablice bitów, zależności pierwszej strony i granice bajtowe, liczby stron oraz główny wpis odsyłaczy
Naprawiono
- Zlinearizowane wyjście zapisuje teraz deterministyczne, pierwsze-MSB tablice podpowiedzi offsetów stron i obiektów współdzielonych, z wektorami wyrównanymi do bajtów, dokładnymi długościami stron i offsetami względnymi podpowiedzi
- Generowane tablice podpowiedzi nie zawierają już losowych szerokości bitów, pól little-endian, niekompletnych rzędów grup współdzielonych ani offsetów zawartości zastępczych, które mogłyby skłonić zgodne czytniki do odrzucenia danych Fast Web View
Version 3.380.0
Nowości
- Duże strumienie Flate mogą być teraz kompresowane i dekompresowane ograniczonymi fragmentami, w tym bezpośrednia ekstrakcja strumieniowa przez
GetEmbeddedFileContentToStreamiGetEmbeddedFileContentToFile
Zmieniono
- Zapis dużych zaszyfrowanych strumieni RC4, AES-CBC i AES-GCM pisze teraz szyfrogram bezpośrednio do celu z dokładnymi prekalkulowanymi długościami zamiast materializować, a potem odszyfrowywać pełne kopie tymczasowe
- Importy dużych plików osadzonych kompresują przyrostowo do swego zapisanego strumienia, a powtórzone zaszyfrowane zapisy zachowują bajty źródłowe w pamięci i metadane strumienia
Version 3.379.0
Nowości
StartEditJournal, jawne granice transakcji, wycofanie, cofnięcie, ponowienie, reset historii, zapytania o status i odzyskiwanie po awarii są dostępne dla wywołujących Delphi, DLL i ActiveX- Trwałe dzienniki dołączają niezależnie zsumowane kontrolnie rekordy stanu PDF i kursora, spłukują kompletne rekordy do pamięci masowej i odzyskują ostatnią kompletną operację zatwierdzenia, gdy końcowy zapis jest niekompletny lub uszkodzony
Zmieniono
- Cofnięcie, ponowienie, wycofanie i odzyskiwanie zachowują wybrany uchwyt dokumentu, unieważniając uchwyty przejściowe, których obiekty dokumentu podstawowe zostały zastąpione
- Pamięć cofnięć jest ograniczona skonfigurowaną liczbą kroków, migawki są serializowane tylko na granicach transakcji, a hasła dokumentu nigdy nie są zapisywane do dzienników odzyskiwania
Version 3.378.0
Nowości
ConvertTextToPathskonwertuje tekst czcionek konturowych i programy glifów Type 3 na wielokrotnego użytku wektorowe XObjecty Form na wybranych stronach i w zagnieżdżonych Formach- Wywołujący Delphi, DLL i ActiveX mogą wybrać rekurencyjną konwersję Form i automatyczne sprzątanie źródłowych zasobów czcionek
Zmieniono
- Przekonwertowana zawartość zachowuje pozycjonowanie tekstu, odstępy, kierunek pisania, przekształcenia, kolory i ustawienia obrysu, usuwając oryginalne operatory pokazywania tekstu
- Tryby renderowania przycinania tekstu oraz niejednoznaczne zakresy współdzielonych zasobów są odrzucane, zanim jakikolwiek obiekt dokumentu zostanie zmodyfikowany
Version 3.377.0
Nowości
CopyPageRangesExprzyjmujePDF_COPY_PAGE_SMART_RESOURCES, aby ponownie wykorzystać równoważne czcionki, obrazy, przestrzenie barw, wzorce, cieniowania i stany graficzne już obecne w dokumencie docelowymPDF_COPY_PAGE_KEEP_ORDERnadaje nazwę istniejącej opcji uporządkowanego duplikowania stron i może być łączone z inteligentnym kopiowaniem zasobów
Zmieniono
- Inteligentne kopiowanie stron normalizuje numery obiektów, kolejność kluczy słowników, zapis liczb i długości strumieni przed hashowaniem, potwierdza każde dopasowanie strukturalnie i pomija grafy cykliczne lub wrażliwe na tożsamość
CollateDocumentsExstosuje teraz semantyczne ponowne użycie zasobów w swoich dokumentach źródłowych bez wcześniejszego przydzielania duplikatów grafów zasobów
Version 3.376.0
Nowości
TrimPageContentToCropBoxusuwa kompletne przebiegi tekstu najwyższego poziomu, malowane ścieżki, umieszczenia obrazów i wywołania XObjectów Form leżące całkowicie poza CropBox stronyTPDFContentProgram.TraceGraphicsStatePairsprzechwytuje w jednym odtworzeniu stany instrukcji przed i po, kontynuując tracker należący do wywołującego przez warstwy zawartości- Wywołujący Delphi, DLL i ActiveX mogą stosować podpisane marginesy przy przycinaniu spadu strony i redukcji zatrzymywanej zawartości
Zmieniono
- Przycinanie do CropBox zachowuje obiekty przecinające się lub nierozstrzygnięte, ścieżki przycinania, tryby przycinania tekstu i wewnętrzne części współdzielonych Formów, utrzymując względne posunięcia tekstu po usuniętych ciągach
Version 3.375.0
Nowości
TPDFStructureudostępniaDecodeMaxDepth,LastDecodeStatusiLastDecodePositiondla ograniczonego niskopoziomowego parsowania obiektów i precyzyjnej diagnostyki limitów
Zmieniono
- Tablice i słowniki PDF są teraz parsowane przez jawny, ograniczony stos stanów, w tym zagnieżdżone operandy w strumieniach zawartości stron
Bezpieczeństwo
- Niezaufane obiekty bezpośrednie głębsze niż domyślny limit 256 kontenerów są odrzucane, zanim mogą wyczerpać stos wątku
Version 3.374.0
Nowości
AddType3Fonttworzy programowalne czcionki Type 3 z macierzami i granicami czcionki zdefiniowanymi przez wywołującegoAddType3Glyphzapisuje bajtkodowane programy graficzne glifów z automatycznymi metrykami, kodowaniem, szerokościami i mapami ekstrakcji UnicodeAddType3FontResourceudostępnia programom glifów czcionki, obrazy, stany graficzne, cieniowania i inne zasoby pośrednie- Wywołujący Delphi, DLL i ActiveX mogą tworzyć czcionki Type 3 dla symboli, stempli i celów specjalnych bez instalowania lub osadzania zewnętrznego programu czcionki
Zmieniono
- Aktualizacje glifów Type 3 przebudowują zwięzłe tablice pochodne czcionki w miejscu, zachowując uchwyt czcionki używany przez istniejące zasoby stron
Version 3.373.0
Nowości
- Kursory drzewa struktury nawigują po rodzicach, dzieciach i rodzeństwie, zachowując tożsamość elementów przez naprawy i zmiany kolejności
ReparentStructTreeCursorprzenosi lub zmienia kolejność elementów struktury i odrzuca samorodzicielstwo oraz cykle potomkówNormalizeStructTreekanonizuje kolekcje dzieci, naprawia powiązania rodzicielskie, promuje elementy bezpośrednie i usuwa nieprawidłowe, zduplikowane lub cykliczne krawędzie
Zmieniono
- Naprawa drzewa struktury zachowuje własność zawartości oznaczonej i mapowania drzewa rodziców, czyniąc edycje hierarchii bezpiecznymi dla kolejnych zapisów
Version 3.372.0
Nowości
EnumeratePageElementszwraca stabilne krótkowieczne uchwyty dla edytowalnej zawartości tekstowej, obrazowej i ścieżekDeletePageElementusuwa wyliczony obiekt, zachowując późniejsze względne pozycjonowanie tekstuTransformPageElementzapisuje macierz afiniczną wokół wybranego obiektu bez zmiany niezwiązanej zawartości
Zmieniono
- Uchwyty edytowalnych elementów walidują oryginalny odcisk zawartości i odrzucają nieaktualne lub niejednoznaczne mutacje
Version 3.371.0
Nowości
ExportObjectJSONstreamuje kompletny trailer i graf obiektów pośrednich do deterministycznego, odwracalnego typowanego JSONImportObjectJSONwaliduje i scala grafy obiektów albo zastępuje kompletny zbiór obiektów pośrednichGetObjectJSONiSetObjectJSONudostępniają atomową inspekcję i aktualizacje pojedynczych obiektów w Delphi, DLL i ActiveX
Zmieniono
- JSON grafu obiektów zachowuje nazwy binarne, klucze słowników, ciągi, strumienie, generacje odniesień, typy skalarne i kolejność numerów obiektów bez niejednoznacznych koercji JSON
Version 3.370.0
Nowości
- Skompilowany loader modelu Arlington TSV zapewnia stabilne uchwyty wielokrotnego użytku wraz z liczbami definicji i reguł
- Walidacja składni sterowana modelem sprawdza klucze obiektów, wymagane wpisy, typy, dostępność w wersjach PDF, odniesienia bezpośrednie i pośrednie, dozwolone wartości oraz powiązane grafy obiektów
- Interfejsy API Delphi, DLL i ActiveX walidują pliki lub istniejące współdzielone potoki walidacji i zwracają ustrukturyzowane listy diagnostyczne
Zmieniono
- Walidacja składni ponownie wykorzystuje współdzielone pamięci podręczne parsowania i obiektów, wybiera niejednoznaczne łącza według dyskryminatorów obiektu i pomija powtarzane wizyty definicji obiektów
Version 3.369.0
Nowości
- Wielokrotnego użytku potoki walidacji otwierają i parsują PDF raz, a następnie uruchamiają zadania PDF/A i PDF/UA albo budują połączone raporty na współdzielonym czytniku i pamięci podręcznej obiektów
- Interfejsy API Delphi, DLL i ActiveX udostępniają tworzenie potoku, wykonywanie zadań, generowanie raportów, inspekcję liczby parsowań i jawne zwolnienie
Zmieniono
CreatePreflightReportiCreateValidationReportwspółdzielą jedno parsowanie i leniwą pamięć podręczną obiektów, gdy wybrano wiele kontroli zgodności
Version 3.368.0
Nowości
AddStructureNamespacerejestruje przestrzenie nazw struktury PDF 2.0 i zapisuje współdzielone słowniki/NamespaceprzezStructTreeRoot/NamespacesAddRoleMapNSmapuje własne typy struktury w obrębie jednej przestrzeni nazw lub między zarejestrowanymi przestrzeniami- Selektory przestrzeni nazw domyślne i per element, zapytania o przestrzenie nazw, eksporty DLL oraz metody ActiveX udostępniają kompletny przepływ
Zmieniono
- Tryby dostępności PDF/UA-2 i WTPDF automatycznie przydzielają standardową przestrzeń nazw struktury PDF 2.0 istniejącym i przyszłym elementom struktury bez przypisania
GetStructTreeItemTextrozwiązuje łańcuchy/RoleMapNSi zwraca URI przestrzeni nazw elementu przez InfoID 9
Version 3.367.0
Nowości
SetPDFUA2Modewłącza metadane PDF/UA-2, wersjonowanie PDF 2.0, język dokumentu, zabezpieczenia zawartości oznaczonej i preferencje wyświetlania tytułuSetWTPDFModedeklaruje poziom dostępności WTPDF 1.0, poziom ponownego użycia albo oba, zachowując niezwiązane PDF Declarations- Pobieracze Delphi, DLL i ActiveX udostępniają aktywną część PDF/UA oraz maskę deklaracji WTPDF
Zmieniono
- Diagnostyka PDF/UA rozpoznaje część 2, wymaga
pdfuaid:rev=2024i egzekwuje minimalną wersję PDF 2.0
Version 3.366.0
Nowości
SetCryptFilterConfigurationniezależnie wybiera szyfrowanie ciągów PDF, zwykłych strumieni i strumieni plików osadzonych przez/StrF,/StmFi/EFF- Pobieracze Delphi, DLL i ActiveX udostępniają każdy oczekujący cel szyfrowania, a ugruntowane ustawienie tylko-pliki-osadzone pozostaje zgodne
Zmieniono
- Szyfrowanie AES hasłem, kluczem publicznym i odciskiem używa jednej polityki filtrów kryptograficznych, odrzuca konfiguracje bez żadnego chronionego celu i zapobiega stosowaniu polityk selektywnych do obsługi RC4
Naprawiono
- Odciski szyfrowania przywracają teraz swój kompletny rekord szyfrowania i zapisują przez zwykły składacz obiektów, bez obcinania prefiksu odcisku ani podwójnego szyfrowania zawartości obiektów
Version 3.365.0
Nowości
- Niezaszyfrowane opakowania PDF 2.0 mogą przenosić kompletny zaszyfrowany PDF jako ukryty początkowy dokument kolekcji ze standardowymi metadanymi zaszyfrowanego ładunku
- Interfejsy API Delphi, DLL i ActiveX tworzą, identyfikują, sprawdzają i wyodrębniają zaszyfrowane ładunki z danych plikowych, ciągów binarnych, strumieni lub tablic bajtów
Zmieniono
- Tworzenie opakowania zapobiega szyfrowaniu zewnętrznemu i PDF MAC, waliduje nazwy obsługiwanych mechanizmów, unika ujawniania ścieżki źródłowej i zachowuje bajty ładunku dokładnie
Version 3.364.0
Nowości
TPDFlibEUTSLTrustSourceweryfikuje podpisy XML unijnego LOTL i krajowych TSL, udostępnia migawki zaufanych usług oraz dostarcza kotwice CA i TSA uwzględniające czasTPDFlibSignatureVerifierprzyjmuje zewnętrzne źródła zaufania i raportuje status certyfikatu kwalifikowanego, podpisu elektronicznego, pieczęci elektronicznej i QSCD wraz z pochodzeniem usługi
Zmieniono
- Wczytywanie list zaufanych kończy się niepowodzeniem w trybie zamkniętym przy nieprzypiętych podpisujących, podpisach odłączonych lub niejednoznacznych, słabych algorytmach, zmianach skrótu, niezgodności terytoriów, nieaktualnych listach, zniekształconych kryteriach oraz nieograniczonym wejściu sieciowym lub XML
- Pełne odświeżenia TSL są transakcyjne, a silniki łańcuchów certyfikatów łączą kotwice ręczne i źródłowe oraz ponownie wykorzystują je według rewizji listy zaufanych i czasu weryfikacji
Version 3.363.0
Nowości
TPDFlibPKCS11Clientwczytuje moduły PKCS #11 2.x i 3.x, wylicza tokeny, uwierzytelnia użytkowników, paruje certyfikaty z kluczami prywatnymi i podpisuje skróty PDF bez rejestracji CSP ani KSP- Typy tokenów, slotów, mechanizmów, tablic funkcji i wywołań zwrotnych obsługują bezpośrednie ładowanie modułów oraz listy funkcji zarządzane przez aplikację
Zmieniono
- Podpisywanie RSA buduje wymagany DER
DigestInfoprzed surowymCKM_RSA_PKCS, a podpisywanie ECDSA konwertuje wyjście P1363 tokenu do DER na żądanie - Współdzielone czasy życia modułów, trwałe sesje, chronione ścieżki uwierzytelniania, uwierzytelnianie per operacja, ograniczone ponowienia hot-plug i odzyskiwanie sesji przed operacją poprawiają niezawodność i przepustowość HSM
Version 3.362.0
Nowości
TPDFlibCSCClientodnajduje zdalne poświadczenia podpisujące, uzyskuje dane aktywacji podpisu związane z hashem lub pobrane z wyprzedzeniem oraz przesyła pojedyncze lub wsadowe podpisy skrótów przez API CSC- Klient wpina się bezpośrednio w
OnExternalDigestSign, więc zdalne podpisy RSA i DER ECDSA ponownie wykorzystują istniejącą konstrukcję CMS, wymiarowanie podpisu i ścieżkę weryfikacji kluczem publicznym
Zmieniono
- Wbudowany transport HTTP przyjmuje nagłówki żądania dostarczone przez wywołującego do uwierzytelniania OAuth bearer, zachowując limity rozmiaru odpowiedzi i limitów czasowych faz
- Odpowiedzi poświadczeń, autoryzacji i podpisu odrzucają teraz zduplikowane lub zniekształcone pola JSON, nieprawidłowe dane X.509 lub Base64, nieobsługiwane algorytmy, niespójne rozmiary wsadów, nieaktualne dane aktywacji oraz naruszenia wiązania hash SCAL
Version 3.361.0
Nowości
VerifyAdESHistoricaliVerifyAdESHistoricalByNameautomatycznie wywodzą zaufane historyczne czasy kontroli ze znaczników czasu podpisu i obejmujących znaczników czasu dokumentuTPDFlibAdESHistoricalValidationReportudostępnia żądane i efektywne wyniki łańcuchów, źródło i czas dowodu, pokrycie archiwalne, liczby znaczników czasu oraz status właściwy dla niepowodzeń
Zmieniono
- Historyczna walidacja unieważnień kończy się niepowodzeniem w trybie zamkniętym, chyba że zaufany znacznik czasu całego dokumentu pieczętuje bieżące dane dowodowe DSS i VRI
- Czasy walidacji certyfikatów i OCSP konwertują teraz na czas plikowy Windows z dokładną arytmetyką całkowitą milisekund, unikając dryfu na granicach przy przejściach ważności certyfikatu
Version 3.360.0
Nowości
SetSignatureFieldSeedValue,AddSignatureFieldSeedCertificateiClearSignatureFieldSeedValuetworzą i zarządzają standardowymi ograniczeniami/SVdla niepodpisanych pól podpisuGetSignProcessSeedValueErrorraportuje dokładne wymagane ograniczenie — filtr, SubFilter, skrót, powód, informacje o unieważnieniach, certyfikat, wersję albo nieobsługiwane — które uniemożliwiło podpisanie
Zmieniono
- Podpisywanie egzekwuje teraz wymagane wartości seed pól podpisu po otwarciu wybranej tożsamości i przed zmianą pola lub miejsca docelowego wyjścia
- Nieobsługiwane wymagane ograniczenia seed kończą się niepowodzeniem w trybie zamkniętym, a wartości dozwolone rozdzielane średnikami oraz dokładne certyfikaty DER podpisującego są egzekwowane spójnie w interfejsach API Delphi, DLL i ActiveX
Version 3.359.0
Nowości
AddSignProcessRevocationCRLiAddSignProcessRevocationOCSPosadzają materiał walidacji w podpisanym atrybucieadbe-revocationInfoArchivaltradycyjnych podpisówadbe.pkcs7.detachedClearSignProcessRevocationInfousuwa cały archiwalny materiał unieważnień z procesu podpisywania przed wytworzeniem podpisu
Zmieniono
- Gołe wartości
BasicOCSPResponsesą normalizowane do strukturOCSPResponsez wynikiem sukcesu, a bajtowo identyczne CRL i znormalizowane odpowiedzi OCSP są deduplikowane - Archiwalne atrybuty unieważnień Adobe są obsługiwane zarówno przez Windows CryptoAPI, jak i nowoczesne ścieżki podpisywania RSA, ECDSA, Ed25519, CNG i skrótu zewnętrznego
Version 3.358.0
Nowości
SetSignProcessContentsEstimatewymiaruje placeholdery podpisu na podstawie bazowego CMS, zbuforowanego łańcucha certyfikatów, planowanego materiału CRL i OCSP, oczekiwanego tokena RFC 3161 oraz konfigurowalnego marginesu bezpieczeństwaGetSignProcessEstimatedContentsBytesraportuje wyrównaną pojemność surowych bajtów wybraną dla najnowszej próby podpisu
Zmieniono
- Nowe procesy podpisywania automatycznie odnajdują dodatkową przestrzeń łańcucha certyfikatów w lokalnych pamięciach podręcznych i stosują margines 15 procent przed wyrównaniem pojemności
/Contentsdo 256 bajtów - Podpisywanie CNG, HSM i skrótem zewnętrznym wyprowadza teraz rozmiary podpisów RSA, ECDSA i Ed25519 z certyfikatu publicznego zamiast rezerwować stały ładunek dostawcy 16 KiB
- Automatyczna estymacja nie wykonuje pobierania sieciowego ani nie wywołuje klucza prywatnego czy zewnętrznego wywołania zwrotnego podpisu
Version 3.357.0
Nowości
SetSignProcessAppearanceTemplatebuduje wielokrotnego użytku układy widocznych podpisów z placeholderów podpisującego, powodu, lokalizacji, kontaktu, daty, pola, strony i zdefiniowanych przez aplikacjęSetSignProcessAppearanceVariabledodaje nieuwzględniające wielkości liter własne wartości do pojedynczego procesu podpisywania i może je usunąć bez odtwarzania procesu
Zmieniono
- Szablony widocznych podpisów obsługują konfigurowalne formaty czasu podpisu i escapowane dosłowne nawiasy klamrowe, zachowując istniejące reguły pierwszeństwa obrazu i znacznika czasu dokumentu
- Rozwijanie szablonów używa ograniczonych rozmiarów wejścia i amortyzowanego liniowego bufora wyjścia, więc duże układy wielokrotnego użytku nie ponoszą powtarzanych kopii całych ciągów
Version 3.356.0
Nowości
TPDFlibSignatureVerifiermoże dodawać kotwice zaufania X.509 w formacie DER lub plikowym, raportować ich liczbę bez duplikatów i czyścić je bez zmiany magazynów certyfikatów Windows
Zmieniono
- Niepusty zestaw własnych kotwic zaufania steruje teraz walidacją certyfikatu podpisującego i znacznika czasu RFC 3161 przez wyłączny silnik korzeni w pamięci
- Wyczyszczenie własnego zestawu przywraca domyślny systemowy silnik zaufania dla kolejnych kontroli
Bezpieczeństwo
- Walidacja własnego zaufania wyklucza magazyny Windows
RootiTrustedPeople, a osadzone certyfikaty PDF i DSS pozostają niezaufanym materiałem budowania łańcuchów
Version 3.355.0
Nowości
SetSignProcessExternalDigestSigneri jego wariant plikowy budują odłączone podpisy CMS wokół wyników RSA lub ECDSA dostarczonych przez zewnętrznego podpisującegoOnExternalDigestSign,DLSetExternalDigestSignCallbackiSetExternalDigestSignCallbackzapewniają synchroniczne powierzchnie wywołań zwrotnych Delphi, DLL i ActiveX do integracji HSM i podpisywania zdalnego- Zewnętrzne wywołania zwrotne ECDSA mogą zwracać podpisy DER albo wartości P1363
r || so stałej szerokości
Zmieniono
- Zewnętrzni podpisujący otrzymują tylko końcowy skrót uwierzytelnionych atrybutów CMS i są wywoływani raz, po ustaleniu zakresów bajtów PDF i atrybutów
- Wymiarowanie placeholdera używa skonfigurowanej rezerwy podpisu bez wywoływania zewnętrznego podpisującego
- Puste lub nadmiernie duże podpisy inne niż passthrough kończą teraz proces podpisywania zamiast zapisywać pustą lub obciętą wartość
/Contents
Bezpieczeństwo
- Każdy zewnętrznie zwrócony podpis jest weryfikowany względem skonfigurowanego certyfikatu X.509, zanim może zostać zapisany do PDF
Version 3.354.0
Nowości
SetSignProcessCNGKeyiSetSignProcessCNGKeyFromFilepodpisują nazwanymi kluczami NCrypt z programowych dostawców, TPM, tokenów sprzętowych lub chmurowych magazynów kluczy bez eksportowania materiału klucza prywatnegoSetSignProcessCNGKeyByHandleprzyjmuje należący do wywołującegoNCRYPT_KEY_HANDLEdla zarządzanych przez aplikację przepływów odnajdywania kluczy i politykSetSignProcessPrivateKeyUIsteruje tym, czy dostawcy powiązani z certyfikatem mogą pokazywać interfejsy PIN, zgody, tokena lub zatwierdzenia chmurowego
Zmieniono
- Nazwane i pożyczone klucze CNG używają jednej bezpośredniej ścieżki podpisywania NCrypt dla odłączonych podpisów RSA i ECDSA w rodzinach skrótów SHA-1, SHA-2 i SHA-3
- Wymiarowanie placeholdera podpisu CNG nie wykonuje już wstępnej operacji klucza prywatnego, unikając zdwojonych monitów o token, zdalnych zatwierdzeń, wpisów audytowych ani opłat dostawcy
- Ciche podpisywanie pozostaje domyślne, a tryb interaktywny usuwa flagi cichego pozyskiwania i podpisywania, aby zewnętrzni dostawcy mogli ukończyć swój przepływ uwierzytelniania
Bezpieczeństwo
- Jawne tożsamości CNG są sprawdzane pod kątem zgodnych z certyfikatem grup algorytmów, a ukończony podpis CMS jest weryfikowany względem dostarczonego certyfikatu przed jego przyjęciem
Version 3.353.0
Nowości
- Odłączone podpisy PDF mogą być generowane i weryfikowane certyfikatami ECDSA P-256, P-384 i P-521 z rodzinami skrótów SHA-1, SHA-2 lub SHA-3
- Podpisywanie Ed25519 przyjmuje certyfikat DER X.509 z surowym seedem lub niezaszyfrowanym kluczem prywatnym PKCS #8 przez interfejsy Delphi, DLL i ActiveX
SetSignProcessDigestAlgorithmprzyjmuje SHA3-256, SHA3-384 i SHA3-512 jako kody algorytmów 5, 6 i 7
Zmieniono
- Nowoczesne odłączone podpisy używają kanonicznego kreatora CMS ze zgrupowanymi ze standardami identyfikatorami algorytmów skrótu i podpisu zamiast polegać na identyfikatorach wybranych przez dostawcę
- Weryfikacja nowoczesnych podpisów waliduje skrót odłączonej zawartości, kanoniczne podpisane atrybuty, osadzoną tożsamość podpisującego i podpis kluczem publicznym bez wymagania obsługi algorytmów przez starsze CryptoAPI
Bezpieczeństwo
- Weryfikacja Ed25519 odrzuca skalary niekanoniczne, niekanoniczne kodowania punktów, klucze małego rzędu, niezgodne tożsamości certyfikatów i zmodyfikowane podpisane atrybuty
Version 3.352.0
Nowości
EncryptPublicKeytworzy dokumentyAdobe.PubSecAES-128 lub AES-256 dla wielu odbiorców z certyfikatami X.509 bez wspólnego hasła- Odbiorcy mogą być wczytywani z DER, PEM, PKCS #12 PFX, magazynów certyfikatów bieżącego użytkownika lub komputera lokalnego i mogą otrzymać niezależne maski uprawnień PDF
- Poświadczenia PFX i z magazynów certyfikatów otwierają dokumenty zaszyfrowane kluczem publicznym przez zwykłe interfejsy API wczytywania plików, strumieni i ciągów
- Liczby odbiorców, liczby grup uprawnień, status uwierzytelnienia i kontrola cyklu życia poświadczeń są dostępne przez interfejsy Delphi, DLL i ActiveX
Naprawiono
- Generowanie biblioteki typów ActiveX zachowuje teraz istniejące metody PDF/UA, oznakowanego PDF, artefaktów, języka dokumentu i plików powiązanych, dołączając interfejsy API klucza publicznego bez przesuwania ugruntowanych binarnych slotów interfejsu
DecryptFiletrafia do bezpośredniej ścieżki przepisania AES-256 bez wstępnej inspekcji pełnego czytnika dla zwykłych zaszyfrowanych dokumentów, walidując jednak sygnały PDF MAC przed przepisaniem chronionej zawartości
Bezpieczeństwo
- EnvelopedData CMS jest walidowane ograniczonym parsowaniem DER, grupy uprawnień odbiorców są uwierzytelniane swoim zaszyfrowanym ładunkiem seed, a niejednoznaczne lub zniekształcone koperty są odrzucane z dedykowanymi kodami błędów
- Odbiorcy o tych samych uprawnieniach są grupowani w jedną kopertę, co zmniejsza rozmiar wyjścia i pracę wyprowadzania klucza, zachowując transport klucza właściwy dla certyfikatu
Version 3.351.0
Nowości
SetPDFMACEnabledtworzy samodzielne tokeny integralności PDF MAC dla dokumentów zaszyfrowanych AES-256 rewizja 6 i AES-GCM, w tym wymagana sól wyprowadzania klucza, sygnał uprawnień, zakresy bajtów i dane uwierzytelnienia CMSGetPDFMACStatusiValidatePDFMACudostępniają wyniki walidacji przez interfejsy Delphi, DLL i ActiveX
Bezpieczeństwo
- Chronione dokumenty są weryfikowane automatycznie po uwierzytelnieniu hasłem i przed udostępnieniem stron; brakujące tokeny, zniekształcony DER, nieobsługiwane algorytmy, niekompletne pokrycie, niepowodzenia odpakowania klucza i zmienione wartości uwierzytelnienia są odrzucane z dedykowanymi kodami błędów
EncryptFile,EncryptFileExiDecryptFilezachowują teraz gwarancje PDF MAC w przepływach szyfrowania na poziomie pliku i walidowanej deszyfrowania
Version 3.350.0
Nowości
Encrypt,EncryptFileiEncryptFileExprzyjmują siłę 5, aby tworzyć dokumenty PDF 2.0 z uwierzytelnionym szyfrowaniem 256-bitowym AES-GCM, słownikami bezpieczeństwa rewizji 7 i deklaracją rozszerzenia ISO TS 32003- Czytnik i ścieżki deszyfrowania plików otwierają dokumenty AES-GCM i udostępniają nowy tryb przez
EncryptionAlgorithm,GetEncryptionLeveliSecurityInfo
Bezpieczeństwo
- Niepowodzenia uwierzytelnienia AES-GCM odrzucają teraz zmienione ciągi lub strumienie i powodują, że
DecryptFileusuwa wszelkie częściowe wyjście
Version 3.349.0
Zmieniono
LinearizeFileporządkuje teraz duże grafy obiektów stabilnym przebiegiem scalaniaO(n log n)i przemierza zależności pośrednie jawnym stosem pracy, unikając kwadratowej pracy porządkowania i jednej ramki wywołania na osiągalny obiekt
Naprawiono
- Sekcja pierwszej strony obejmuje teraz słowniki adnotacji wraz z ich osiągalnymi wyglądami, akcjami i zasobami, dzięki czemu klienci Fast Web View mogą pokazać adnotacje pierwszej strony bez pobierania obiektów spoza granicy pierwszej strony
Version 3.348.2
Naprawiono
- Biblioteka kompiluje się teraz bez ostrzeżeń i podpowiedzi w kompilacji Win64. Inicjator hasha ciągów FNV-1a przekraczał zakres
Integer, więc jego akumulator przeniesiono doCardinalz bajt po bajcie identycznym maskowanym wynikiem, a dziesięć przypisań, które kompilator udowodnił jako nigdy nieodczytywane — plus jedną nieużywaną zmienną — usunięto. Żadne zachowanie w czasie wykonania nie uległo zmianie
Version 3.348.1
Naprawiono
- Kontrolka podglądu kompiluje się ponownie w Delphi XE5 i XE6. Jej uchwyt DPI per monitor używał
WM_DPICHANGED, stałej komunikatu, którejWinapi.Messagesnie przenosił przed XE7, więc macierz kompilacji trial — wciąż celująca w starsze toolchainy — zatrzymała się naPDFlibViewer.pasz błędem niezadeklarowanego identyfikatora. Stała jest teraz deklarowana lokalnie tylko na kompilatorach, które jeszcze jej nie dostarczają, co pozostawia niezmienioną obsługę DPI w czasie wykonania
Version 3.348.0
Nowości
ConvertToPDFAprzekształca zwykły dokument w archiwalny jednym wywołaniem: usuwa to, czego wybrana część zabrania, dodaje to, czego wymaga, deklaruje część, do której dokument się odwołuje, a następnie sprawdza wynik- Deklaracja jest raportowana jako spełniona tylko wtedy, gdy kontrola przejdzie. Plik, który twierdzi, że jest archiwalny, a nie jest, przechodzi przez dokładnie te systemy, które inaczej by go wyłapały, więc werdykt pochodzi z kontroli, a nie z próby
GetPDFAConversionReportwylicza, co zostało zrobione, a tam gdzie dokument wciąż nie dorównuje — co stoi na drodze
Version 3.347.1
Naprawiono
SanitizeDocumentnaprawdę usuwa teraz JavaScript, o którym raportuje usunięcie. Poprzednio prosił listę pakietów o wpis przed pierwszym, nie dostawał nic i zatrzymywał się przed usunięciem choćby jednego skryptu — więc dokument po sanityzacji wciąż uruchamiał swoje skrypty przy otwarciu- Usunięcie ostatniego skryptu usuwa teraz także puste drzewo nazw, które po sobie zostawia, a które w przeciwnym razie wciąż mówiło czytnikowi, że dokument nosi skrypty
Version 3.347.0
Nowości
RepairDocumentMetadatadoprowadza do zgodności dwa miejsca, w których PDF mówi, kto go napisał. Walidator czyta zarówno informacje dokumentu, jak i pakiet XMP, i odrzuca plik, w którym się one różnią, a większość plików zawieszających się na tym punkcie po prostu nigdy nie miała zapisanej połówki XMP- Tam, gdzie wartość niesie tylko jedna połowa, druga jest z niej wypełniana, więc nic już zapisanego nie jest porzucane
- Dokument ustawiony w tryb PDF/A odzyskuje swoją identyfikację normy, jeśli ją stracił, co zdarza się zawsze, gdy wywołujący dostarczy własny pakiet. Bez niej walidator czyta plik jako zwykły PDF i raportuje każdą regułę deklarowanej części jako niespełnioną
- Zwraca liczbę naprawionych wpisów
Version 3.346.0
Nowości
RecolorDocumentkonwertuje teraz gradienty, które dokument maluje. Przestrzeń barw gradientu i stojące za nią przystanki przenoszą się razem, więc przekonwertowany gradient czyta się jako jeden kolor, a nie jako kanał pomylony z poziomem szarości- Gradienty zapisane wewnątrz wzorca, który je maluje, albo w zasobach cieniowania strony są znajdowane tak samo jak te, które dostały własny obiekt
Zmieniono
- Gradient zbudowany z funkcji próbkowanej lub PostScript pozostaje nietknięty, podobnie jak typy mesh, które niosą swoje kolory w strumieniu zamiast w funkcji. Przepisywanie ich to inna operacja niż konwersja koloru
Version 3.345.0
Nowości
RecolorDocumentkonwertuje teraz obraz indeksowany przez konwersję jego tabeli kolorów, pozostawiając każdej próbce indeks, który już trzymała. Taki obraz konwertuje niezależnie od tego, jak jego próbki są pakowane lub kompresowane, w tym obrazy paletowe, z którymi zwykle zapisuje się zrzut ekranu lub wykres
Version 3.344.0
Nowości
RecolorDocumentkonwertuje teraz obrazy, które strona rysuje, na równi z ustawianymi kolorami, więc dokument zamieniony na szary nie pokazuje już kolorowych obrazków na szarych stronach- Maski miękkie i maski wzornikowe pozostają nietknięte. Obie są czytane jako pokrycie, a nie jako kolor, a przekonwertowanie którejś sprawiłoby, że strona pokazywałaby maskę jak obrazek
Zmieniono
- Obraz jest konwertowany, gdy ma osiem bitów na komponent, urządzeniową przestrzeń barw oraz brak kompresji lub zwykły Flate. Obraz JPEG lub faksowy musiałby być ponownie zakodowany, co jest inną operacją niż konwersja jego kolorów, więc te zachowują własne bajty
Version 3.343.0
Nowości
- Przenieś cały dokument albo pojedynczą stronę do jednej przestrzeni barw.
RecolorDocumentiRecolorPageprzyjmują 1 dla szarości, 2 dla RGB i 3 dla CMYK oraz zwracają liczbę przekonwertowanych kolorów - Przydatne przed wysłaniem pracy do drukarni, która oczekuje jednej przestrzeni, albo do zamiany kolorowego dokumentu na szary bez ponownego rysowania. Geometria, tekst i obrazy pozostają dokładnie takie, jakie były; zmieniają się tylko operatory koloru
- Kolor już ustawiony w przestrzeni docelowej zostaje nietknięty, więc strona, której kolory nie wymagają zmian, zachowuje oryginalne bajty
- Kolory ustawione przez przestrzeń ICCBased, Separation, Indexed lub Pattern pozostają jak są. Konwersja ich bez odczytania profilu zmieniłaby wygląd strony zamiast go zachować
Version 3.342.0
Nowości
- Archiwizacja PDF/A-4, część normy zbudowana na PDF 2.0.
SetPDFAModeprzyjmuje trzy nowe tryby: 9 dla PDF/A-4, 10 dla PDF/A-4e, który dodatkowo dopuszcza 3D i rich media, oraz 11 dla PDF/A-4f, który dopuszcza osadzony plik dowolnego formatu - Dokument części 4 jest identyfikowany tak, jak wymaga tego norma: numerem części i rokiem publikacji tej części, bez litery zgodności dla zwykłego PDF/A-4 oraz z literą E lub F dla dwóch rozszerzeń
- Każdy osadzony plik w dokumencie części 4 podaje, jak odnosi się do dokumentu, czego wymagają części 3 i 4
Zmieniono
- Kontrola PDF/A rozpoznaje część 4, ocenia jej pliki względem PDF 2.0 zamiast 1.7 i raportuje plik części 4, który nie podaje swojego roku rewizji
Version 3.341.2
Naprawiono
- Dokumenty PDF/A-3 i PDF/UA podają teraz, jak każdy osadzony plik odnosi się do dokumentu. Relacja była zapisywana tylko dla załączników po pierwszym i nigdy dla ostatniego, więc dokument z jednym załącznikiem — przypadek zwykły — nie nosił jej wcale i zawodził na tym punkcie walidacją
- Raport PDF/UA nie pomija już ostatniego osadzonego pliku przy sprawdzaniu obecności relacji
Version 3.341.1
Naprawiono
- Kontrola PDF/A czyta teraz znak normy, który niesie plik. Wcześniej nie potrafiła, więc każdy plik był oceniany według części 1 niezależnie od deklaracji: prawidłowy dokument PDF/A-2 lub PDF/A-3 był raportowany jako pozbawiony znaku i o zbyt wysokiej wersji, co jest odwrotnością prawdy
- Znak jest odczytywany niezależnie od tego, czy producent zapisał go jako element, czy jako atrybut. Obie formy to zwykły XMP, więc akceptowanie tylko jednej sprawiało, że pliki od innych producentów wyglądały na nieoznaczone
Version 3.341.0
Naprawiono
- Tekst pionowy używa teraz pionowej formy każdego znaku. Nawiasy, znak długiej samogłoski i małe kana są rysowane inaczej, gdy tekst biegnie w dół strony, a czcionka sama nazywa te formy; dotąd rysowano formy poziome, przez co nawiasy leżały w poprzek kolumny zamiast stać wzdłuż niej
- Formy są brane z własnej pionowej funkcji czcionki, więc każdy krój dostarcza to, co narysował jego projektant, a nie podstawienie odgadnięte ze znaku
GetVerticalTextHeightmierzy formy, które zostaną narysowane, więc kolumna, której znaki zmieniają kształt, jest nadal mierzona poprawnie- Krój nie nazywający żadnych form pionowych jest rysowany dokładnie tak jak dotąd
Version 3.340.0
Nowości
- Pismo pionowe, dla japońskiego i chińskiego tekstu ustawionego w dół strony.
SetVerticalWritingModeje włącza i zwykłe wywołaniaDrawTextbiegną wtedy w dół;GetVerticalWritingModeje raportuje. Ustawianie tekstu pionowo oznaczało wcześniej ręczne pozycjonowanie każdego znaku - Tekst rysowany tą drogą przechodzi przez czcionkę Type0 w pionowym trybie pisania, niosąc własne pionowe metryki kroju, więc czytnik posuwa każdy znak o odległość zamierzoną przez projektanta, a nie o jednostajny krok, i skopiowanie tekstu zwraca oryginalne znaki
- Krój, który nie niesie własnych pionowych metryk, posuwa się o jeden em na znak, czyli dokładnie to, co czytnik zrobiłby z wartością domyślną
GetVerticalTextHeightpodaje, jak daleko ciąg pobiegnie w dół strony, zanim zostanie narysowany, aDrawVerticalTextrysuje jeden przebieg pionowo bez zmiany trybu- Formy poziome i pionowe jednego kroju są trzymane osobno, więc strona może nieść obie, nie zakłócając się nawzajem
Version 3.339.0
Nowości
- Automatyczne tagowanie obejmuje teraz tabele. Przy nowym bicie tabeli
DrawTableRowsprzenosi tabelę, jej rzędy i komórki do drzewa struktury, więc czytnik może powiedzieć, w której kolumnie siedzi wartość, zamiast odczytywać całą tabelę jako ciąg niezwiązanego tekstu SetTableHeaderRowCountpodaje, ile pierwszych rzędów jest nagłówkami, aGetTableHeaderRowCountto raportuje. Te rzędy są zapisywane jako komórki nagłówka niosące zasięg kolumny, co pozwala czytnikowi nazwać nagłówek wartości, na której właśnie jest- Rzędy nagłówka nazwane w ten sposób zostają na swoim miejscu. Powtarzanie ich na górze każdej strony pozostaje decyzją układu podejmowaną przez
DrawTaggedTableRows
Zmieniono
AUTOTAG_DEFAULTobejmuje teraz tabele na równi z tekstem, elementami strony i figurami. Przekazanie trybu jako liczby zachowuje to, co zawsze oznaczał
Version 3.338.0
Nowości
- Automatyczne tagowanie obejmuje teraz obrazy. Przy nowym bicie figury narysowany obraz staje się figurą w drzewie struktury, więc czytnik do niej trafia zamiast po cichu ją omijać
RegisterFigurenadaje opis kolejnemu obrazowi. Czytnik czyta ten opis w miejscu obrazka i to jest wszystko, co niewidomy czytelnik z niego dostajeRegisterDecorationmówi, że kolejny obraz to linia, obramowanie lub tło nieniosące znaczenia, i jest rysowany wewnątrz artefaktu układu, więc czytnik go pomija zamiast zapowiadać obraz, który nic nie mówi- Oba ustawienia zużywają się na jeden obraz, więc późniejszy nigdy nie dziedziczy opisu przeznaczonego dla wcześniejszego
Zmieniono
AUTOTAG_DEFAULTobejmuje teraz figury na równi z tekstem i elementami strony, więc poproszenie o domyślny tryb znaczy poproszenie o wszystkie trzy. Przekazanie trybu jako liczby zachowuje to, co zawsze oznaczał- Nagłówek zarejestrowany przez
RegisterHeadingczeka teraz na tekst, który nazywa. Obraz narysowany pomiędzy staje się figurą i zostawia nagłówek tekstowi, który nadchodzi, zamiast sam brać jego poziom
Version 3.337.1
Naprawiono
- Dokument zbudowany samym
BeginTagjest teraz oznaczany jako oznakowany. Dotąd taki plik niósł kompletne drzewo struktury, na które żaden czytnik nie patrzył, bo czytnik uznaje dokument za nieoznakowany, chyba że katalog mówi inaczej (ISO 32000-1 §14.7.1); technologia wspomagająca zapowiadała stronę tak, jakby nie miała żadnej struktury - Znacznik jest dodawany tylko wtedy, gdy drzewo struktury faktycznie jest zapisywane, więc dokument bez tagów jest nadal raportowany jako nieoznakowany, a ustawienie
SetMarkInfodokonane przez wywołującego zostaje nietknięte
Version 3.337.0
Nowości
- Automatyczne tagowanie struktury.
SetAutoTagModewłącza tryb, w którym zwykłe rysowanie niesie własną strukturę: tekst staje się akapitem, tekst narysowany bezpośrednio poRegisterHeadingstaje się nagłówkiem tego poziomu, a żywe paginy nagłówka i stopki stają się artefaktami, które czytnik pomija. Wyprodukowanie dostępnego dokumentu oznaczało wcześniej ręczne owijanie każdego wywołania rysowania wBeginTagiEndTag - Włączenie trybu oznacza także dokument jako oznakowany, czego czytnik wymaga, zanim w ogóle potraktuje strukturę jako obecną
- Automatyczne tagowanie ustępuje wewnątrz tagu otwartego ręcznie, więc część dokumentu może być opisana przez wywołującego, a reszta zostawiona bibliotece, bez wzajemnego zagnieżdżania
- Nic nie jest tagowane wewnątrz artefaktu, a pusty tekst nie otwiera żadnego elementu, więc żadne z nich nie może wytworzyć elementu struktury, który czytnik zapowiedziałby jako pusty
Version 3.336.0
Nowości
- Przepływ tekstu, do prowadzenia jednego fragmentu przez kilka pól, kolumn lub stron.
NewTextFlowprzyjmuje tekst, aDrawTextFlowwypełnia pole tym, co się zmieści, zostawiając przepływ na pierwszym słowie, którego nie zdołał wziąć, więc kolejne pole kontynuuje dokładnie w tym miejscu MeasureTextFlowpodaje, ile wierszy potrzebuje pozostały tekst przy danej szerokości, niczego nie rysując, więc układ można wymierzyć, zanim się go popełni- Pole bez miejsca na wiersz nie bierze nic i zostawia przepływ nietknięty, więc zaproponowanie go nigdy nie traci tekstu
SetTextFlowMinLinestrzyma razem ustaloną liczbę wierszy: pole, które mogło wziąć mniej, nie bierze żadnych i odsuwa je dalej, zamiast zostawiać pojedynczy wiersz u stóp kolumnyGetTextFlowRemaining,TextFlowFinishediRewindTextFlowraportują i resetują postęp; rysowanie pola porzucało wcześniej wszystko, co się przelało, bez możliwości dowiedzenia się, co przepadło
Version 3.335.0
Nowości
- Automatyczny spis treści. Nagłówki są rejestrowane przez
RegisterHeadingw trakcie pisania treści, aDrawTOCukłada je później: każdy wpis wcięty według poziomu, ciąg kropek sięgający do wyrównanej do prawej numeru strony i cały rząd linkujący do nagłówka - Nagłówek pamięta, gdzie wskazuje, a nie jaki numer strony miał, więc wstawienie strony spisu przed ukończoną treścią — co przenumerowuje każdą stronę, do której się odwołuje — pozostawia każdy wpis i każdy link poprawnym
MeasureTOCpodaje, ile stron potrzebuje lista, zanim cokolwiek zostanie narysowane, aDrawTOCzwraca, ile wpisów umieścił, więc listę dłuższą niż jedna stronę rysuje się, wywołując ponownie z liczbą już umieszczonychPopulateOutlineFromHeadingszamienia te same nagłówki w zakładki dokumentu, zagnieżdżone według poziomu- Tytuł zbyt szeroki na miejsce, jakie zostawia jego numer strony, jest skracany po znaku i dostaje wielokropek, zamiast móc podbiec pod numer
Version 3.334.1
Naprawiono
- Wybranie strony po wstawieniu stron przed nią trafiało do strony, która nosiła ten numer przed wstawieniem, więc rysowanie stron przednich do istniejącego dokumentu mogło pisać na niewłaściwej stronie treści. Wybór strony podąża teraz za nową numeracją
Version 3.334.0
Nowości
GetSignatureModificationVerdictodpowiada na pytanie, które czytnik faktycznie zadaje o podpisany dokument: czy aktualizacje dołączone po tym podpisie były takie, na jakie pozwala jego poziom certyfikacji? Podpis certyfikujący niesie poziom uprawnień, a werdykt sprawdza każdą późniejszą rewizję względem niego, więc dodanie materiału walidacyjnego czyta się jako dozwolone, a przepisanie strony już nieGetSignatureEffectiveMDPLevelraportuje obowiązujący poziom, aGetSignatureModificationDetailnazywa rewizję i rodzaj zmiany stojące za odpowiedzią- Werdykt rozróżnia "nic nie zostało dołączone", "tylko dozwolone zmiany", "coś niedozwolonego", "nie udało się ustalić" oraz "podpis nie kończy się na granicy rewizji". To ostatnie znaczy, że bajty leżą wewnątrz zakresu, który podpis rości sobie do pokrycia
- Wątpliwość nigdy nie jest raportowana jako zgoda: certyfikacja, której struktury nie można zweryfikować, blokada pola, których dotkniętych pól nie da się prześledzić, rewizja niosąca coś nieczytelnego albo bajty za podpisanym zakresem, które nie tworzą rozpoznawalnej rewizji, wszystkie raportują się jako nierozstrzygnięte, a nie dozwolone
Zmieniono
- Tablica pośrednia, której nic nie tłumaczy, jest raportowana jako nierozstrzygnięta, a nie jako księgowanie. Lista adnotacji lub zawartości strony jest tablicą, a jej przepisanie zmienia to, co dokument pokazuje, zostawiając nietkniętym każdy słownik
Version 3.333.0
Nowości
- Inspekcja rewizji przyrostowych. Podpis obejmuje bajty rewizji, w której został zapisany, a wszystko dołączone później to oddzielna aktualizacja, której treść decyduje, czy podpis wciąż obowiązuje dla dokumentu w jego obecnym stanie.
GetDocumentRevisionCount,GetDocumentRevisionStartiGetDocumentRevisionEndrozkładają te rewizje, aGetSignatureRevisionIndexmówi, na której kończy się podpis GetDocumentRevisionKindzgłasza, co zrobiła aktualizacja, jako najbardziej dalekosiężne z obiektów, których dotknęła: księgowanie, materiał walidacyjny, znacznik czasu dokumentu, podpis, pole formularza, adnotacja lub treść dokumentu. Dodawanie materiału walidacyjnego dla walidacji długoterminowej nie przypomina więc już edycji dokumentuGetDocumentRevisionChangeswylicza każdy obiekt, który aktualizacja dodała, zmieniła lub usunęła, wraz z tym, czym każdy jest, a dla zmienionego słownika, które klucze rzeczycznie się różniąGetDocumentRevisionsCompletezgłasza, czy cała historia była odzyskiwalna. Łańcuch, który jest przerwany, cykliczny lub dłuższy, niż czytnik podąży, pozostawia najstarsze aktualizacje niewidoczne, a liczby są wtedy dolną granicą, a nie odpowiedzią- Obiekt, którego wcześniejszej wersji nie da się odczytać lub którego ciało strumienia nigdy nie było porównywane, jest zgłaszany jako nieokreślony, a nie jako niegroźny: aktualizacja przepisująca stronę przy pozostawieniu jej słownika nietkniętym nie jest mylona z przepakowaniem
Version 3.332.0
Nowości
ApplyPAdESLongTermValidationw jednym wywołaniu podnosi już podpisany PDF do PAdES-B-LT. Buduje ścieżkę certyfikatów sygnatariusza z samego podpisu, zbiera materiał OCSP i CRL dla każdego ogniwa poprzez adresy wskazywane przez certyfikaty i zapisuje certyfikaty oraz dane odwołań w document security store z wpisem VRI dla podpisu, w pojedynczej aktualizacji przyrostowej.ApplyPAdESLongTermValidationToStreamzapisuje wynik do strumienia zamiast do pliku- Zachowanie jest konfigurowalne przez maskę opcji
PADES_LTV_*: czy zapisywać wpis VRI, czy odpytywać respondery OCSP, czy sięgać po CRL, czy podążać za adresami wystawców, by uzupełnić ścieżkę, oraz czy pominąć odwołania dla samowystawionego roota - Pusta nazwa pola przetwarza każdy podpis w jedną rewizję; nazwane pole przetwarza tylko ten jeden
GetPAdESLTVCertificateCount,GetPAdESLTVCRLCount,GetPAdESLTVOCSPCountiGetPAdESLTVErrorzgłaszają, co zebrało ostatnie wywołanie i dlaczego przerwało wcześniej, tak że częściowy wynik przy nieosiągalnym responderze jest widoczny, a nie milczący- Materiał identyczny z czymś już przygotowanym jest zapisywany raz i wskazywany przez każdy podpis, który go potrzebuje, a podpis bez czytelnego certyfikatu jest zgłaszany, zamiast być podawanym za udaną promocję
Version 3.331.0
Nowości
- Podpis niesie ze sobą własną ścieżkę certyfikacji, toteż materiał potrzebny profilowi walidacji długoterminowej można odczytać z samego podpisanego pliku.
GetSignatureSignerCertificateDER,GetSignatureEmbeddedCertificateCountorazGetSignatureEmbeddedCertificateDERzwracają certyfikaty osadzone w podpisie, aGetSignatureCertificateChainLengthiGetSignatureCertificateChainDERporządkują je w ścieżkę od sygnatariusza na zewnątrz GetSignatureContentsHashHexzwraca klucz, pod którym adresowany jest wpisAddPAdESDSSVRI, obliczony z samego podpisu- Certyfikat sygnatariusza jest dopasowywany niezależnie od tego, czy podpis identyfikuje go przez wystawcę i numer seryjny, czy przez identyfikator klucza podmiotu, a ścieżka kończy się na ostatnim wystawcy, którego podpis rzeczywiście przenosi, zamiast udawać kompletność
Naprawiono
- Czytnik DER odrzuca zadeklarowaną długość elementu większą niż dane, zamiast pozwalać prawie maksymalnej wartości obsunąć jej kontrolę granic, a przejście po rozszerzeniach certyfikatu nie czyta już poza końcem obciętego lub zbyt długiego certyfikatu. Oba są osiągalne z spreparowanego dokumentu, więc powyższe akcesory pozostają bezpieczne przy niezaufanym wejściu
- Akcesory podpisu czytają dokument ze wspólnym uchwytem, więc odpowiadają, podczas gdy weryfikator lub przeglądarka ma już otwarty plik, zamiast kończyć się niepowodzeniem, jakby podpis był nieobecny
Version 3.330.0
Nowości
- Żądania stanu OCSP:
BuildOCSPRequestkoduje żądanie RFC 6960 dla certyfikatu i jego wystawcy,FetchOCSPResponsewysyła je do respondera i zwraca odpowiedź, aAddPAdESDSSOCSPFromCertificateswykonuje obie czynności i zapisuje wynik w magazynie zabezpieczeń dokumentu - Adres respondera jest opcjonalny: jeśli go pominięto, używany jest adres wskazany w samym certyfikacie, dlatego wywołujący dysponujący łańcuchem certyfikatów nie potrzebuje dodatkowej konfiguracji
- Para certyfikatów, które w rzeczywistości nie są ze sobą powiązane, jest odrzucana przed wysłaniem danych, zamiast powodować odpowiedź "unknown" respondera, którą można błędnie odczytać jako problem z unieważnieniem
- Zapisywana jest tylko pomyślna odpowiedź; odpowiedź respondera
tryLaterlubunauthorizedjest raportowana przezGetTimeStampError, a nie przechowywana tak, jakby zawierała stan certyfikatu
Version 3.329.0
Naprawiono
- Ponowne używanie jednej tablicy wynikowej w kolejnych wywołaniach wyliczających nie powoduje już wycieku ciągów znajdujących się w miejscach tablicy, których późniejsze wywołanie nie wypełnia. Problem dotyczył udokumentowanego wzorca "wywołaj raz, aby uzyskać liczbę, zmień rozmiar, wywołaj ponownie", gdy późniejsze wywołanie zwracało mniej elementów, niż mieściła tablica, a porzucony tekst pozostawał przez cały czas działania procesu
- Dotyczyło to między innymi punktów wejścia
EnumPageContentStates,EnumPageContentStatesEx,EnumAttachments,EnumDocumentFonts,EnumPageElements,EnumNamedDestinations,EnumSignatures,EnumFormFields,GetFormValues,GetTextInAreaExoraz wywołań wyliczających dla wyszukiwania tekstu, działań pól formularzy i certyfikatów
Zmieniono
- Parametr tablicy wynikowej tych wywołań jest teraz przekazywany jako
varzamiastout. Istniejący kod Delphi i C++Builder kompiluje się i łączy bez zmian; jedyną widoczną różnicą jest to, że miejsca tablicy po zwróconej liczbie zachowują wcześniejszą zawartość zamiast być bezgłośnie zerowane
Version 3.328.0
Nowości
- Certyfikaty informują teraz bibliotekę, gdzie można sprawdzić ich stan:
GetCertificateOCSPURLs,GetCertificateIssuerURLsiGetCertificateCRLURLsodczytują z certyfikatu adresy respondera, certyfikatu wystawcy i listy CRL, dlatego tworzenie materiału do walidacji długoterminowej nie wymaga już znajomości miejsca publikacji przez dany urząd FetchRevocationMaterialpobiera materiał spod tych adresów, aAddPAdESDSSCRLFromURLiAddPAdESDSSCertificateFromURLw jednym kroku pobierają go i zapisują w magazynie zabezpieczeń dokumentu- Adresy, które nie wskazują zasobu możliwego do pobrania, na przykład nazwę katalogową lub adres pocztowy, są pomijane zamiast zgłaszane jako zawartość możliwa do pobrania
Version 3.327.0
Nowości
- Wbudowany klient znaczników czasu RFC 3161:
SetTimeStampServeriSetTimeStampOptionskonfigurują urząd, algorytm skrótu, żądane zasady, użycie nonce i limit czasu, aFetchTimeStampTokenzwraca TimeStampToken dla dowolnego skrótu ApplyPAdESSignatureTimeStampuzupełnia podpis PAdES-B-T w jednym wywołaniu: oblicza skrót wartości podpisu, pobiera token ze skonfigurowanego urzędu i dołącza go jako atrybut znacznika czasu podpisu, zastępując wcześniejszą trzyetapową wymianę, którą wywołujący musiał samodzielnie połączyć- Gdy używany jest nonce, token jest sprawdzany pod kątem zwrócenia tej samej wartości, dzięki czemu odtworzona lub podmieniona odpowiedź zostaje odrzucona zamiast osadzona w dokumencie
GetTimeStampStatusiGetTimeStampErrorraportują własny stan urzędu i tekst błędu, dzięki czemu odrzucone żądanie zawiera wyjaśnienie (authority's own status)
Version 3.326.0
Nowości
- Mechanizm renderujący PDFium zapisuje teraz te same formaty obrazów co mechanizmy GDI+ i Cairo.
RenderPageToFile,RenderPageToStreamiRenderPagesToFilespoSelectRenderer(3) przyjmują BMP (opcja 0), JPEG (1), PNG (5), GIF (6), TIFF (7) i G4 TIFF (10), zamiast obsługiwać wyłącznie BMP - Jakość JPEG ustawiona przez
SetJPEGQualityoraz aktywne ustawienia kompresji TIFF mają teraz zastosowanie również do wyjścia PDFium, dlatego zmiana mechanizmu renderującego nie zmienia już kodowania tworzonego pliku
Naprawiono
- Żądanie PNG lub innego formatu niż BMP od mechanizmu PDFium wcześniej zwracało 0 i pozostawiało pusty plik. Aplikacje oferujące wybór mechanizmu bez komunikatu tworzyły nieczytelne dane wyjściowe, gdy wybrano PDFium
- Żądanie od mechanizmu PDFium formatu metapliku, którego nie potrafi wytworzyć (WMF, EMF, EPS, EMF+, HTML5), raportuje teraz dostępne formaty przez
LastRenderError, zamiast wskazywać BMP jako jedyną możliwość
Version 3.324.0
Zmieniono
- Mechanizm PDFium przekazuje teraz dokument do silnika przez strumieniowe źródło danych zamiast jednego bufora w pamięci. Renderowanie i drukowanie wcześniej serializowało dokument, a następnie ponownie kopiowało go do ciągu, przez co każda strona wymagała pamięci równej dwukrotności rozmiaru dokumentu; kopię usunięto, a PDFium odczytuje tylko potrzebne bloki
- Renderowanie zakresu stron do plików analizuje dokument raz dla całej partii zamiast osobno dla każdej strony, dlatego długi zakres nie odczytuje już ponownie całego pliku dla każdego zapisywanego obrazu
- Starsze kompilacje PDFium, które nie eksportują strumieniowego punktu wejścia, nadal działają bez zmian przez ścieżkę korzystającą z pamięci
Naprawiono
- Test dymny mechanizmu renderującego szukał opcjonalnych bibliotek PDFium i Cairo o jeden katalog za wysoko i bez komunikatu pomijał oba silniki; teraz znajduje je i sprawdza rzeczywiste ścieżki renderowania
Version 3.323.0
Nowości
CreateValidationReportorazSaveValidationReportgenerują ustrukturyzowany raport walidacji PDF/A i PDF/UA-1 w formacie XML lub JSON. Każde ustalenie zawiera id reguły, normę, do której należy, krótką nazwę reguły, egzekwowaną klauzulę ISO, poziom ważności oraz liczbę dotkniętych obiektów, a raport zamykany jest statystykami zdawalności/blędów dla każdej normy i na poziomie dokumentu- Norma, której nie zażądano, jest zgłaszana jako
not-checkedzamiast jako ciche zdanie, więc częściowe uruchomienie nie może zostać pomylone z czystym bilansem zgodności - Potoki budowania mogą teraz filtrować po id reguły lub klauzuli ISO zamiast dopasowywać podciągi w tekście: rodzina raportów preflight najpierw renderuje raport dla człowieka i konwertuje ten tekst na JSON, HTML lub CSV, natomiast raport walidacji jest składany z surowych wyników kontroli i zachowuje pola czytelne dla maszyny w nienaruszonym stanie
Version 3.322.0
Nowości
- Dokumentacja referencyjna opisuje teraz cztery zadeklarowane na zewnątrz typy publiczne używane w całym interfejsie
TPDFlib, które wcześniej nie miały dedykowanej strony:TPDFlibProgressEvent,TPDFlibLogger,TPDFlibCertificateInfoorazTPDFlibWatermarkBase, kończąc pokrycie publicznych typów zdarzeń, loggera, wyniku wyliczenia i znaków wodnych
Version 3.321.0
Nowości
CheckDocumentPolicyocenia deklaratywne reguły wewnętrzne, takie jakFonts.NotEmbedded = 0,Security.Encrypted = noczyDocument.Pages <= 500, wobec dokumentu i zgłasza każdą regułę jako zdaną lub niezdawaną z rzeczywistą wartością, zamieniając bramkę ingestu dla wydawców, archiwów i drukarni w konfigurację zamiast ręcznie pisanego kodu inspekcji
Version 3.320.1
Naprawiono
- Rysowanie tekstu w trybie PDF/A bez uprzedniego wczytania fontu nie powoduje już błędu: PDF/A wymaga, aby każdy program fontu był osadzony, więc niejawny skrót do fontu wbudowanego został odrzucony i nie pozostawił żadnego wybranego fontu, a
DrawTexti pozostałe wywołania tekstu ulegały awarii zamiast rysować - Ścieżka niejawnego fontu rozwiązuje teraz rzeczywistą, osadzalną krój, gdy aktywny jest tryb PDF/A, więc tekst rysowany bez jawnego wywołania
AddTrueTypeFontjest osadzany i pozostaje zgodny; bezpośrednie wywołanieAddStandardFontjest nadal odrzucane w PDF/A - Na hostach, na których nie można rozwiązać żadnego osadzalnego kroju, rysowanie powraca do wbudowanych metryk zamiast kończyć się błędem i zgłasza niedobór zgodności przez
LastErrorCode605, dzięki czemu plik może zostać wychwycony, zanim zostanie opublikowany jako zgodny
Version 3.320.0
Nowości
GetDocumentFeatureReportzwraca ustrukturyzowany raport cech w jednym wywołaniu — metadane dokumentu, liczby stron i obiektów, stan szyfrowania, inwentarze fontów i obrazów, oznaczanie i konspekty, pola formularza, podpisy, załączniki oraz podział bajtów według kategorii — zastępując tuzin osobnych zapytań, które potok katalogowania lub ingestu musiał wcześniej złożyć
Version 3.319.0
Nowości
SetCollectionView,AddCollectionField,SetCollectionSortorazSetCollectionItemValuebudują portfolia PDF na bazie istniejących załączników, więc zbiór osadzonych plików jest prezentowany jako przeglądalny pakiet z własnymi kolumnami, kolejnością sortowania i wartościami dla każdego pliku zamiast zwykłej listy załącznikówGetCollectionVieworazGetCollectionFieldCountzgłaszają tryb prezentacji oraz liczbę zadeklarowanych kolumn wczytanego portfolio
Version 3.318.1
Naprawiono
- Opcja 12 ekstrakcji tekstu (ignorowanie obróconego tekstu) odrzuca teraz obrócone ciągi niezależnie od kierunku obrotu: ćwierćobrót zgodny z ruchem wskazówek zegara oraz ćwierćobrót przeciwny do ruchu wskazówek zegara były traktowane różnie, więc boczne notatki marginesowe były odrzucane w jednym kierunku i zwracane w drugim
- Ta sama opcja zachowuje pochylony tekst, który jest jedynie ścinany, taki jak syntetyczna kursywa, a tolerancja teraz skaluje się wraz z rozmiarem tekstu i przekształceniem strony, więc duże pochylone nagłówki nie są już odrzucane, jakby były obrócone
Version 3.318.0
Nowości
DecodeAllStreamsrozwija skompresowane strumienie dokumentu w miejscu, więc zapisanie go tworzy kopię, której strumienie treści, metadane i strukturę można odczytać bezpośrednio przez narzędzia diff, przegląd forensyczny i przepływy wsparcia; obrazy, strumienie predykcji i strumienie odniesień krzyżowych zachowują swoje kodowanie, a strumienie obiektów są materializowane najpierw, nic nie zostaje utracone
Version 3.317.0
Nowości
SetTrappedorazGetTrappeddeklarują i odczytują stan trappingu dokumentu wymagany przez PDF/X, zapisywany jako nazwa/Trappedwymagana przez specyfikację, a nie jako ciąg tekstowySetOutputIntentSubtypeorazGetOutputIntentSubtypeponownie tagują intencję wyjściową, więc wczytany profil koloru może opisywać warunek drukuGTS_PDFXzamiast warunek archiwizacjiGTS_PDFA1, który tworzą tryby PDF/A
Version 3.316.0
Nowości
SetEncryptEmbeddedFilesOnlyorazGetEncryptEmbeddedFilesOnlyograniczają szyfrowanie AES do plików osadzonych: dokument otwiera się i renderuje w dowolnym czytniku bez monitu o hasło, podczas gdy jego załączniki pozostają zaszyfrowane, standardowe rozwiązanie dla faktur, dokumentacji medycznej i teczek, których strony tytułowe są publiczne, ale treść nie
Version 3.315.0
Nowości
- Opcja 18 ekstrakcji tekstu obraca ciągi narysowane pod kątem 90, 180 lub 270 stopni do poziomej ramki odczytu i grupuje każdy ćwierćobrót oddzielnie, więc obrócone notatki marginesowe, nagłówki tabel oraz etykiety osi wykresów są wyodrębniane jako czytelne wiersze zamiast przeplatać się z tekstem pionowym lub być odrzucane
Naprawiono
DASetTextExtractionOptionsakceptuje opcję 16 (rozdzielanie dywizów) oraz opcję 17 (dzielenie słów według luk między znakami) zamiast je odrzucać, a ścieżka ekstrakcji bezpośredniego dostępu przekazuje teraz opcje 15, 16 i 17 do ekstraktora, więc usuwanie linii podkreśleń, rozdzielanie dywizów i dzielenie według luk między znakami mają zastosowanie do uchwytów plików tak samo, jak do wczytanego dokumentu
Version 3.314.0
Nowości
GetFontHasToUnicodezgłasza, czy wybrany font zawiera mapowanie Unicode, a inwentarz fontów zyskuje odpowiadające poleHasToUnicodedla każdego fontu oraz podsumowanieNoToUnicodeCount, więc dokumenty mogą być sprawdzone pod kątem fontów bezpiecznych dla ekstrakcji i konwertowalnych na PDF/A-*u lub PDF/UA przed przetwarzaniem
Version 3.313.0
Nowości
SetPDFAModezyskuje tryb 8 dla PDF/A-2u (ISO 19005-2 Level U), poziom zgodności, który deklaruje mapowania tekstu Unicode bez zezwalania na pliki osadzone, kończąc rodzinę PDF/A-2 obok istniejących trybów 2b i 2a
Version 3.312.0
Nowości
GetObjectByPathorazGetObjectByPathCountodczytują dowolny węzeł drzewa objektów poprzez wyrażenia ścieżkowe, takie jakRoot/Pages/Kids[0]/MediaBox[2]lubpages[0]/Type— typy, wartości skalarne, formy zserializowane oraz liczebności elementów w jednym wywołaniu, zastępując ręczne przechodzenie obiektów przy sondowaniu metadanych, doraźnych kontrolach zgodności i diagnostyce wsparcia
Version 3.311.0
Nowości
SetBlackPointCompensationdeklaruje kompensację czarnego punktu (ON, OFF lub Default) dla kolejnego rysowania przez stan graficzny/UseBlackPtCompPDF 2.0, pozwalając wyjściu do naświetlania i probie utrwalić konwersje ICC w ciemnych tonach, które wcześniej były prywatne dla przeglądarki; wersja dokumentu jest podnoszona automatycznie, a tryby PDF/A odrzucają ten stan
Version 3.310.0
Nowości
SetCompressionLevelorazGetCompressionLeveludostępniają poziom deflate dla każdej kompresji wykonywanej przez bibliotekę: 0 zachowuje domyślny silnik akcelerowany SIMD, 1 faworyzuje przepustowość, a 9 ściska archiwa najmocniejRecompressStreamsponownie deflatuje każdy zwykły strumień FlateDecode wybranego dokumentu na bieżącym poziomie i zachowuje mniejsze kodowanie dla każdego strumienia, zmniejszając dokumenty pierwotnie zapisane przy szybkim ustawieniu kompresji bez ingerencji w ich treść
Version 3.309.0
Nowości
SetObjectStreamModeorazGetObjectStreamModedodają trójstanową kontrolę strumienia obiektów: wyłącz, generuj (domyślnie) lub zachowaj, gdzie zachowanie utrzymuje oryginalne skompresowane grupowanie wczytanego pliku i zapisuje kontenery dosłownie, czyniąc konwersje istniejących plików PDF 1.5+ tańszymi, bo nic nie jest rozpakowywane ani regroupowane
Zmieniono
- W trybie zachowania elementy edytowane od wczytania są promowane do obiektów najwyższego poziomu, aby ich zmiany zostały zapisane, a każdy pozostały skompresowany element automatycznie wybiera binarną formę strumienia odniesień krzyżowych
Version 3.308.0
Nowości
CheckDocumentStructureuruchamia jednowywołaniowy test kondycji strukturalnej: każdy obiekt i strumień jest przepuszczany przez swój dekoder, zwykłe strumienie Flate są rygorystycznie weryfikowane ze znacznikiem końcowym zlib, więc ucięte dane są wychwytywane, a raport flaguje brakujące trailery, nierozwiązywalne katalogi i strony, nieobsługiwane procedury szyfrowania oraz pliki naprawione skanowaniem bajtów, z ustaleniami per obiekt i wierszem podsumowującym
Version 3.307.0
Naprawiono
- Uszkodzone dokumenty korzystające ze strumieni odniesień krzyżowych naprawiają się teraz pomyślnie: surowa rekonstrukcja odzyskuje elementy skompresowanych strumieni obiektów, a gdy w pliku nie istnieje żadne słowo kluczowe trailer, syntetyzuje trailer z najnowszego osiągalnego katalogu dokumentu, więc zepsute przesunięcie startxref nie czyni już takich plików nieotwieralnymi
Version 3.306.0
Nowości
ExportDocumentDatazapisuje klucze informacji dokumentu, całe drzewo zakładek oraz zakresy etykiet stron jako edytowalny tekst w klasycznym formacie linii dump_dataImportDocumentDatastosuje ten sam format z powrotem — klucze informacji są aktualizowane, drzewo zakładek jest przebudowywane z poziomami zagnieżdżenia i stronami docelowymi, a zakresy etykiet stron są zastępowane — umożliwiając masową edycję zakładek oraz migrację metadanych między dokumentami w jednym wywołaniu w każdą stronę
Version 3.305.0
Nowości
AuditDocumentSpacerozkłada zużycie bajtów dokumentu według kategorii — obrazy, programy fontów i słowniki, strumienie treści, form XObjects, strumienie obiektów, pliki osadzone, metadane, drzewo struktury, adnotacje, drzewo stron i inne — z liczebnościami obiektów, sumami bajtów i procentami, odpowiadając na pytanie, dlaczego plik jest tak duży, jaki jest, oraz która optymalizacja najbardziej się opłaca
Version 3.304.0
Nowości
StructTreeItemCount,GetStructTreeItemTextorazGetStructTreeItemIntPropertyodczytują drzewo struktury oznakowanego dokumentu jako spłaszczoną listę elementów w porządku wgłąb — typy elementów (surowe i zmapowane na role), tekst alternatywny i rzeczywisty, język, tytuły, identyfikatory oznaczonej treści, numery stron oraz relacje rodzic-dziecko
Zmieniono
- Czytnik drzewa struktury chroni przed uszkodzonymi dokumentami: cykle odniesień, numery obiektów spoza zakresu oraz drzewa zagnieżdżone głębiej niż 64 poziomy są ucinane zamiast zapętlać się
Version 3.303.1
Naprawiono
- Półprzezroczyste stemple podkładu tworzone przez
StampTextorazStampImagenie przebijają już swojej nieprzezroczystości do oryginalnej treści strony — stan przezroczystości jest teraz ograniczony do samego stempla, więc strona zachowuje pełną nieprzezroczystość
Version 3.303.0
Nowości
OverlayDocumentPagesstempluje strony innego otwartego dokumentu na strony wybranego dokumentu, po jednej stronie źródłowej na każdą stronę docelową, nad lub pod istniejącą treścią — papier firmowy, ciągłe tła stron i zeskanowane szablony formularzy w jednym wywołaniu- Wyczerpanie źródła jest konfigurowalne: zatrzymaj, przełączaj w pętli strony źródłowe lub powtarzaj ostatnią stronę źródłową; dodatkowa opcja zapobiega powiększaniu stempla poza jego naturalny rozmiar
Zmieniono
- Stemple dokumentu są dopasowywane do CropBox strony docelowej i ustawiane pionowo na stronach zawierających wpis
/Rotate, a każda strona źródłowa jest importowana raz jako współdzielony Form XObject, więc powtarzające się szablony nigdy nie duplikują swoich zasobów
Version 3.302.0
Naprawiono
- Hasła AES-256 są teraz przetwarzane za pomocą SASLprep (RFC 4013) przed hashowaniem, więc hasła zawierające spacje non-ASCII, miękkie myślniki, znaki kompatybilności lub sekwencje łączące otwierają się poprawnie w programie Acrobat i innych zgodnych czytnikach
- Otwieranie dokumentów AES-256 próbuje najpierw standardowego przygotowanego hasła i powraca do starszej formy bajtowej, więc pliki zapisane przez wcześniejsze wydania z hasłami non-ASCII nadal się otwierają
Nowości
- Kod błędu 604 zgłasza hasło AES-256 odrzucone przez SASLprep, ponieważ zawiera zabronione punkty kodowe lub narusza reguły dwukierunkowe
Version 3.301.0
Nowości
SplitDocumentToFilesdzieli wybrany dokument na partię plików wyjściowych o stałej liczbie stron każdy, używając symbolu zastępczego nazwy pliku%p
Zmieniono
- Dzielenie wsadowe analizuje dokument źródłowy raz i kopiuje każdy fragment z tej samej struktury w pamięci, zastępując powtarzający się pełny ponowny parse, który pętla nad
ExtractFilePageswykonuje dla każdego zakresu
Version 3.300.0
Nowości
CollateDocumentsscala strony z kilku otwartych dokumentów do wybranego dokumentu rotacyjnie, pobierając konfigurowalną liczbę stron z każdego źródła na rundę (A1, B1, A2, B2, …)CollateDocumentsExprzyjmuje listę zakresów stron dla każdego źródła, w której zakresy malejące, takie jak3-1, odwracają źródło, więc przebiegi skanera przodu i odwróconego tyłu łączą się w porządku czytania w jednym wywołaniu
Zmieniono
- Scalanie importuje każde źródło przez jedną mapę obiektów i przeplata przez zmianę kolejności stron, więc fonty i obrazy współdzielone wewnątrz źródła są zapisywane tylko raz, niezależnie od wielkości grupy
Version 3.299.0
Nowości
SetDeterministicDocumentIDorazGetDeterministicDocumentIDprzełączają identyfikator pliku trailera na powtarzalną wartość, tak aby identyczne wejścia produkowały identyczne bajty wyjściowe dla pamięci podręcznej budowania, magazynu adresowanego treścią oraz porównania regresji na poziomie bajtówSetDocumentIDSeeddostarcza jawną wartość nasionową dla powtarzalnego identyfikatora pliku; bez nasiona identyfikator jest wyprowadzany z metadanych dokumentu, nagłówka wersji i liczby stron
Zmieniono
- Powtarzalne identyfikatory pliku są odświeżane tylko przy pełnych zapisach; aktualizacje przyrostowe i zaszyfrowane dokumenty zachowują swój istniejący identyfikator, aby podpisy i pliki chronione hasłem nadal otwierały się poprawnie
Version 3.298.0
Nowości
AddLinkToArticleThreadiSetOutlineArticleThreadłączą hotspoty strony i konspekty z wątkiem artykułu lub koralikiem za pomocą standardowych akcji ThreadAddActionNextArticleThreadiPDF_ACTION_BUILDER_THREADdodają akcje Thread do łańcuchowych przepływów pracy akcji formularza, strony i dokumentu
Zmieniono
- Cele akcji Thread używają stabilnych pośrednich odwołań do wątku i koralika i odrzucają nieprawidłowe indeksy bez zmiany kontenera docelowego
- Konstruktory akcji pola formularza odrzucają dodatkowe akcje, gdy tryb PDF/A jest aktywny, zachowując zakaz PDF/A dotyczący słowników
/AApól i widżetów
Version 3.297.0
Nowości
- Referencja flat-
DLL DL dokumentuje teraz każdy punkt wejściaANSI z przyrostkiem A (char), dodając 353 strony dokumentacji, które odzwierciedlają swoje odpowiedniki Unicode z dokładnymi sygnaturamiPAnsiCharDelphi orazconst char *C - Przebudowano
BufferUtilities,DirectAccessFunctionalityorazMiscellaneousFunctionsjako przejrzyste strony indeksowe grup funkcji oparte na wspólnym schemacie kategorii, naprawiając uszkodzone znaczniki, błędnie opisane sekcje i brakujące plakietki - Indeks nawigacji i wspólny indeks wyszukiwania obejmują teraz pełną powierzchnię DLL zarówno dla wywołań Unicode, jak i ANSI
Naprawiono
- Usunięto przestarzały wpis
SetLogger, który nie miał odpowiadającego symbolu w kodzie źródłowym; udokumentowaną właściwością jestLogger
Version 3.296.0
Nowości
AddAlternateImage,AlternateImageCount,GetAlternateImageInfoorazRemoveAlternateImagezapewniają typowane tworzenie i inspekcję wariantów obrazu do wyświetlania i drukowania- Obrazy alternatywne mogą być powiązane z grupą treści opcjonalnej lub słownikiem przynależności, a jeden wariant na obraz bazowy może być wybrany jako domyślny do druku
Zmieniono
- Wbudowany moduł renderowania wybiera teraz alternatywne obrazy treści opcjonalnej, gdy obraz bazowy jest ukryty, i uwzględnia wartość domyślną druku w przypadku miejsc docelowych będących drukarkami
FindImagesrejestruje teraz obiekty XObject obrazów alternatywnych osiągalne z zasobów strony, dzięki czemu importowane warianty otrzymują użyteczne uchwyty obrazu
Version 3.295.0
Nowości
AddArticleThreadtworzy zgodną ze standardami nawigację artykułu z typowanymi metadanymi, uporządkowanymi prostokątami stron, cyklicznymi łączami paciorków oraz tablicami paciorków dla każdej stronyArticleThreadCount,GetArticleThreadInfoorazGetArticleThreadBeadsprawdzają utworzone lub zaimportowane wątki artykułów z ograniczonym przeglądaniem uszkodzonych cykli łączy
Zmieniono
DeletePagesusuwa teraz wątki artykułów, które tracą wszystkie paciorki, oraz naprawia łącza cykliczne przetrwałych wątków- Śledzenie usuniętych stron zachowuje teraz stabilne pośrednie odniesienia do stron, tak aby oczyszczanie konspektu i artykułu nie ulegało przesunięciu wraz z ruchem kursora drzewa stron
Version 3.294.0
Nowości
SearchTextBatchwyszukuje wiele zapytań tekstowych, gdy każde wyodrębnienie strony znajduje się w pamięci, i zwraca początkowy indeks zapytania oparty na zerze przy każdym trafieniuSearchTextBatchEachzapewnia to samo jednoprzebiegowe wyszukiwanie za pomocą wywołania zwrotnego strumieniowego z raportowaniem postępu i anulowaniem
Zmieniono
- Wyszukiwanie tekstu z pojedynczym zapytaniem i wsadowe współdzielą teraz jeden rdzeń dopasowywania, zachowując semantkę uwzględniania wielkości liter, całych słów i zakresu stron, unikając powtarzania wyodrębniania stron, zwijania tekstu oraz pracy nad geometrią trafień
Version 3.293.1
Naprawiono
- Rasteryzacja mesh shading nie kończy się już niepowodzeniem kompilacji w żadnej wersji Delphi, rozwiązując
E2089 Invalid typecastprzy rzutowaniach rzeczywistych na zmiennoprzecinkowe w module rysującym GDI+ - Równoległe renderowanie stron wsadowych kompiluje się teraz w Delphi XE5 oraz XE6, gdzie
System.Threadingjest niedostępne; starsze łańcuchy narzędziowe powracają do ścieżki renderowania szeregowego, tak jak na systemach innych niż Windows - Sondowanie możliwości drukarki nie zgłasza już błędu niekompatybilnych typów w starszych wersjach Delphi, dostosowując wywołanie
SetPrinterdo reszty kodu drukowania - Wyliczanie magazynu certyfikatów buduje się teraz w RAD Studio 10.3 Rio, które wcześniej przerywało pracę z wewnętrznym błędem kompilatora podczas optymalizacji procedury wyliczania
Version 3.293.0
Nowości
- Słowniki przynależności treści opcjonalnej mogą być teraz tworzone, aktualizowane i wyliczane z zasadami zgodności
AnyOn,AllOn,AnyOfforazAllOff - Zagnieżdżone wyrażenia widoczności
/VEz PDF 1.6 obsługująAnd,OrorazNotza pomocą zwartej reprezentacji prefiksowej współdzielonej przez Delphi i C++Builder
Zmieniono
- Zakresy treści opcjonalnej, strumienie treści, przechwycone strony, obrazy, pola formularza i adnotacje akceptują teraz uchwyt grupy lub uchwyt przynależności
- Renderowanie najpierw ocenia prawidłowe wyrażenia
/VE, a w przypadku wyrażeń zniekształconych lub nieobsługiwanych powraca do/OCGswraz z/P
Naprawiono
- Zagnieżdżona treść opcjonalna nie może już sprawić, że treść będzie widoczna, gdy otaczająca grupa lub przynależność jest ukryta
- Słowniki przynależności bez efektywnych grup treści opcjonalnej pozostawiają teraz widoczność bez zmian, zgodnie z wymogiem specyfikacji PDF
Version 3.292.0
Nowości
EnumAttachmentsraportuje teraz daty utworzenia i modyfikacji, sumy kontrolne w postaci szesnastkowej, relacje plików skojarzonych oraz numery obiektów specyfikacji plików zarówno dla załączników dokumentu, jak i adnotacjiValidateAttachmentChecksumweryfikuje ładunek załącznika względem zapisanej sumy kontrolnej na żądanie, podczas gdy nowo osadzone pliki otrzymują teraz automatycznie metadane sumy kontrolnej
Naprawiono
SetEmbeddedFileAFRelationshipakceptuje teraz te same indeksy osadzonych plików oparte na 1 co reszta API załączników, w tym dokumenty z pojedynczym załącznikiem
Version 3.291.0
Nowości
DeduplicateResourceskonsoliduje teraz dokładnie powielone strumienie obrazów, Form, wzorców, cieniowań, funkcji, profili ICC, programów czcionek, CMap, CharProc Type 3, plików osadzonych, metadanych oraz PostScript w całym załadowanym dokumencie- Deduplikacja zasobów zapewnia niezależne flagi typów, analizę prób na sucho, opcjonalne zbieranie obiektów osieroconych oraz szczegółowe statystyki haszowania, porównań, ładunków, odniesień i według kategorii
Zmieniono
- Wykrywanie duplikatów kanonizuje pełne słowniki strumieni niezależnie od kolejności kluczy, haszuje każdy ładunek kandydata raz przy użyciu SHA-256 i potwierdza pasujące grupy bajt po bajcie przed przekierowaniem odniesień
- Grupy dokładnej równoważności zachowują najniższy numer obiektu i generację dla deterministycznej wyniku, natomiast cykle zniekształconych obiektów bezpośrednich oraz semantyczne różnice słowników pozostają niescalone
Version 3.290.0
Zmieniono
PurgeUnusedResourcesoblicza teraz przechodnie domknięcie zależności obejmujące wzorce kafelkowe, glify Type 3, stany wyglądu adnotacji, grupy miękkiej maski ExtGState, obrazy, cieniowania oraz zagnieżdżone przestrzenie kolorów- Domyślne opcje oczyszczania włączają teraz analizę zależności wzorców, Type 3, wyglądu, miękkiej maski oraz obrazów, z niezależnymi flagami dla wywołań wymagających węższego skanowania
- Zagnieżdżone programy treści i wpisy zależności są buforowane, wspólne zakresy zasobów są prywatyzowane przed przycinaniem, a zniekształcone cykle są ograniczane przez straże aktywnego strumienia i głębokości
Naprawiono
- Zasoby stron używane wyłącznie przez przestrzenie kolorów obrazów, bazy Indexed, alternatywy Separation lub DeviceN, przestrzenie podległe Pattern, alternatywy ICCBased lub słowniki cieniowań nie są już usuwane jako nieużywane
- Zasoby używane wyłącznie przez CharProcs Type 3, komórki wzorców kafelkowych, wyglądy adnotacji lub grupy miękkiej maski przezroczystości nie są już usuwane z ich własnego lub dziedziczonego zakresu
Version 3.289.0
Nowości
PurgeUnusedResourcesusuwa teraz nazwane zasoby stron, do których nie odwołują się wybrane warstwy treści, i może zwracać szczegółowe statystyki według kategorii- Oczyszczanie zasobów obsługuje teraz zakresy stron, raportowanie prób na sucho, postęp i anulowanie, rekurencyjną analizę Form XObject, usuwanie przestarzałych ProcSet oraz opcjonalne zbieranie obiektów osieroconych
Zmieniono
- Analiza zasobów uwzględnia teraz rozróżnianie wielkości liter nazw PDF, dziedziczone zasoby Form, niestandardowe przestrzenie kolorów obrazów wbudowanych oraz wszystkie siedem standardowych kategorii zasobów
- Powtórzone programy Form są buforowane, zestawy używanych zasobów wykorzystują wyszukiwanie uporządkowane, a wpisy słowników są usuwane w kolejności malejącej, zapewniając przewidywalną wydajność dla dużych dokumentów
Naprawiono
- Usuwanie wpisów słowników unieważnia teraz indeksy kluczy dużych słowników, tak aby późniejsze wyszukiwania nie zwracały przestarzałych wpisów
- Zniekształcone strumienie i nieznane operatory zachowują domyślnie swój pełny zakres zasobów, natomiast wspólne lub dziedziczone słowniki zasobów są klonowane przed mutacją
Version 3.288.0
Nowości
- Podpisy cyfrowe mogą teraz emitować kompletne struktury certyfikacji DocMDP oraz blokowania pól FieldMDP, z raportami uprawnień strukturalnych dla każdego wybranego podpisu
- Znaczniki czasu dokumentu RFC 3161, znaczniki czasu podpisu, wstrzykiwanie tokenów PAdES-B-T, walidacja łańcucha certyfikatów, dowody OCSP oraz materiał walidacji DSS lub VRI posiadają teraz kompletne przepływy tworzenia i weryfikacji
- Adnotacje RichMedia obsługują teraz osadzone zasoby, ustawienia aktywacji i dezaktywacji, wyglądy plakatów, wyliczanie, wyodrębnianie oraz usuwanie
- Drukowanie plakatów obsługuje teraz wektorową impozycję stron, znaczniki nakładki i kadrowania, umieszczanie uwzględniające marginesy fizyczne oraz wielokrotnie używane plany kafelkowania
- Oznaczone tabele emitują teraz semantyczną strukturę Table, TR, TH oraz TD ze stabilnymi identyfikatorami, powiązaniami nagłówków, zakresami, powtarzającymi się nagłówkami oraz zartefaktowaną dekoracją
- Przeglądarka zapewnia teraz dostępną z klawiatury edycję AcroForm dla pól tekstowych, wyboru, pola wyboru, radia oraz przycisku, przy jednoczesnym wywoływaniu akcji do aplikacji hosta
Zmieniono
- Cieniowania mesh oparte na funkcjach Type 1 oraz cieniowania mesh od Type 4 do 7 są teraz renderowane przez natywną ewaluację funkcji i ograniczoną teselację mesh
- Renderowanie kolorów ICCBased współdzieli teraz buforowane transformacje między obrazami i cieniowaniami, zachowując zachowanie skalibrowanej przestrzeni kolorów
- Zapisy przyrostowe przebudowują teraz spójnie strumienie obiektów i strumienie odsyłaczy, a wybrane podpisy są weryfikowane względem ich własnej podpisanej rewizji
Naprawiono
- Żądania znacznika czasu podpisu SHA-1 haszują teraz wartość podpisu sygnatariusza przy użyciu SHA-1 zamiast powracać do SHA-256
- Odrzucone zastąpienia blokady pola nie odrzucają już wcześniej prawidłowej konfiguracji blokady pola
- Widżety radia ze zduplikowanymi nazwami stanów wyglądu zachowują teraz wybrany widżet i utrzymują wyłączone widżety równorzędne
Version 3.287.0
Zmieniono
- Słowniki obrazów wbudowanych są teraz zgodne z granicami komentarzy, ograniczników, literałów, liczb szesnastkowych, tablic oraz słowników PDF z ograniczonym zagnieżdżeniem
- Ładunki obrazów wbudowanych używają teraz zakończeń uwzględniających format dla danych raw, DCT, ASCII85, ASCIIHex, RunLength oraz Flate
- Wykrywanie ładunku Flate wykonuje teraz jedno ograniczone inflate od przesunięcia strumienia treści z dokładnym rozliczaniem skompresowanych bajtów, natomiast łańcuchowe filtry bezstratne współdzielą kompleksowy limit wyjścia
- Strumienie obrazów ASCII85, ASCIIHex, LZW, predictor, profilu kolorów oraz pomocnicze wymuszają teraz ograniczone wyjście pośrednie bez nadmiernych alokacji tymczasowych
Naprawiono
- Zniekształcone lub ucięte obrazy wbudowane nie odczytują już danych poza źródłem, nie zapętlają się przy niezakończonych wartościach ani nie zachowują przestarzałego stanu między kolejnymi użyciami dekodera
- Pakowane wiersze obrazów obliczają teraz bity składowych przed zaokrąglaniem do bajtów, zapobiegając nieprawidłowym długościom dla obrazów RGB o niskiej liczbie bitów oraz obrazów wielowierszowych
- Przestrzenie kolorów zasobów zachowują teraz swoje oryginalne nazwy, wywodząc liczby składowych Lab, pośrednich ICCBased oraz DeviceN i dekodując strumienie palet Indexed przy ścisłych limitach
- Granice obrazów wbudowanych odrzucają teraz konsekwentnie nieprawidłowe wymiary, głębokości bitów, nieobsługiwane filtry, niebezpieczne łańcuchy filtrów, skompresowane strumienie oraz niejednoznaczne znaczniki końca
- Renderowanie kolorów Indexed waliduje teraz każdy dostęp do palety i odrzuca ucięte dane wyszukiwania zamiast odczytywać poza zdekodowaną tabelą
- Predyktory PNG od 10 do 15 dekodują teraz poprawnie strumienie Flate i LZW, odrzucają nieprawidłowe filtry wierszy oraz walidują wszystkie rozmiary wierszy i stanów przed alokacją
- Ładunki JPEG oraz JPEG 2000 weryfikują teraz swoje zakodowane wymiary, składowe, precyzję, strukturę znaczników, długości pól oraz zdekodowane zużycie pamięci przed alokacją obrazu
- Walidacja obrazów wbudowanych ogranicza teraz zarówno zapakowane, jak i rozwinięte mapy bitowe oraz ogranicza profile ICC, globalne JBIG2 oraz parametry filtrów terminalnych
- Ładunki filtrów binarnych zawierające osadzony tekst znacznika końca przechodzą teraz do pierwszego kandydata, który przejdzie ograniczoną walidacją formatu
Version 3.286.0
Zmieniono
- Tokenizacja strumienia zawartości przestrzega teraz granic białych znaków, komentarzy, separatorów, ciągów literałowych, ciągów szesnastkowych i nazw w formacie PDF
- Dzielenie tekstu i zastępowanie zasobów używa teraz geometrycznie powiększanych buforów wyjściowych, zapewniając liniowe przetwarzanie dużych strumieni zawartości
- Procesory strumieni zawartości wielokrotnego użytku resetują teraz wynik pochodny i stan analizatora przed każdym wywołaniem
Process
Naprawiono
- Nieprawidłowo sformułowane lub ucięte ciągi literałowe i szesnastkowe nie odczytują już danych poza buforem źródłowym ani nie emitują dodatkowego pustego tokenu
- Zastępowanie zasobów zachowuje teraz rozróżnianie wielkości liter w nazwach PDF, przyjmuje opcjonalne początkowe ukośniki i deterministycznie aktualizuje zduplikowane odwzorowania
- Operandy XObject i cieniowania na początku strumienia są teraz wykluczane z wyjścia tekstowego, natomiast niedopasowane operatory przywracania nie anulują już później zapisanych stanów grafiki
Version 3.285.0
Zmieniono
- Kodowanie LZW używa teraz wyszukiwania w słowniku w stałym czasie i buforowanych zapisów strumienia, natomiast dekodowanie korzysta ze zwartych tabel prefiksów i sufiksów oraz geometrycznie powiększanego wyjścia
- Dekodowanie predyktora Flate przetwarza teraz wiersze bezpośrednio w buforze wyjściowym i obsługuje upakowane, 8-bitowe oraz 16-bitowe próbki TIFF z dowolną liczbą składowych koloru
- Przechowywane strumienie Deflate zapisują teraz do wyniku o dokładnie wstępnie ustalonym rozmiarze, a otoki zlib bezpiecznie zwalniają bufory tymczasowe po nieudanej kompresji lub dekompresji
Naprawiono
- Zmiany szerokości kodu LZW przestrzegają teraz semantyki PDF
EarlyChangedla kodów od 9 do 12 bitów, w tym resetowania słownika iEarlyChange=0 - Dekodowanie LZW odrzuca teraz nieprawidłowe kody przyszłe i ucięte strumienie bitów bez odczytywania poza buforem źródłowym
- Predyktory PNG używają teraz zaokrąglonej w górę szerokości piksela w bajtach, zachowują poprzednio zdekodowane wiersze i bezpiecznie dopełniają częściowy ostatni wiersz
- Dekodowanie predyktora TIFF spójnie obsługuje składowe 1-, 2-, 4-, 8- i 16-bitowe zarówno na ścieżce LZW, jak i Flate
Version 3.284.0
Zmieniono
- Wyszukiwanie w buforach skanuje teraz stałe bloki po 64 KiB, używa tabel bajtowych do sprawdzania przynależności do zbioru i zachowuje położenie wywołującego na każdej ścieżce wyszukiwania (caller's position)
- Konwersje Unicode, Latin-1, szesnastkowych skrótów i ARC4 rezerwują teraz ograniczone wyjście tylko raz, zamiast wielokrotnie powiększać ciągi lub tablice tymczasowe
- Kodowanie ASCII85 odczytuje teraz strumienie wejściowe w blokach po 32 KiB, a dekodowanie używa dokładnej arytmetyki całkowitoliczbowej i zapisuje bezpośrednio do bufora wyjściowego o wcześniej ustalonym rozmiarze
- Obliczanie skrótu MD5 ciągu nie używa już tymczasowego strumienia pamięci, porównanie skrótów bada każdy bajt, a harmonogram klucza ARC4 nie przydziela już rozszerzonej tablicy klucza
Naprawiono
DistanceToAnyBytezwraca teraz prawidłowe przesunięcie poza pierwszym blokiem zamiast ponownie odczytywać ten sam prefiks i zawyżać liczbę pominiętych bajtów- Odczyty buforów opartych na strumieniu uwzględniają teraz rzeczywistą liczbę bajtów zwróconą przez strumienie niestandardowe, skracając wyniki i przesuwając pozycje tylko o odebrane bajty
- Zmniejszenie długości bufora ogranicza teraz bieżącą pozycję, a źródła będące wskaźnikiem nil lub strumieniem nil zachowują się jak puste dane wejściowe zamiast udostępniać nieprawidłową pamięć
- Dekodowanie Latin-1 odwzorowuje teraz pełny zakres bajtów 0x00-0xFF zamiast zastępować bajty 0x7F-0xFF
- Dekodowanie ASCII85 zachowuje teraz prawidłową maksymalną 32-bitową grupę
s8W-!i zatrzymuje się przy pierwszym znaczniku końca bez utraty granicy wynikającej z arytmetyki zmiennoprzecinkowej
Version 3.283.0
Nowości
TPDFlibSignatureVerifiermoże teraz wyliczać pola podpisów i podpisujących CMS, otwierać pliki, strumienie lub ciągi oraz sprawdzać wybrane pole i podpisującego według indeksu lub nazwy pola- Szczegółowe raporty weryfikacji oddzielają teraz integralność kryptograficzną od pokrycia podpisanej rewizji, pokrycia bieżącego pliku, późniejszych rewizji, ścisłej walidacji luki Contents i natywnych błędów kryptograficznych
Zmieniono
- Walidacja odłączonego CMS przesyła teraz oba segmenty ByteRange przez Windows CryptoAPI w ograniczonych porcjach zamiast materializować cały plik PDF w pamięci
- Pola podpisu w zagnieżdżonych tablicach AcroForm Kids i dziedziczone wpisy
/FT /Sigsą teraz wyliczane z w pełni kwalifikowanymi nazwami; obsługiwane są również bezpośrednie słowniki wartości podpisu
Naprawiono
- Walidacja ByteRange odrzuca teraz przepełnienie, nakładanie, ucięcie, lukę niebędącą dokładnie wybranym szesnastkowym tokenem
/Contentsoraz podpisaną rewizję, która nie kończy się własnym%%EOF - Wyszukiwanie certyfikatu nie używa już zastępczo niezwiązanego osadzonego certyfikatu, gdy identyfikator wybranego podpisującego CMS nie ma dokładnego dopasowania wystawcy i numeru seryjnego
- Aktualizacje przyrostowe używające strumieni odwołań krzyżowych zawierają teraz własny wpis typu 1 obiektu strumienia odwołań krzyżowych, zapobiegając zgłaszaniu brakującego wpisu własnego po podpisaniu przez rygorystyczne walidatory PDF
Version 3.282.1
Zmieniono
- Pełne zapisy odbudowują teraz zaimportowane strumienie obiektów z aktywnego grafu obiektów, zachowują prywatne korzenie zwiastuna i utrzymują generacje wolnych obiektów bez ponownego używania numerów obiektów strukturalnych
- Strumienie odwołań krzyżowych dobierają teraz rozmiar pól przesunięcia do dużych plików, wstępnie przydzielają dane, zawierają własny wpis i zachowują klucze rozszerzeń zwiastuna
Naprawiono
- Pakowanie strumieni obiektów zapisuje teraz rzeczywiste kontenery
/ObjStmi wpisy elementów typu 2, zamiast jedynie przełączać się na strumień xref - Odśmiecanie nie zapisuje już brakujących numerów obiektów jako używanych wpisów o przesunięciu zero i emituje teraz połączony łańcuch wolnych obiektów zarówno w tekstowych, jak i strumieniowych odwołaniach krzyżowych
- Wczytane spakowane pliki PDF można teraz wielokrotnie zapisywać z włączonym lub wyłączonym pakowaniem bez zachowywania nieaktualnych strumieni obiektów, utraty aktywnych elementów ani konieczności naprawy odwołań krzyżowych
Version 3.282.0
Nowości
- Zaimportowane kolory ICCBased używają teraz osadzonego profilu ICC w malowaniu wektorowym, cieniowaniach funkcyjnych i siatkowych, paletach indeksowanych, surowych bitmapach, obrazach CCITT i JBIG2, obrazach JPEG CMYK oraz obrazach JPEG 2000
Zmieniono
- Przekształcenia ICC używają teraz ograniczonej tabeli wyszukiwania Windows Color System z interpolacją wieloliniową, zastępując tymczasową konwersję przez PNG stosowaną podczas renderowania obrazów
- Mechanizm renderujący uwzględnia teraz intencje renderowania strumienia zawartości i stanu grafiki, ICCBased
/Range, obrazowe/Decodeoraz maski klucza koloru w pierwotnej dziedzinie, jednocześnie sprawdzając liczbę kanałów profilu względem słownika przestrzeni kolorów PDF - Powtarzające się użycia tego samego profilu i intencji renderowania współdzielą teraz jedną tabelę wyszukiwania między kolorami wektorowymi, wzorcami, cieniowaniami i obrazami
Naprawiono
- Zaszyfrowane strumienie profili ICC są teraz odszyfrowywane tylko na czas dekodowania, a następnie przywracane; osadzone profile nie są już kompresowane dwukrotnie podczas zapisywania obrazów wyjściowych
Version 3.281.0
Nowości
- Wbudowany mechanizm renderujący GDI+ maluje teraz importowane z PDF cieniowania funkcyjne oraz cieniowania siatkowe swobodne, kratowe, Coonsa i tensorowe (typy 1 i 4-7), z uwzględnieniem przezroczystości i przycinania
- Słowniki cieniowania obsługują teraz tablice składowych Function, skalibrowane przestrzenie Lab, CalGray i CalRGB, przekształcenia tint Separation i DeviceN, wypełnienia Background typu PatternType 2 oraz przycinanie BBox w mechanizmach GDI+ i Cairo
Zmieniono
- Funkcje cieniowania typu 1 używają teraz ograniczonego adaptacyjnego próbkowania kolorów z dodatkowymi sondami w ćwiartkach komórek, zapewniając większą dokładność wąskich cech i mniej pracy w obszarach stałych lub gładkich
- Macierze PatternType 2 otaczające cieniowania siatkowe są teraz składane dokładnie raz zarówno w GDI+, jak i Cairo, zachowując przesunięte, skalowane i obrócone położenie wzorca
- Składowe kolorów siatki są teraz interpolowane w źródłowej przestrzeni kolorów przed oceną Function i konwersją do RGB, co zachowuje funkcje nieliniowe, gradienty DeviceCMYK i prawidłową kolejność zarządzanych przekształceń kolorów
- Powierzchnie Coonsa i tensorowe używają teraz ograniczonego podziału według błędu piksela urządzenia, zapewniając gładsze wyniki o dużej krzywiźnie przy dużych rozmiarach renderowania
- Zaszyfrowane strumienie cieniowania i Function są dekodowane przez kryptograficzne wywołania zwrotne dokumentu, a rekordy wierzchołków typu 5 zachowują wymagane wyrównanie bajtowe
Version 3.280.1
Naprawiono
MergeFileList/MergeFileListFast/MergeFileListStrictpowodowały wyciek paryTSmartPDFReader/TSmartPDFDocumenti wszystkich należących do niej obiektów, gdy na liście scalania pojawił się plik inny niż PDF: czytnik i dokument były tworzone przed blokiemtry, który je zwalnia, dlatego błąd analizy zawartości nieprawidłowego pliku porzucał już utworzony czytnik zamiast pozwolić otaczającej obsłudze wyjątków go posprzątać; tworzenie odbywa się teraz wewnątrz ochronnego blokutryzarówno w ścieżce wstępnego skanowania pojedynczego pliku, jak i wielu plików (file's content)- Analiza cieniowania siatkowego (
TPLMeshShading.Parse, typy cieniowania 1 i 4-7) powodowała wyciek zdekodowanego obiektu/Functionprzy każdej analizie, ponieważ żadna ścieżka wczesnego wyjścia ani zwykłe ukończenie go nie zwalniały; funkcja jest teraz zwalniana w blokufinallyniezależnie od sposobu zakończeniaParse TPDFlibSignDoc.Closeustawia teraz pola inteligentnego czytnika, dokumentu i informacji na nil po ich zwolnieniu, a ścieżki wyjątków wOpen,OpenStreamiOpenStringzwalniają wszystkie częściowo utworzone inteligentne obiekty zamiast tylko czyścić odwołanie do strumienia, zapobiegając wyciekowi po częściowo nieudanym otwieraniu celu podpisu
Version 3.280.0
Nowości
- Wyliczenie kategorii błędów
TPDFlibErrorCategory(ecSuccess/ecStructure/ecSave/ecCrypto/ecGeneric/ecCompliance/ecAcroForm) nałożono na istniejącą liczbową klasyfikacjęLastErrorCode, dzięki czemu wywołujący mogą klasyfikować niepowodzenia bez zapamiętywania zakresów kodów; funkcja jest dostępna przezTPDFlib.LastErrorCategory,TPDFlib.ErrorCategory(Code)iTPDFlib.ErrorMessage(Code) - Dodano kody błędów pól formularza 701-704 — pole nie istnieje, pole tylko do odczytu, brak AcroForm, nieprawidłowa wartość — wraz z czytelnymi komunikatami, aby wywołujący mogli odróżnić "pole jest zablokowane" od "pole nie istnieje" zamiast otrzymywać jedno ogólne niepowodzenie
- Dodano wymuszający zapis wariant
SetFormFieldValueForced, który pomija ochronę tylko do odczytu i jest wewnętrznie używany przezSetFormValues(SkipReadOnly=False), aby import zbiorczy nadal mógł nadpisywać zablokowane pola, gdy wywołujący jawnie wyłączy pomijanie
Zmieniono
SetFormFieldValueustawia teraz po niepowodzeniuLastErrorCodena 701/702/703 — pole nie istnieje, tylko do odczytu lub brak AcroForm — zamiast bez komunikatu zwracać 0; odczytLastErrorCategorynie zużywa stanu, dzięki czemu kategorię można sprawdzić przed pobraniem kodu liczbowego
Version 3.279.0
Nowości
ReplacePageRangeszastępuje wizualną zawartość stron zawartością z innego otwartego dokumentu bez zmiany liczby stron docelowych ani tożsamości ich obiektów, zachowując zakładki, łącza, adnotacje i widżety formularzy już dołączone do tych stron
Zmieniono
- Kopiowanie stron między dokumentami nie tworzy już i nie usuwa dodatkowej strony zastępczej przed importem żądanego zakresu
Version 3.278.0
Nowości
PrintPagesAdvancedstosuje ustawienia liczby kopii, sortowania, druku dwustronnego, orientacji, koloru, jakości, rozmiaru papieru i zasobnika wejściowego do dowolnych wyrażeń zakresuPrintPages, zachowując jeden profil drukarki i jedno zadanie drukowania
Zmieniono
- Zaawansowane ustawienia drukowania są sprawdzane przed rozpoczęciem zadania, dodatnie wartości jakości druku przekraczające cztery nazwane ustawienia są stosowane jako DPI, a identyfikatory papieru lub zasobnika wejściowego mogą używać pełnego dodatniego zakresu obsługiwanego przez odpowiednie pola
DEVMODE
Naprawiono
- Odzyskiwanie uszkodzonych odwołań krzyżowych przekazuje teraz ograniczone odczyty bloków przez tradycyjne przesłonięcie
TStream.Readw Win64, zachowując instrumentację i zachowanie strumieni niestandardowych oraz sekwencyjne operacje wejścia i wyjścia po 64 KiB
Version 3.277.0
Zmieniono
- Odzyskiwanie uszkodzonych odwołań krzyżowych skanuje teraz dane źródłowe w sekwencyjnych blokach po 64 KiB zamiast wykonywać wyszukiwanie dla każdego pasującego znaku, ograniczając pamięć pomocniczą także dla dużych plików PDF i strumieni innych niż pamięciowe
- Odzyskiwanie sprawdza pełne tokeny obiektów pośrednich, pomija dane przypominające obiekty wewnątrz komentarzy, ciągów i strumieni, potwierdza zakończenia strumieni następującym tokenem
endobj, zachowuje nagłówki podzielone między granicami odczytu i wybiera ostatni prawidłowy słownik zwiastuna
Naprawiono
- Odbudowa zwiastuna obsługuje teraz zagnieżdżone słowniki i tekst separatorów wewnątrz ciągów literałowych oraz nie jest już ucinana do pierwszych 2048 bajtów ani pierwszej pozornej pary
>>
Version 3.276.0
Nowości
ActivateWebLinksiActivateWebLinksExskanują istniejący tekst strony raz na stronę i tworzą niepowtarzające się adnotacje łączy URI dla HTTP, HTTPS,www., FTP,mailto:i samych adresów e-mail, z wybieralnymi opcjami wykrywania i obramowania- Generowane łącza używają geometrii dopasowanych znaków, dokładnych czworokątów dla obróconego lub pochylonego tekstu, gdy jest to dozwolone, flag drukowania PDF/A, obsługi postępu i anulowania oraz przywracania wybranej strony; dokumenty Tagged PDF i PDF/UA są chronione przed niepełnymi aktualizacjami drzewa struktury
Zmieniono
SetAutoCreateWebLinkspodczas tworzenia łączy dla nowo rysowanego tekstu używa teraz tego samego detektora uwzględniającego granice i tej samej normalizacji celu, dodając obsługęwww., FTP i samych adresów e-mail
Naprawiono
- Aktualizacja właściwości adnotacji
/Contents, nazwy, daty, tytułu lub tematu nie nadpisuje już podtypu istniejącego słownika działania, dlatego URI i inne działania pozostają prawidłowe po zmianach metadanych adnotacji
Version 3.275.0
Nowości
ExtractPageRangeText,SavePageRangeTextToStreamiSavePageRangeTextToFilewyodrębniają przeanalizowany zakres stron w jednym przebiegu z separatorami stron określonymi przez wywołującego; wyjście strumieniowe i plikowe zapisuje dane UTF-8 przyrostowo, więc duże dokumenty nie wymagają pełnego bufora tekstowego o rozmiarze dokumentuSetPageBoxRangeiRemovePageBoxRangestosują zmiany granic stron w standardowej składni zakresu stron, zachowując stronę wybraną przez wywołującego (caller's selected page)SetPageTransitionRangeiSetPageTransitionRangeExstosują starsze lub rozszerzone przejścia prezentacji do zakresów stron z raportowaniem postępu dla każdej strony i obsługą anulowaniaGeneratePageThumbnailsrenderuje żądane strony bezpośrednio do pamięci wielokrotnego użytku i dołącza ich obrazy/Thumbbez plików pośrednich ani zagnieżdżonych operacji postępu
Version 3.274.0
Naprawiono
- Renderowanie wzorców cieniowania osiowego w GDI+ uwzględnia teraz tablicę PDF
/Extend:SetupGDIPlusPatternprzekazujeWrapModeClamp, gdy rozszerzony jest dowolny koniec, zgodnie z zapleczem Cairo, zamiast zawsze używaćWrapModeTile, dzięki czemu kolory końcowe prawidłowo wypełniają obszar poza osią gradientu
Nowości
- Dymek podpowiedzi przewijania (
"Page N / M") wyświetlany podczas przeciągania pionowego paska przewijania automatycznie znika po 3 sekundach bezczynności przez procedurę obsługiWM_TIMER, dlatego nie pozostaje już widoczny do czasu osobnego zdarzenia przewijania ZoomInStep/ZoomOutStepprzechodzą teraz dokładnie do wartości procentowychActualSize(100%),FitWidthiFitPage, gdy przypadają one między bieżącym powiększeniem a następnym ustawieniem na 14-stopniowej skali, zgodnie z zachowaniem profesjonalnych przeglądarek PDF- Dyskowa pamięć stron przeglądarki zapisuje znacznik wersji kompilacji (
cache.version) i czyści cały katalog główny pamięci po zmianie wersji biblioteki, dlatego aktualizacja kompilacji nigdy nie używa nieaktualnych bitmap wyrenderowanych przez starszą ścieżkę kodu
Version 3.273.1
Naprawiono
- Kontenery strumieni obiektów i obiekty strumieni xref tworzone podczas zapisu powodowały wyciek, ponieważ omijały rejestrację
TPDFStructure.AddObject; oba miejsca wywołania używają teraz fabrykiNewStreamWithDictśledzącej własność, eliminując wyciekTPDFStreamzgłaszany przez moduł uruchamiający testy przyReportMemoryLeaksOnShutdown - Wartość
/Sizestrumienia odwołań krzyżowych była zaniżona o jeden: musi być o jeden większa od najwyższego numeru obiektu w całym pliku, a sam strumień xref jest obiektem pośrednim o numerzeMaxObj+1, dlatego/Sizewynosi terazMaxObj+2
Zmieniono
- Optymalizator wizjerowy strumienia zawartości usuwa teraz także operatory tożsamościowej macierzy tekstu (
1 0 0 1 0 0 Tm), obejmująccmiTmtą samą kontrolą tożsamości sześciu operandów - Odśmiecanie metodą oznaczania i zamiatania zachowuje obiekt 1, czyli słownik parametrów
/Linearized, gdy dokument źródłowy wczytano jako zlinearyzowany, ponieważ słownik ten nie jest przywoływany z/Root, ale musi przetrwać
Version 3.273.0
Nowości
- Pakowanie strumieni obiektów przy zapisie (
TPDFDocument.PackObjectsIntoStreams) zbiera kwalifikujące się pośrednie obiekty niebędące strumieniami, serializuje je do strumieni obiektów PDF 1.5 (/Type /ObjStm) z kompresją Flate i emituje binarny strumień odwołań krzyżowych (/Type /XRef) z wpisami typu 0, 1 i 2, zmniejszając rozmiar zapisanych plików o 10-40% w dokumentach o dużej liczbie obiektów - Dodano flagę
TPDFlibSaveOptions.PackObjectStreamsoraz APITPDFlib.SetPackObjectStreams/GetPackObjectStreams; funkcja jest domyślnie włączona i automatycznie ograniczana wersją PDF — 1.5+ aktywuje pakowanie i strumienie xref, a 1.4 i starsze zachowują tradycyjny tekstowy xref dla zgodności — zaśTPDFlib.GetLastSaveUsedObjectStreamsraportuje, czy ostatni zapis rzeczywiście wykonał pakowanie
Version 3.272.0
Nowości
- Odśmiecanie nieprzywoływanych obiektów pośrednich metodą oznaczania i zamiatania (
TPDFDocument.GarbageCollectUnusedObjects) przechodzi graf obiektów od korzeni zwiastuna (/Root,/Info,/Encrypt) i usuwa każdy nieosiągalny obiekt pośredni, zatrzymując wzrost rozmiaru pliku po usuwaniu stron, gdy zasoby czcionek, zawartości i XObject stają się osierocone - Flaga
TPDFlibSaveOptions.GarbageCollectoraz APITPDFlib.SetGarbageCollect/GetGarbageCollectpozwalają wywołującym włączyć odśmiecanie podczas pełnego zapisu, domyślnie wyłączone dla zgodności wstecznej, aTPDFlib.GarbageCollectObjectswykonuje je natychmiast i zwraca liczbę usuniętych osieroconych obiektów
Version 3.271.0
Nowości
- Optymalizator peephole strumienia treści (
TPDFContentPeepholeOptimizer) przepisuje przeanalizowany strumień treści strony przed kompresją Flate, usuwając semantycznie redundantne operatory PDF: macierze identycznościowecm, puste paryq/Q, puste obiektyBT/ET, ścieżki bez efektu kończone przeznbez przycinania, zduplikowane ustawiacze stanu grafiki (kolor, szerokość linii, cap/join, dash, stan tekstu) oraz martwenpo operatorze rysującym - Flaga
TPDFlibSaveOptions.OptimizeContentStreamsi odpowiadające APITPDFlib.SetOptimizeContentStreams/GetOptimizeContentStreamspozwalają włączyć lub wyłączyć optymalizację wizjerową podczasCompressContent/CompressPage; funkcja jest domyślnie włączona
Zmieniono
TPDFDocument.CompressPageprzekazuje teraz flagę optymalizacji do drzewa stron, aby przebieg wizjerowy działał wewnątrzTPDFPageTree.Compressprzed istniejącą kompresją Flate, łącząc redukcję na poziomie operatorów z kompresją bajtową
Version 3.270.0
Nowości
- Nowa funkcja
PLParseDefaultAppearancedekoduje ciąg bajtów domyślnego wyglądu/DA(ISO 32000-2 12.7.4.3) do nazwy zasobu czcionki, rozmiaru czcionki i koloru wypełnienia, obsługując operatory kolorówrg,kiG, aby generatory wyglądu pól formularzy i adnotacji mogły malować tekst w stylu zamierzonym przez autora
Zmieniono
- Składanie strumienia zawartości strony (
TPDFRenderer.GetContents) łączy teraz wieloczęściowe tablice/ContentsprzezTStringBuilderzamiast powtarzanegoResult := Result + chunk, usuwając wzrost ciągu O(n^2), który spowalniał strony z wieloma częściami strumienia zawartości
Version 3.269.0
Nowości
- Nowe
BeginMarkedContent/EndMarkedContentzapisują wbudowane sekwencje oznaczonej zawartości z właściwościami dostępności (/Alt,/ActualText,/Lang,/E) bezpośrednio na liście właściwości BDC zgodnie z ISO 32000-2 14.9.2–14.9.5, dzięki czemu czytniki ekranu i narzędzia dostępności mogą odczytać tekst zastępczy bez wpisu drzewa struktury - Czytnik adnotacji udostępnia
GetAnnotEffectiveBorder, implementujące pierwszeństwo z Errata #287 — słownik stylu obramowania/BSma pierwszeństwo przed starszą tablicą/Border— i rozpoznające szerokość, styl oraz wzorzec kreskowania w jednym wywołaniu - Dokumenty podpisu udostępniają
GetSignatureSeedValuedo odczytu słownika wartości początkowej (/SV, ISO 32000-2 12.7.5.5 Tables 236–237): wymaganego filtra, dozwolonych SubFilters i metod skrótu, aby podpisujący mógł przestrzegać ograniczeń osadzonych przez autora GetSignatureFieldLockodczytuje słownik początkowy FieldMDP/Lock(Table 238): działanie (/All,/Include,/Exclude) i nazwy pól, które muszą zostać zablokowane podczas podpisywania
Version 3.268.0
Nowości
- Nowa funkcja
PLParsePDFDateanalizuje ciągi dat ISO 32000-2 7.9.4 (D:YYYYMMDDHHmmSSOHH'mm') do lokalnej wartościTDateTime, przestrzegając obowiązkowego prefiksuD:, zależności pól — każde pole tylko przy obecności wszystkich poprzednich — i przesunięcia UT (+/-/Zz opcjonalną minutą po apostrofie), po czym zwraca lokalny odpowiednik udokumentowanej chwili - Dekodowanie ciągów tekstowych (
PLDecodeTextString) rozpoznaje teraz znacznik BOM UTF-8 PDF 2.0 (EF BB BF) zgodnie z 7.9.2.2.1, dzięki czemu metadane utworzone w UTF-8 są prawidłowo dekodowane zamiast błędnie interpretowane jako PDFDocEncoding - Specyfikacje plików udostępniają
GetFileNamez pierwszeństwem PDF 2.0 (Path > UF > F) według Errata #444 oraz metody dostępuGetEmbeddedFileStreamiGetRelatedFilesdla słowników/EFi/RF - Czytniki adnotacji udostępniają funkcje pomocnicze pierwszeństwa wyglądu
GetAnnotNormalAppearance,GetAnnotDefaultAppearanceiGetAnnotOffStateAppearancerealizujące reguły erraty #23/#34/#42/#170 (AP/N is authoritative; DA is the byte-string fallback;Offstate lives under the name Off) - Walidacja PDF/UA raportuje nowy kod 10045, gdy niestandardowy typ struktury nie kończy łańcucha mapowania ról typem standardowym (ISO 14289-1:2014 7.1), z ochroną przed cyklami do głębokości 8
- Audyty czcionek PDF/A i PDF/UA sprawdzają teraz, czy osadzone czcionki CIDFontType2 zawierają
/CIDToGIDMap, którego wartością jest nazwaIdentitylub strumień, a nie tylko czy wpis istnieje (ISO 32000-1 9.7.4)
Zmieniono
- Wyszukiwanie w drzewie nazw (
NameTreeLookup) przed przejściem do skanowania liniowego wykonuje teraz wyszukiwanie binarne w posortowanej tablicyNameszgodnie z ISO 32000-2 7.9.6, zmieniając złożoność dużych wyszukiwań EmbeddedFiles/JavaScript/Dests z O(n) na O(log n) w plikach zgodnych - Zbiór standardowych typów struktury PDF/UA rozszerzono o elementy PDF 2.0 (
Artifact,DocumentFragment,FENote,MarkedContent,Title), aby kontrole zakazu ponownego mapowania i zakończenia łańcucha map ról rozpoznawały pełny słownik znaczników
Version 3.267.0
Nowości
EnumPageContentStatesExmoże rekurencyjnie wyliczać instrukcje Form XObject z konfigurowalną głębokością, ochroną przed cyklami i kolejnością wykonywania w głąb- Migawki zawartości udostępniają teraz tożsamość drzewa wywołań, informacje o strumieniu zawierającym i nadrzędnym XObject, tożsamość zakresu zasobów, stan przechodzenia Form oraz liczby potomków
- Samodzielne moduły śledzenia zawartości mogą rejestrować czcionki o określonym zakresie oraz inicjować izolowany stan wykonania Form z konkatenacją macierzy i przycinaniem do prostokąta ograniczającego
Zmieniono
- Rekurencyjne śledzenie zawartości niezależnie wybiera każdy słownik zasobów Form, dziedziczy zasoby wywołujące dla zgodnych starszych formularzy, zachowuje odziedziczoną tożsamość czcionki i przechowuje zdekodowane programy Form w pamięci podręcznej między powtarzanymi wywołaniami
Version 3.266.0
Nowości
- Fragmenty tekstu zwracane przez
GetTextRunszawierają teraz początek glifu (OriginX/OriginY) i pełne składowe macierzy tekstu (Tm11/Tm12/Tm21/Tm22/TmDX/TmDY) przechwycone przez odtworzenie BT, Td, TD, Tm i T* wraz z operatorami wyświetlania, dzięki czemu odbiorcy mogą lokalizować glify bez osobnego przebiegu przetwarzania tekstu - Dekodowanie cieniowania siatkowego przekazuje teraz przestrzenie kolorów Lab, CalRGB i CalGray do menedżera kolorów zamiast zastępować je czernią, zapewniając prawidłowe wypełnienia swobodnych płatów i płatów Coonsa innych niż DeviceRGB
- Redagowanie emituje teraz rzeczywistą adnotację
/Subtype /Redactz/Rect, kolorem wnętrza/ICi opcjonalnym tekstem nakładki, oprócz istniejącego usuwania zawartości, dzięki czemu przeglądarki obsługujące redagowanie oznaczają oczyszczony region - Operacje biblioteki emitują ustrukturyzowane rekordy dziennika na granicach wczytywania i zapisywania przez wcześniej nieaktywny
Logger, ze znacznikami czasu UTC ISO-8601 i przechowywanym w pamięci obiektem zapisu plikuTStreamWriter, który nie otwiera już pliku dziennika dla każdego wiersza - Nowy zestaw
Tests.Memorychroni cykle tworzenia, rysowania, zapisywania i zwalniania orazNewDocumentprzed regresjami sterty, a konsolowy moduł uruchamiający testy włącza terazReportMemoryLeaksOnShutdown - Interpretacja EMF zlicza teraz nieznane lub prywatne rekordy przez właściwość
UnknownRecordCount, aby niewidoczne luki w metaplikach były obserwowalne
Zmieniono
- Wyszukiwanie kluczy słownika (
TPDFDictionary.FindIndexByKeyName) tworzy leniwy indeks skrótów z adresowaniem otwartym dla słowników zawierających ponad 16 wpisów, zmieniając liniowe skanowanie dominujące w wyszukiwaniu Resources/ColorSpace/Font/ExtGState mechanizmu renderującego w sondę O(1) - Konwersja gamma sRGB (
XYZ2RGB) używa współdzielonej tabeli wyszukiwania z 4096 wpisami zamiast trzech wywołańPower(x, 1/2.4)na piksel, a potęgowanie do sześcianu Lab-to-XYZ korzysta teraz z bezpośrednich mnożeń; oba działania stanowią dominujący koszt na piksel podczas dekodowania obrazów Lab lub opartych na ICC - Wyszukiwanie strony (
TPDFPageTree.GetPage) przy ponownym dostępie zwraca słownik strony z pamięci podręcznej zamiast za każdym razem ponownie przechodzić drzewo stron - Dyspozytor operatorów strumienia zawartości (
ContentOperatorFromName) grupuje 73 operatory według pierwszego bajtu, ograniczając liniowe skanowanie każdego tokenu do krótkiego porównania pozostałości - Audyt przestrzeni kolorów PDF/A przechodzi teraz rekurencyjnie do przestrzeni bazowej lub alternatywnej Indexed, Separation, DeviceN i ICCBased do głębokości 8, dlatego ukryte przekształcenie tint DeviceCMYK lub sama nazwa Lab jest zgłaszana zamiast bezgłośnie akceptowana
- Finalizacja czcionki kształtowanej przechodzi teraz zbiór użytych glifów zapisany podczas rysowania zamiast czterokrotnie skanować wszystkie 65536 miejsc glifów przy każdym zapisie
- Procedury ucieczki ciągów — dla ciągów literałowych, XFDF, stempli i rozwijania tokenów zmiennych — tworzą wynik przez
TStringBuilderlub przydział dwuprzebiegowy, usuwając konkatenację O(n^2) z intensywnie używanych ścieżek zapisu i eksportu formularzy - Szyfrowanie i odszyfrowywanie strumieni AES ponownie używa bufora porcji między iteracjami pętli zamiast przydzielać go dla każdego bloku
- Analiza glifów złożonych w analizatorze TrueType powiększa tablicę składowych geometrycznie zamiast o jeden element naraz
- Metoda
ReadBitscieniowania siatkowego odczytuje minimalną liczbę obejmujących bajtów w jednym przebiegu, aWriteBitswstępnie ustala rozmiar bufora wyjściowego, eliminując ponowne przydzielanie dla każdego bitu - Punkt sterujący okręgu obiektu rysującego używa wstępnie obliczonej stałej kappa, a podnoszenie łuków do kwadratu korzysta z
SqrzamiastPower
Naprawiono
- Naprawiono błąd kompilacji poza Windows w
PDFlibParallel, w którym sygnatura treści zastępczejPDFlibRenderPagesParallelnie odpowiadała deklaracji interfejsu
Version 3.265.0
Nowości
- Dodano 59 konsolowych przykładów C++Builder, aby zrównać zestaw przykładów C++Builder z Delphi, zwiększając ich liczbę z 33 do 92 i obejmując te same obszary API
- Rozszerzono Demo/C++Builder/index.html z 35 do 92 pozycji, dodając sekcje Navigation, Color & ICC, Barcode & media oraz Structure & compliance
Naprawiono
- Naprawiono wszystkie 33 istniejące pliki cbproj C++Builder, w których na liście DelphiCompile brakowało 20 modułów biblioteki (PDFlibMeshShading, PDFlibGraphics, PDFlibWindows, PDFlibParallel, PDFlibLogger, PDFlibMail, PDFlibViewer i inne), co uniemożliwiało kompilowanie wszystkich przykładów C++Builder
Version 3.264.0
Nowości
- Migawki stanu grafiki zawartości rozpoznają teraz operandy
Dojako obrazy, formularze lub PostScript XObject i raportują ich nazwy zasobów, numery obiektów oraz przekształcone granice - Migawki Form udostępniają pierwotne
/Matrixi/BBoxwraz ze wskaźnikami zasobu, grupy, grupy przezroczystości i formularza referencyjnego - Samodzielne moduły śledzenia zawartości mogą wstępnie rejestrować strumienie XObject przez
RegisterXObject
Zmieniono
- Wyliczanie stanów zawartości strony wstępnie kompiluje teraz zasoby XObject wybranej strony i oblicza granice wywołań ze wszystkich czterech przekształconych narożników
Version 3.263.0
Nowości
- Migawki stanu grafiki zawartości udostępniają teraz granice bieżącej ścieżki, bieżący punkt, złożoność ścieżki, oczekujące reguły przycinania i efektywne granice przycięcia
- Samodzielne moduły śledzenia zawartości mogą zainicjować jawną granicę przycinania przez
SetInitialClipBounds
Zmieniono
- Wyliczanie stanów zawartości strony uwzględnia teraz opóźnione przycinanie
WiW*, dokładne przekształcone ekstrema sześcienne, przywracanie przycinaniaq/Qi graniceCropBoxwybranej strony
Version 3.262.0
Nowości
- Migawki stanu grafiki zawartości raportują teraz tryb pisania czcionki, dokładne przesunięcie tekstu dla każdej instrukcji oraz informację, czy rozpoznano metryki czcionki
- Samodzielne moduły śledzenia zawartości mogą dostarczać pomiary czcionek przez
OnMeasureText
Zmieniono
- Wyliczanie stanu zawartości strony przesuwa teraz macierze tekstu dla
Tj,TJ,'i"zgodnie z metrykami czcionek prostych lub złożonych, skalowaniem poziomym, odstępami i regułami pisania pionowego
Version 3.261.0
Nowości
- Śledzenie stanu grafiki zawartości może teraz rozpoznawać zasoby strony
ExtGState, w tym przezroczystość, mieszanie, nadruk, maski miękkie, sterowanie urządzeniem i osadzone odwołania do czcionek TPDFContentStateTrackermoże wstępnie rejestrować zewnętrzne słowniki stanu grafiki na potrzeby samodzielnej analizy programu zawartości
Zmieniono
- Parametry zewnętrznego stanu grafiki są teraz stosowane kumulatywnie i uczestniczą w pełnych migawkach zapisu i przywracania
q/Q
Version 3.260.0
Nowości
- Dodano jednoprzebiegowe śledzenie efektywnego stanu grafiki dla ustrukturyzowanych programów zawartości i pełnych wybranych stron
- Migawki udostępniają CTM, macierze tekstu, styl linii, wzorzec kreskowania, kolory, stan tekstu i głębokość stosu stanu grafiki przed każdą instrukcją lub po niej
Zmieniono
- Wyliczanie umieszczeń obrazów odwzorowuje teraz wszystkie cztery narożniki kwadratu jednostkowego, zapewniając prawidłowe granice po obrocie i pochyleniu
Version 3.259.0
Nowości
- Dodano typowane funkcje pomocnicze dla czasu, wzorców specjalnych i dowolnych masek interaktywnych pól formularzy
- Dodano walidację zakresu z niezależnie opcjonalnymi granicami bezpiecznymi dla zera
- Dodano obliczenia sumy, średniej, iloczynu, minimum i maksimum pól z automatyczną rejestracją kolejności obliczeń
Bezpieczeństwo
- Generowane wartości ciągów JavaScript stosują teraz sekwencje ucieczki dla cudzysłowów, ukośników odwrotnych, znaków sterujących i separatorów wierszy JavaScript
Version 3.258.0
Nowości
- Dodano typowane tworzenie działań
SetOCGStatedla zdarzeń pól formularzy, istniejących działań i łańcuchów działań - Działania zawartości opcjonalnej zachowują zmiany stanu od lewej do prawej, powtarzające się grupy i opcjonalne ustawienie relacji przycisków radiowych
Zmieniono
- Wyliczanie działań zawartości opcjonalnej zwraca teraz kanoniczne uchwyty grup, które można bezstratnie przekazać z powrotem do API zapisu
Version 3.257.0
Nowości
- Dodano pełny jawny zapis zdalnych miejsc docelowych ze stronami liczonymi od zera, wszystkimi standardowymi typami dopasowania, opcjonalnymi wartościami XYZ i trójstanowymi ustawieniami okna
- Dodano pełny zapis działań uruchamiania dla przenośnych plików, parametrów Windows, katalogów domyślnych oraz operacji otwarcia lub drukowania
- Istniejące uchwyty działań mogą teraz aktualizować te dane lub dołączać je do łańcuchów działań bez powielania API właściwego dla kontenera
Bezpieczeństwo
- Konstruktory zdalnego przejścia i działania uruchamiania odrzucają teraz tryb PDF/A przed zmodyfikowaniem łańcucha działań
Version 3.256.0
Nowości
- Inspekcja zdalnego działania przejścia raportuje teraz nazwane i jawne miejsca docelowe, liczone od zera strony docelowe, typy dopasowania, współrzędne i wartości powiększenia
- Inspekcja działania uruchamiania raportuje teraz parametry aplikacji Windows, katalogi domyślne oraz operacje otwarcia lub drukowania
- Informacje o działaniu odróżniają brak ustawienia
/NewWindowod jawnej wartości false i rozpoznają cele oparte na tablicy
Version 3.255.0
Nowości
- Dodano typowane konstruktory działań zdalnego nazwanego miejsca docelowego i uruchamiania aplikacji zewnętrznej
- Konstruktory działań URI obsługują teraz żądania mapowania współrzędnych przez standardową flagę
/IsMap - Nowe rodzaje działań działają w interfejsach API cyklu życia, pól formularzy i działań łańcuchowych przez istniejący rozszerzony interfejs konstruktora
Version 3.254.0
Nowości
- Dodano 14 przykładów Delphi pokrywających obszary API biblioteki, które nie miały dedykowanego przykładu: OutlineBuilder, NamedDestinations, DocumentActions, EmbeddedFiles, LinearizeDemo, BarcodeGallery, XfaFields, TaggedPDF, OutputIntent, HtmlTextFlow, RichMediaAnnotations, MailSendDemo, TextBlockExtraction i PadesDssDemo
- Dodano do indeksu przykładów Delphi sekcje Navigation, Color & ICC, Barcode & media oraz Structure & compliance, zwiększając łączną liczbę pozycji z 56 do 92
- Dodano przewodniki Readme.en-us.html dla 20 przykładów, które wcześniej ich nie zawierały
Zmieniono
- Zastosowano projektowy plik Formatter.config do wszystkich źródeł przykładów Delphi, aby odstępy operatorów, wcięcia i wielkość liter słów kluczowych przestrzegały jednego stylu, oraz ustawiono NewLineBeforeThen na False, aby If...Then pozostawało w jednym wierszu
- Wzmocniono obsługę błędów w klasycznych przykładach GUI: wartości zwracane przez SaveToFile są teraz konsekwentnie sprawdzane, cykle życia TPDFlib i obiektów pomocniczych zawsze chronią bloki try/finally, a komunikaty o niepowodzeniu zawierają LastErrorCode
Naprawiono
- Naprawiono odwróconą interpretację wyniku SaveToFile w ImageToPdf, która traktowała powodzenie jako błąd, oraz uniemożliwiono AddTrueTypeSubsettedFont otwieranie nieaktualnego pliku po nieudanym zapisie
- Naprawiono wycieki zasobów w CreateWithImageToStream, DoInTheStream, CanvasText, ExtractText, ExtractImage, PdfDecrypt, PdfEncrypt i PdfPermission, gdzie instancje TPDFlib, TStream, TBitmap, TOpenDialog lub TStringList mogły pozostać niezwrócone na ścieżce wyjątku
- Usunięto martwy kod w AddFormattedTitle — nieużywany przydział RectParts i zbędny blok try/except wokół StrToFloatDef — oraz w MultiFunction, gdzie wywołanie SetTextSize było nadpisywane
Version 3.253.0
Nowości
- Dodano typowane szczegóły działań dla wątków, dźwięku, filmu, zawartości opcjonalnej, prezentacji, przejść i widoków 3D
- Dodano wyszukiwanie uchwytów działań wielokrotnego użytku i uporządkowane wyliczanie stanów zawartości opcjonalnej
- Dodano pełne rekordy przejść PDF obejmujące style zastąpienia, Fly, Push, Cover, Uncover i Fade
Naprawiono
- Przejścia Wipe i Glitter zapisują teraz kierunek w
/Di, odczytują czas wyświetlania z słownika strony i czyszczą zarówno wpis przejścia, jak i czasu - Standardowe style przejść sprzed PDF 1.5 nie wymuszają już wersji wyjściowej PDF 1.5
Version 3.252.0
Nowości
- Dodano jednoprzebiegowe wykrywanie działań pól formularzy z typowanymi szczegółami działań dla wyzwalaczy głównych, widżetów i pól
- Dodano pełne wyliczanie kolejności obliczeń, wyszukiwanie według pola i usuwanie dla formularzy interaktywnych
- Rozszerzono zbiorcze migawki pól formularzy o kolejność obliczeń i liczbę działań
Zmieniono
- Wyzwalacze cyklu życia widżetów obsługują teraz działania otwarcia, zamknięcia, pokazania i ukrycia strony wraz z wymaganym przetwarzaniem wersji PDF 1.5
Version 3.251.0
Nowości
- Dodano jednoprzebiegowe wyliczanie nazwanych miejsc docelowych ze starszych wpisów katalogu i nowoczesnych drzew nazw, z rozpoznanymi parametrami strony i widoku
- Dodano usuwanie nazwanych miejsc docelowych, pełne podpisy przycisków, położenie tekstu przycisku i nazwy odwzorowania pól formularzy
- Rozszerzono zbiorcze migawki pól formularzy o nazwy odwzorowania, podpisy przycisków i położenie tekstu przycisku
Naprawiono
- Edycja drzewa nazw obsługuje teraz bezpośrednie wartości miejsc docelowych i używa jednoznacznego kodowania indeksów wielowęzłowych
Version 3.250.0
Nowości
- Dodano jednoprzebiegowe migawki pól formularzy z tożsamością, typem, stroną, flagami, wartościami i stanem Choice pola
- Dodano typowane zapytania o flagi pól Choice oraz walidowane metody dostępu do wybranego indeksu i indeksu pierwszego widocznego elementu
Naprawiono
- Pola Choice z pojedynczym wyborem nie zachowują już tablicy wielokrotnego wyboru
/I, a przełączenie z wyboru wielokrotnego na pojedynczy zastępuje teraz starą tablicę/Vwartością ciągu
Version 3.249.0
Nowości
- Dodano jednoprzebiegowe stanowe przechodzenie wyników wyszukiwania tekstu, aby aplikacje mogły iterować trafienia z pamięci podręcznej bez dwukrotnego wyodrębniania stron
- Dodano zbiorczy eksport wartości formularza i stosowanie według nazwy z opcjonalną ochroną pól tylko do odczytu
Version 3.248.0
Nowości
- Dodano zachowywane zaznaczenia przeglądarki z geometrią w przestrzeni strony, wyodrębnionym tekstem, wyliczaniem, czyszczeniem i zdarzeniem zaznaczenia prostokątnego z możliwością sprzeciwu
- Dodano dokładne przechwytywanie bitmapy bieżącego obszaru widoku i zapis do pliku wraz z trwałymi nakładkami
Version 3.247.0
Nowości
- Dodano niezależne elementy sterujące przeglądarki dla edycji formularzy przez użytkownika i aktywowania adnotacji
- Dodano konfigurowalny kolor pierwszego planu edytorów pól tekstowych i wyboru formularzy
Version 3.246.0
Nowości
- Dodano typowane style zakończeń linii, kolory wnętrza kształtów, tryby wyróżniania łączy, wyrównanie FreeText, stan otwarcia adnotacji Text i symbole Caret
- Metody ustawiające adnotacje sprawdzają zgodne podtypy i automatycznie podnoszą minimalną wersję PDF, gdy jest to wymagane
Version 3.245.1
Naprawiono
- Poprawiono rozmiar strony eksportu FastReport i układ pól memo, aby raporty A4 zachowywały zamierzoną skalę, tekst pozostawał w granicach memo, a nieskonfigurowane ramki memo były ukryte
Version 3.245.0
Nowości
- Dodano
OnPassword, aby aplikacje mogły podać inne hasło po odrzuceniu początkowych danych uwierzytelniających przez zaszyfrowany dokument - Ponawianie prób podania hasła działa teraz spójnie podczas wczytywania z pliku, strumienia i ciągu, udostępnia numer następnej próby i pozwala procedurze obsługi anulować operację
Bezpieczeństwo
- Łączna liczba wywołań zwrotnych hasła jest ograniczona do szesnastu, a każda ponowna próba korzysta ze świeżego analizatora składni i nowego stanu odszyfrowywania
Version 3.244.0
Nowości
- Dodano
SetXMPPropertyExdo bezpiecznego zapisywania właściwości skalarnych w przestrzeniach nazw XMP określonych przez wywołującego - Niestandardowe wartości XMP są kodowane za pośrednictwem modelu DOM XML, wielokrotne zapisy zastępują właściwość w odpowiedniej przestrzeni nazw, a nieprawidłowe lub zastrzeżone nazwy XML są odrzucane
Version 3.243.0
Nowości
- Dodano typowane akcje cyklu życia dokumentu dla wyzwalaczy przed zamknięciem, przed zapisem, po zapisie, przed drukowaniem i po drukowaniu
- Dodano typowane akcje otwierania i zamykania strony ze wspólną obsługą konstruktorów akcji URI, nazwanych, JavaScript, formularzy i miejsc docelowych
- Dodano metody inspekcji i usuwania akcji dla każdego wyzwalacza cyklu życia dokumentu i strony
Version 3.242.0
Nowości
- Dodano
SaveChanges, aby dopisywać zmiany do pierwotnie wczytanego pliku i automatycznie ponownie wczytywać zaktualizowany łańcuch xref na potrzeby kolejnych zapisów przyrostowych SaveChangessprawdza hasło ponownego wczytania przed zapisem i zachowuje wybrany publiczny uchwyt dokumentu po ponownym wczytaniu
Zmieniono
AppendToFileodrzuca teraz cel, którego bieżąca długość różni się od wczytanego źródła, zapobiegając dopisywaniu nieaktualnych przesunięć przyrostowych do pliku zmienionego zewnętrznie
Version 3.241.0
Nowości
- Dodano
GetLastOutlineiGetLastChildOutlinezapewniające bezpośredni dostęp do końca listy zakładek - Dodano
GetOutlineChildCountiGetOutlineSiblingIndexdo lekkiej inspekcji drzewa zakładek bez przydzielania pełnej migawki drzewa
Version 3.240.0
Nowości
- Dodano
SaveAllAttachmentsExz zasadami rozwiązywania konfliktów przez zastąpienie, pominięcie lub automatyczną zmianę nazwy oraz wywołaniem zwrotnym nazewnictwa dla każdego załącznika - Eksport załączników redukuje teraz żądane nazwy do bezpiecznych nazw końcowych i chroni zastrzeżone nazwy urządzeń systemu Windows
Naprawiono
- Naprawiono sytuację, w której
SaveAllAttachmentskończyło działanie bez zapisywania plików, ponieważ migawka załączników była zliczana, lecz nie była przydzielana ani wypełniana
Version 3.239.0
Nowości
- Dodano
OnPageMouseDown,OnPageMouseMoveiOnPageMouseUp, dzięki czemu hosty Viewer otrzymują numery stron liczone od jednego oraz współrzędne punktowe PDF mierzone od góry, niezależnie od powiększenia, przewijania i obrotu widoku - Dodano
RegionAtClientPoint,ActiveRegioniOnActiveRegionChange, aby rozróżniać łącza, adnotacje niebędące łączami oraz pola formularza, gdy wskaźnik wchodzi w ich obszar lub go opuszcza - Dodano
CreatePDFlibViewerDefaultPopupMenuiInstallPDFlibViewerDefaultPopupMenu, które łączą istniejące klasy akcji Viewer w gotowe menu kontekstowe do kopiowania, powiększania, dopasowania, obracania, nawigacji, zapisywania i drukowania
Version 3.238.0
Nowości
- Dodano
OnOperationProgressz typowanym rodzajem operacji, fazą cyklu życia, bieżącą i całkowitą liczbą jednostek, wartością procentową oraz tekstem szczegółowym, zachowując klasyczne procentowe wywołanie zwrotneOnProgress - Punkty wejścia wczytywania, zapisywania, wyszukiwania, scalania i renderowania stron dla plików, strumieni i ciągów raportują teraz fazę rozpoczęcia i zakończenia; operacje z postępem pośrednim raportują również
opRunning - Ustawienie
Cancelw fazieopStartinglubopRunningaktywuje istniejący stanAbort, zapewniając jedną ścieżkę anulowania dla dotychczasowych i nowych wywołujących
Naprawiono
LoadFromFilezachowuje teraz kod błędu 404 dla nieprawidłowego hasła, zamiast po czyszczeniu zastępować go ogólnym błędem wczytywania 401
Version 3.237.0
Nowości
- Dodano
SearchTextEachiTPDFlibSearchHitEvent, aby natychmiast emitować każde trafienie tekstowe bez przydzielania ani wymiarowania tablicy wyników SearchTextiSearchTextEachraportują teraz postęp stron przezOnProgressoraz respektują zarównoAbort, jak i anulowanie w wywołaniu zwrotnym; anulowanie w wywołaniu zwrotnym korzysta z istniejącego stanu przerwania aż do wywołaniaResetAbort- Panel wyszukiwania Viewer i warstwa wyróżniania wyników korzystają teraz z interfejsu strumieniowego w jednym przebiegu, usuwając wcześniejsze limity 256 wierszy i 512 wyróżnień
Naprawiono
- Wyszukiwanie całych słów przechodzi teraz dalej po wcześniejszym wystąpieniu podciągu w tym samym bloku tekstu, aby znaleźć późniejsze trafienie z prawidłowymi granicami
Version 3.236.0
Nowości
- Dodano
GetPrinterCapabilitiesdo przechwytywania bieżącej migawki sterownika drukarki bez rozpoczynania zadania drukowania - Typowany wynik
TPDFlibPrinterCapabilitiesobejmuje identyfikatory, nazwy i wymiary papieru w milimetrach, identyfikatory i nazwy podajników, obsługę druku dwustronnego, koloru, orientacji poziomej i sortowania, port drukarki oraz maksymalną liczbę kopii zgłaszaną przez sterownik - Sterowniki pomijające metadane papieru lub podajnika nadal zwracają pozostałe możliwości z pustymi tablicami, natomiast nieprawidłowe nazwy drukarek zwracają całkowicie wyczyszczoną migawkę
Version 3.235.0
Nowości
- Dodano
SendDocumentByMaildo zapisywania wczytanego dokumentu w tymczasowym pliku PDF i dostarczania go jako załącznika SMTP za pośrednictwem wbudowanego dostawcy Windows CDO - Dodano zliczany referencyjnie punkt rozszerzenia
IPDFlibMailProvider, aby aplikacje mogły dostarczać inny transport, obsługiwać hosty inne niż Windows i testować przepływy pocztowe bez dostępu do sieci - Każde wysłanie korzysta z odizolowanego katalogu tymczasowego, oczyszcza wyświetlaną nazwę załącznika i usuwa zarówno plik PDF, jak i jego katalog po powrocie dostawcy;
GetLastMailErrorraportuje błędy walidacji, zapisu, transportu i platformy
Version 3.234.0
Nowości
- Dodano symbole zastępcze zmiennych do tekstu stempla, nagłówka i stopki:
<%PageNo%>,<%TotalPages%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>i<%LongTime%>są rozwijane dla każdej strony obok klasycznych tokenów & - Każdy niestandardowy symbol zastępczy
<%name%>jest rozwiązywany przez nowe zdarzenieOnCalcVariable, które otrzymuje nazwę i numer strony oraz dostarcza zamiennik — numery kolejne, kody partii i pola klienta można stemplować bez wstępnego przetwarzania tekstu; bez procedury obsługi nieznane symbole pozostają bez zmian
Version 3.233.0
Nowości
- Dodano wykrywanie indeksu górnego i dolnego podczas wyodrębniania tekstu: nowe
GetTextBlockVAlignraportuje klasyfikację względem linii bazowej każdego wyodrębnionego bloku tekstu (0 = linia bazowa, 1 = indeks górny, 2 = indeks dolny) w odniesieniu do jego linii wizualnej, umożliwiając rozpoznawanie wzorów chemicznych, wykładników i znaczników przypisów (klasa 'baseline') - Blok jest klasyfikowany jako indeks górny lub dolny, gdy jest wyraźnie mniejszy od dominującego tekstu w wierszu, a jego środek pionowy znajduje się powyżej lub poniżej środka dominującego tekstu w granicach jednej wysokości tekstu (miara 'text height')
Version 3.232.0
Nowości
- Dodano dzielenie na słowa na poziomie znaków podczas wyodrębniania tekstu:
SetTextExtractionOptions(17, 1)ponownie dzieli przebiegi wyświetlania tekstu bez spacji w miejscach, gdzie krok przesunięcia pojedynczego znaku jest znacznie szerszy niż mediana przesunięcia glifów przebiegu — dokumenty rysujące całe wiersze jednym operatorem i używające odstępów kerningu zamiast spacji są teraz wyodrębniane jako osobne słowa w trybach 7 i 9–11 funkcjiGetPageText(przebieg 'show-text') - Tablice przesunięć pozostają wyrównane z poszerzonym tekstem, dzięki czemu czworokąty bloków i wyniki szerokości poszczególnych znaków pozostają spójne
Version 3.231.0
Nowości
- Dodano eksport tekstu w stałej siatce zachowujący układ:
GetPageText(11)odwzorowuje geometrię strony na siatkę znaków o stałej szerokości — wiersze są grupowane według linii bazowej, każdy blok trafia do kolumny obliczonej ze średniej szerokości znaku, a krótsze komórki są dopełniane rzeczywistymi spacjami — dzięki czemu tabele i formularze zachowują wizualne wyrównanie w przeglądarkach zwykłego tekstu, terminalach i porównaniach bez polegania na tabulatorach - Strona referencyjna
GetPageTextopisuje teraz tryby kolejności czytania (9), tabeli rozdzielanej tabulatorami (10) i stałej siatki (11)
Version 3.230.0
Nowości
- Dodano usuwanie dzielenia wyrazów podczas wyodrębniania tekstu:
SetTextExtractionOptions(16, 1)ponownie łączy słowa podzielone łącznikiem między wierszami ("inter-" na końcu wiersza, po którym występuje "national", staje się "international") w wynikach zorientowanych na wiersze trybów 7 i 9 funkcjiGetPageText - Heurystyka scala tylko wtedy, gdy przed łącznikiem znajduje się litera, a następny wiersz zaczyna się małą literą, dzięki czemu zakresy liczbowe, nazwy własne i wielkie litery rozpoczynające zdanie zachowują łączniki
Version 3.229.0
Nowości
- Dodano zdarzenie
OnBeforeSnapshotdo kontrolkiTPDFlibViewer: jest wyzwalane przed przechwyceniem przeciąganego obszaru migawki, a ustawienie Handled anuluje domyślne przechwytywanie do schowka, aby aplikacje mogły samodzielnie przetworzyć obszar - Udostępniono
PrefetchEnabled: proces roboczy wstępnego renderowania w tle można teraz wyłączać i włączać w czasie wykonywania; proces zatrzymuje się natychmiast i uruchamia ponownie dla otwartego dokumentu - Udostępniono
DiskCacheMaxDocuments: liczba dokumentów zachowywanych przed czyszczeniem w międzyseryjnej pamięci podręcznej stron na dysku jest teraz konfigurowalna (domyślnie 10)
Version 3.228.0
Nowości
- Dodano precyzyjną nawigację do kontrolki
TPDFlibViewer:GoToPagePointprzechodzi do strony i przewija podany punkt strony do lewego górnego rogu obszaru widoku, dzięki czemu miejsca docelowe łączy i trafienia wyszukiwania pojawiają się dokładnie w widoku - Dodano programowe sterowanie przewijaniem: krokowe przewijanie pikseli przez
ScrollBy, właściwościHScrollPos/VScrollPosdo odczytu i zapisu, idealne do synchronizowania dwóch przeglądarek obok siebie nad tym samym dokumentem, orazGetScrollPosForPageraportujące kotwicę przewijania każdej strony w trybie ciągłym (właściwość 'scroll anchor') - Dodano publiczne mosty współrzędnych
ClientPointToPageiPageRectToClientRect, które przekształcają piksele klienta i przestrzeń użytkownika strony z uwzględnieniem powiększenia, obrotu i przewijania; wewnętrzne wykrywanie trafień współdzieli teraz dokładną geometrię ścieżki rysowania i działa również w kontrolkach bez elementu nadrzędnego, używanych bez interfejsu
Version 3.227.0
Nowości
- Dodano zdarzenia stanu widoku do kontrolki
TPDFlibViewer:OnZoomChangejest wyzwalane przy każdej zmianie efektywnego powiększenia — jawnym powiększeniu, kroku ustawienia wstępnego, ponownym obliczeniu trybu dopasowania po zmianie rozmiaru, obrocie lub zmianie DPI — aOnHScroll/OnVScrollśledzą położenie przewijania, dzięki czemu paski narzędzi i wskaźniki stanu pozostają zsynchronizowane bez odpytywania - Przeciąganie uchwytu pionowego paska przewijania wyświetla teraz pływający dymek "Page N / M" z podglądem strony, na której znajdzie się widok — jest to szczególnie pomocne w długich dokumentach; właściwość
ScrollHintEnabled, domyślnie włączona, pozwala go wyłączyć
Version 3.226.0
Nowości
- Ukończono cykl wypełniania i zapisywania w kontrolce
TPDFlibViewer:SaveToFileiSaveToStreamzapisują wyświetlany dokument — wraz z zatwierdzonymi zmianami formularza — na dysku lub w strumieniu, najpierw zatwierdzając każdy otwarty edytor miejscowy - Wielowierszowe pola tekstowe są teraz edytowane w prawidłowym edytorze wielowierszowym: Enter wstawia podział wiersza, Ctrl+Enter zatwierdza, a Escape anuluje; pola jednowierszowe zachowują zwykłe zatwierdzanie klawiszem Enter
- Tab i Shift+Tab przełączają edytor miejscowy między edytowalnymi polami tekstowymi i wyboru dokumentu, podążając za stroną każdego pola;
FocusNextFormFieldudostępnia tę samą nawigację programowo (kolejność 'document order' i strona 'field page')
Version 3.225.0
Nowości
- Dodano powiększanie według drabiny ustawień wstępnych do kontrolki
TPDFlibViewer:ZoomInStepiZoomOutStepprzyciągają powiększenie do standardowej sekwencji (1, 5, 10, 25, 50, 75, 100, 150, 200, 400, 800, 1600, 2400, 3200 procent), rozpoczynając od aktualnie obowiązującego powiększenia, aby tryby dopasowania przechodziły naturalnie; akcje powiększania na pasku narzędzi używają teraz tej samej drabiny - Ctrl+kółko myszy zmienia teraz powiększenie według drabiny ustawień wstępnych, a samo kółko nadal przewija
- Dodano skróty klawiaturowe: Ctrl+'+'/'-' zmienia powiększenie krokowo, Ctrl+1/2/3 przełącza między rozmiarem rzeczywistym, dopasowaniem szerokości i dopasowaniem strony, a Shift+Up/Down przechodzi do pierwszej i ostatniej strony
Version 3.224.0
Nowości
- Dodano
CreateSelfSignedCertificatez punktami wejścia Delphi, DLL i ActiveX: generuje samopodpisany certyfikat RSA — podpis SHA-256, konfigurowalny podmiot, okres ważności i długość klucza — oraz eksportuje go wraz z kluczem prywatnym do chronionego hasłem pliku PFX, gotowego dlaSignFilei interfejsów procesu podpisywania, dzięki czemu przepływy podpisywania można budować i testować bez zewnętrznego urzędu certyfikacji - Certyfikat jest tworzony w jednorazowym kontenerze kluczy usuwanym po eksporcie; materiał klucza pozostaje tylko w pliku PFX. Certyfikaty samopodpisane są przeznaczone do testów i dokumentów wewnętrznych — przeglądarki oznaczają je jako niezaufane, jeśli nie zostaną jawnie zainstalowane
Version 3.223.0
Nowości
- Dodano
TPDFlibShapeWatermarkdo komponowalnej warstwy znaków wodnych: prostokąty, okręgi, elipsy, wielokąty, łańcuchy krzywych Beziera i linie proste są nanoszone na zakres stron z kolorami wypełnienia i obrysu, szerokością linii oraz kryciem przez ten sam punkt wejściaApplyWatermarkco tekstowe i graficzne znaki wodne - Prostokąty, okręgi i elipsy pobierają rozmiar z Width/Height; wielokąty, krzywe i linie pobierają geometrię z
SetPoints— lokalnych par X,Y — dzięki czemu dziewięciopunktowa siatka Position i niestandardowe rozmieszczenie dotyczą każdego rodzaju kształtu; geometria zdegenerowana, czyli zbyt mała liczba punktów, jest odrzucana
Version 3.222.0
Nowości
- Dodano
AddLinkToEmbeddedPDFz punktami wejścia Delphi, DLL i ActiveX: aktywny obszar strony otwiera plik PDF osadzony w bieżącym dokumencie według jego nazwy EmbeddedFiles i przechodzi do wybranej strony, używając standardowej akcji przejścia do dokumentu osadzonego (/GoToE) z ISO 32000-1 §12.6.4.4 oraz opcjonalnego żądania nowego okna; wersja dokumentu automatycznie wzrasta do PDF 1.6 GetAnnotActionInfooraz jego odpowiedniki dla konspektu i pól formularza rozpoznają teraz akcje przejścia do dokumentu osadzonego, raportując nowy rodzajakGoToEwraz z nazwą osadzonego celu, relacją celu nadrzędnego i podrzędnego, opcjonalną specyfikacją pliku oraz flagą /NewWindow
Version 3.221.0
Nowości
- Dodano
SetSignProcessAppearanceTextz punktami wejścia Delphi, DLL i ActiveX: podpisy cyfrowe mogą teraz wyświetlać automatycznie wygenerowaną warstwę tekstową złożoną z nazwy podpisującego, przyczyny, lokalizacji i daty podpisania, z opcjonalnymi etykietami opisowymi ("Signed by:", "Reason:", ...) wybieranymi za pomocą maski bitowej - Blok tekstu jest układany w prostokącie pola podpisu czcionką Helvetica o konfigurowalnym kolorze; rozmiar czcionki 0 automatycznie dopasowuje wiersze do pola. Obraz pola ustawiony przez
SetSignProcessFieldImageFromFilema pierwszeństwo, a procesy znacznika czasu dokumentu ignorują tekstową warstwę wyglądu
Version 3.220.0
Nowości
- Dodano interaktywne wypełnianie formularzy do kontrolki
TPDFlibViewer: kliknięcie pola wyboru lub przycisku radiowego przełącza jego stan, a kliknięcie pola tekstowego lub pola wyboru otwiera nad nim edytor miejscowy — Enter zatwierdza, Escape anuluje, a opuszczenie edytora zatwierdza; pola tylko do odczytu pozostają bez zmian, a zmieniona strona jest automatycznie renderowana ponownie - Każdy zapis wyzwala nowe zdarzenie
OnFormFieldValueChanged, aHighlightFormFieldswraz zFormHighlightColorrysuje półprzezroczyste tło nad każdym obszarem możliwym do wypełnienia, aby użytkownicy mogli łatwo zauważyć pola formularza - Dodano programowe odpowiedniki
FormFieldAtPagePoint,GetFormFieldPageRect,ToggleCheckBoxField,SetFormFieldValueAndRefresh,BeginEditFormFieldiCommitInplaceEditor, sterujące tym samym mechanizmem bez użycia myszy
Version 3.219.0
Nowości
- Dodano obsługę interakcji z adnotacjami do kontrolki
TPDFlibViewer: kliknięcie adnotacji niebędącej łączem wyzwala nowe zdarzenieOnAnnotClickze stroną, indeksem adnotacji i podtypem, aAnnotAtPagePointudostępnia programowo test trafienia; towarzyszące adnotacje Popup są pomijane - Wskazanie adnotacji wyświetla teraz jej tekst Contents jako podpowiedź kontrolki; przełącznik
AnnotHints, domyślnie włączony, współpracuje ze standardową właściwościąShowHint(podpowiedź 'hint') - Dodano
SaveAnnotAttachmentToFiledo zapisywania na dysku pliku osadzonego w adnotacji FileAttachment, uzupełniając w przeglądarce przepływy zapisywania załączników po kliknięciu (plik 'embedded file')
Version 3.218.0
Nowości
- Dodano międzyseryjną dyskową pamięć podręczną stron do kontrolki
TPDFlibViewer: ustawienieDiskCacheFolderutrwala wyrenderowane strony na dysku, dzięki czemu ostatnio oglądany dokument otwiera się ponownie natychmiast, bez ponownego renderowania - Strony w pamięci podręcznej są indeksowane odciskiem ścieżki, rozmiaru i czasu ostatniego zapisu dokumentu, więc edycja pliku automatycznie unieważnia nieaktualne strony; pamięć przechowuje do dziesięciu dokumentów i usuwa najdawniej używane (odcisk 'fingerprint')
- Dodano licznik
DiskCacheHitsraportujący liczbę renderowań stron zaoszczędzonych przez dyskową pamięć podręczną
Version 3.217.0
Nowości
- Dodano moduł
PDFlibViewerActionsz dwudziestoma gotowymi klasami potomnymiTActiondlaTPDFlibViewer, dzięki czemu paski narzędzi i menu działają bez kodu łączącego: nawigacja po stronach (First/Prior/Next/Last), powiększanie (In/Out/FitWidth/FitPage/ActualSize), obrót widoku (zgodnie i przeciwnie do ruchu wskazówek zegara), drukowanie, okna dialogowe otwierania i zapisywania pliku, kopiowanie zaznaczonego tekstu oraz pięć przełączników trybu narzędzia myszy - Każda akcja wskazuje przeglądarkę przez właściwość
Vieweri automatycznie aktualizuje swój stan włączenia — otwarty dokument, położenie strony, obecność zaznaczenia — oraz stan zaznaczenia — aktywne dopasowanie powiększenia lub narzędzie myszy; wszystkie akcje są rejestrowane w kategorii losLab PDF edytora Action List - Dodano
TPDFlibViewer.EffectiveZoomPercentraportujące rzeczywiście obowiązujące powiększenie, w tym obliczone współczynniki dopasowania szerokości i strony, aby kolejne kroki powiększenia mogły się na nim opierać
Version 3.216.0
Nowości
- Dodano wyróżnianie trafień wyszukiwania do kontrolki
TPDFlibViewer:HighlightSearchHitsprzeszukuje cały dokument i rysuje półprzezroczysty pasek nad każdym dopasowaniem, który pozostaje na miejscu podczas przewijania, powiększania i obracania; dostępne są teżClearSearchHighlights,SearchHighlightCounti konfigurowalnySearchHighlightColor TPDFlibSearchPanel.RunSearchrysuje teraz również paski trafień w dołączonej przeglądarce — nowa właściwośćHighlightInView, domyślnie włączona, pozwala to wyłączyć — dzięki czemu wyniki wyszukiwania są widoczne na stronach, a nie tylko na liście trafień
Version 3.215.0
Nowości
- Dodano tryby narzędzia myszy do kontrolki
TPDFlibViewerprzez nową właściwośćViewerMode:vmSelectdo zaznaczania tekstu (domyślnie),vmHanddo przesuwania przeciąganiem z kursorem chwytania — zwykłe kliknięcie nadal otwiera łącza —vmZoomdo powiększania zaznaczonego obszaru tak, by wypełnił widok,vmSnapshotdo przechwytywania obszaru do schowka orazvmHighlightdo trwałego półprzezroczystego wyróżniania obszaru - Dodano
CaptureRegiondo renderowania dowolnego obszaru klienta — stron wraz z wyróżnieniami — do bitmapy należącej do wywołującego, zdarzenieOnSnapshoti przełącznikSnapshotToClipboarddo obsługi migawek orazAddHighlightRegion/ClearHighlightRegions/HighlightRegionCountz konfigurowalnymHighlightColordla wyróżnień zakotwiczonych na stronie, które zachowują położenie przy powiększaniu, obracaniu i nawigacji
Version 3.214.0
Nowości
- Dodano drukowanie do kontrolki
TPDFlibViewer:PrintDocwyświetla standardowe okno dialogowe drukowania systemu Windows — wybór drukarki, zakres stron, liczba kopii i sortowanie — i przekazuje zadanie do mechanizmu drukowania biblioteki, natomiastPrintDoc(False)drukuje cały dokument na drukarce domyślnej bez interfejsu użytkownika (mechanizm 'printing engine') - Dodano
PrintDocRangedo w pełni programowego drukowania z przeglądarki przy użyciu jawnej nazwy drukarki, zakresu stron, liczby kopii i flagi sortowania
Version 3.213.0
Nowości
- Dodano obrót widoku do kontrolki
TPDFlibViewer:RotateClockwise90iRotateAntiClockwise90obracają wyświetlane strony krokami co 90 stopni, a właściwośćViewRotationbezpośrednio odczytuje lub ustawia kąt (0, 90, 180 lub 270) - Obrót jest wyłącznie atrybutem widoku: dokument nigdy nie jest modyfikowany, otwieranie łączy i zaznaczanie tekstu działa pod każdym kątem, tryby dopasowania szerokości i strony dostosowują się do obróconego kształtu strony, a otwarcie nowego dokumentu zeruje obrót widoku
- Bitmapy obróconych stron są buforowane osobno dla każdego kąta, więc przełączanie między kątami ponownie wykorzystuje wcześniejsze renderowania
Version 3.212.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz proste selektory predykatów w stylu FormCalc, takie jak$data.Receipt.Detail.[Total_Price > 200].Description, i aktualizują każdy pasujący węzeł danych, gdy predykat wybiera podzbiór
Version 3.211.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz selektory klas Data DOM#dataGroupi#dataValuez wystąpieniami liczbowymi lub wieloznacznymi, umożliwiając ścieżki oparte na klasach, takie jak$data.Receipt.#dataGroup[0].#dataValue[0]
Version 3.210.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz korzeń$recordw pakietach bez przetwarzania rekordów, dzięki czemu ścieżki takie jak$record.Taxi$record/Detail[0]/Total_Pricesą rozwiązywane od zewnętrznego elementu rekordu danych
Version 3.209.0
Zmieniono
- Ulepszono wymianę adnotacji XFDF: eksport zapisuje teraz standardowe atrybuty stylu obramowania
width,styleidashesna podstawie wartości/BSadnotacji PDF, a import przywraca te atrybuty w wstawianych adnotacjach
Version 3.208.0
Zmieniono
- Ulepszono wymianę adnotacji XFDF: eksport zapisuje teraz standardowe atrybuty
creationdateiopacityna podstawie wartości/CreationDatei/CAadnotacji PDF, a import przywraca te atrybuty w wstawianych adnotacjach
Version 3.207.0
Zmieniono
- Ulepszono wymianę adnotacji XFDF: eksport zapisuje teraz standardowe nazwy
flagsna podstawie wartości/Fadnotacji PDF, a import przywraca te nazwy do flag wstawianej adnotacji
Version 3.206.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz bezpośrednie selektory wieloznaczne elementów podrzędnych, takie jak$data.Receipt.*.Total_Price, aby odczytywać lub aktualizować pasujące gałęzie podrzędne bez wybierania pól o tej samej nazwie w węźle nadrzędnym
Version 3.205.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz selektory elementów potomnych, takie jak$data..Total_Pricei$data.Receipt..Total_Price, aby odczytać lub zaktualizować pierwszy pasujący potomny węzeł danych
Version 3.204.0
Zmieniono
- Ulepszono zgodność ścieżek SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueprzyjmują teraz właściwośćparentw ścieżkach takich jak$data.Receipt.Detail[1].parent.Tax, aby odczytać lub zaktualizować dane elementu sąsiedniego względem rodzica wybranego węzła
Version 3.203.0
Zmieniono
- Ulepszono obsługę wystąpień SOM danych XFA:
GetXFAFormFieldValueiSetXFAFormFieldValueobsługują teraz selektory[*], takie jak$data.Receipt.Detail[*].Total_Price, aby odczytywać lub aktualizować każdy pasujący powtarzający się węzeł danych
Version 3.202.0
Zmieniono
- Ulepszono zgodność ścieżek SOM XFA: interfejsy danych XFA i pól szablonu zachowują teraz kropki literałowe w ścieżkach pól rozdzielanych ukośnikami oraz przyjmują kropki ze znakiem ucieczki, takie jak
Line\.Item, w ścieżkach SOM rozdzielanych kropkami
Version 3.201.0
Zmieniono
- Ulepszono zgodność ścieżek danych XFA: interfejsy wartości pól XFA przyjmują teraz ścieżki rozdzielane ukośnikami po standardowych korzeniach SOM danych, takich jak
$data/...,xfa.datasets.data/...ixfa.datasets/...
Version 3.200.0
Zmieniono
- Ulepszono zgodność SOM danych XFA: interfejsy wartości pól XFA przyjmują teraz standardową skróconą postać
!data..., w tym ścieżki!data/...rozdzielane ukośnikami
Version 3.199.0
Zmieniono
- Ulepszono zgodność ścieżek szablonów XFA: interfejsy edycji szablonu przyjmują teraz ścieżki pól rozdzielane ukośnikami, zwracane przez wyliczanie nazw pól XFA, w tym ścieżki
$template/...
Version 3.198.0
Zmieniono
- Ulepszono zgodność przestrzeni nazw danych XFA: interfejsy wartości pól odczytują i aktualizują teraz węzły danych według lokalnej nazwy XML, gdy dane biznesowe w pakiecie danych używają własnego prefiksu przestrzeni nazw, a wyliczanie nazw pól zwraca ścieżki bez prefiksów
Version 3.197.0
Zmieniono
- Ulepszono wymianę adnotacji XFDF: eksport obejmuje teraz wspólne atrybuty
nameidatez wpisów PDF/NMi/M, import przywraca te wartości w wstawianych adnotacjach, aSetAnnotStrPropertyprzyjmuje teraz znacznik 104 dla dat modyfikacji adnotacji
Version 3.196.0
Zmieniono
- Ulepszono wyliczanie nazw pól XFA: interfejsy list pól skanują teraz każdy rekord danych najwyższego poziomu w pakiecie danych i zwracają końcowe pola danych bez dodawania grup kontenerów jako pól
Version 3.195.0
Zmieniono
- Poprawiona zgodność ze zbiorami danych XFA: API wartości pól XFA odczytują i aktualizują teraz pełne pakiety XDP, których pakiet datasets używa elementu
databez prefiksu
Version 3.194.0
Naprawiono
- Ulepszono aktualizowanie pól szablonu XFA: interfejsy pól szablonu XFA przyjmują teraz standardowe korzenie SOM szablonu, takie jak
$templateixfa.template, a zmiany dotyczące wyłącznie szablonu w kompletnych strumieniach XDP są poprawnie zapisywane
Version 3.193.0
Zmieniono
- Ulepszono adresowanie pól XFA: interfejsy wartości pól XFA przyjmują teraz standardowe korzenie SOM danych, takie jak
$dataixfa.datasets.data, oprócz względnych ścieżek pól
Version 3.192.0
Zmieniono
- Ulepszono obsługę pakietów XML XFA: strumienie XFA ze znacznikami kolejności bajtów UTF-16 lub wzorcami bajtów XML UTF-16 są teraz dekodowane przed analizą XML, dzięki czemu wartości formularzy zakodowane w UTF-16 pozostają dostępne przez interfejsy odczytu i zapisu pól XFA
Version 3.191.0
Zmieniono
- Ulepszono tworzenie pakietów XFA:
SetXFAFromStringtworzy teraz wymagany kontenerAcroForm, gdy dokument nie zawiera jeszcze danych formularza, zastępuje nieaktualny przeanalizowany stan XFA po zapisaniu kompletnego pakietu XFA i zachowuje zapisany pakiet dostępny przez interfejsy odczytu i zapisu pól XFA
Version 3.190.0
Zmieniono
- Ulepszono wymianę adnotacji XFDF: eksport zapisuje teraz wspólny atrybut
colorz tablicy RGB PDF/C, a import przywraca wartościcolor="#RRGGBB"do tablicy kolorów wstawianej adnotacji
Version 3.189.0
Nowości
- Dodano interfejsy wymiany adnotacji XFDF:
ExportAnnotationsToXFDF,ExportAnnotationsToXFDFString,ImportAnnotationsFromXFDFiImportAnnotationsFromXFDFStringodczytują i zapisują teraz dane ISO 19444<annots>dla komentarzy adnotacji tekstowych, w tym dane strony, prostokąta, tytułu, tematu i zwykłej treści
Version 3.188.0
Zmieniono
- Ulepszono import tekstu sformatowanego XFDF: pola z
<value-richtext>zachowują teraz XML tekstu sformatowanego w wartości polaRV, nadal stosując rezerwową zwykłą wartość<value>, gdy jest dostępna
Version 3.187.0
Zmieniono
- Ulepszono wymianę danych formularza XFDF dla pól wyboru wielokrotnego: powtarzające się elementy
<value>są teraz importowane do tablicy wybranych wartości, a eksport pola wyboru wielokrotnego zapisuje jeden element<value>dla każdego wybranego elementu zamiast spłaszczać je do jednego zakodowanego węzła tekstowego
Version 3.186.0
Zmieniono
- Ulepszono eksport danych formularza XFDF dla pól tekstu sformatowanego: pola z wartością tekstu sformatowanego
RVzawierają teraz element<value-richtext>, zachowując rezerwową zwykłą wartość<value>
Version 3.185.0
Zmieniono
- Ulepszono import danych formularza XFDF dla pól tekstu sformatowanego: gdy pole zawiera
<value-richtext>bez zwykłego<value>, importer wyodrębnia teraz treść tekstową XHTML i stosuje ją do odpowiedniego pola AcroForm zamiast pomijać pole
Version 3.184.0
Zmieniono
- Ulepszono wymianę danych formularza XFDF: eksport używa teraz standardowej przestrzeni nazw XFDF z
xml:space="preserve", emituje zagnieżdżone elementy<field>dla hierarchicznych nazw AcroForm, pomija wartości niekońcowych pól nadrzędnych, zapisuje pliki w UTF-8 i importuje elastyczny pod względem białych znaków XFDF z zagnieżdżonymi polami, atrybutami w apostrofach, sekcjami CDATA, encjami XML i odwołaniami numerycznymi do znaków
Version 3.183.0
Nowości
- Dodano
SanitizeDocument(Flags), które jednym wywołaniem usuwa treści wrażliwe: usuwa cały globalny JavaScript, katalogowy OpenAction i akcje /A ze wszystkich adnotacji, czyści metadane Author/Subject/Keywords/Creator/Producer zarówno w /Info, jak i XMP, oraz opcjonalnie usuwa wszystkie adnotacje. Bity flagSANITIZE_JAVASCRIPT/SANITIZE_ACTIONS/SANITIZE_METADATA/SANITIZE_ANNOTATIONS/SANITIZE_OPEN_ACTIONmożna łączyć;SANITIZE_ALLstosuje wszystkie rodzaje czyszczenia. Zamyka to klasyczną lukę wycieku danych, w której redakcja usuwa widoczną treść, lecz pozostawia możliwe do odzyskania metadane lub ukryte skrypty - Dodano
TPDFAnnots.RemoveAnnotAction(Index)do usuwania słownika akcji /A z pojedynczej adnotacji; metoda jest używana przez SanitizeDocument i przydatna również samodzielnie
Version 3.182.0
Nowości
- Elementy obrazów zwracane przez
EnumPageElementszawierają teraz rzeczywisty prostokąt rozmieszczenia (Left/Top/Right/Bottom) zamiast zer. Nowa metodaTPDFContentProgram.EnumImagePlacementsprzechodzi przez strumień treści, śledząc CTM (cm/q/Q), i odwzorowuje jednostkowy kwadrat 1x1 każdego operatoraDona współrzędne strony - Dodano cztery demonstracje prezentacyjne: DocumentProperties — obieg DocInfo, pól strony, obrotu, przejścia, preferencji przeglądarki i XMP — FormProperties — siatka właściwości każdego pola: typ, wartość, tylko do odczytu, MaxLength, MultiLine i opis — SignatureValidator — wyliczanie pól podpisu, weryfikacja i certyfikat podpisującego — oraz Reader — VCL TPDFlibViewer z otwieraniem, nawigacją, powiększaniem i kopiowaniem tekstu
Version 3.181.0
Nowości
- Dodano
SetXMPProperty, udostępniające istniejący mechanizm XMP rozpoznający schematy (PDFlibXMP) przez publiczną fasadę: można ustawiać dowolną właściwość Dublin Core (dc:), XMP Basic (xmp:), Adobe PDF (pdf:), PDF/A ID (pdfaid:), PDF/UA ID (pdfuaid:) lub XMP Media Management (xmpMM:) według przestrzeni nazw i klucza bez ręcznego tworzenia XML RDF - Dodano
ImportFormDataFromFDF/ImportFormDataFromFDFString, które analizują tablicę FDF /Fields — każdy wpis<< /T (name) /V (value) >>— i stosują każdą wartość do odpowiedniego pola AcroForm według tytułu, odwracając ósemkowe i nawiasowe kodowanie EscapePDFText. Uzupełnia to asymetryczny brak importu przy dotychczasowym samym eksporcie - Dodano
ExportFormDataToXFDF/ExportFormDataToXFDFString/ImportFormDataFromXFDF/ImportFormDataFromXFDFStringdo dwukierunkowej wymiany XFDF (XML Forms Data Format), czyli nowoczesnego odpowiednika FDF opartego na XML - Udostępniono publicznie sześć metod ustawiających ograniczonych do przestrzeni nazw (
SetDublinCore,SetXMPBasic,SetAdobePDF,SetPDFA,SetPDFUA,SetXMPMM) wTPDFlibXMP, aby zaawansowani wywołujący mogli bezpośrednio sterować mechanizmem
Version 3.180.0
Nowości
- Dodano
SearchAndReplaceTextInContent, które wykonuje rzeczywistą zamianę tekstu w strumieniu treści — przepisuje operatory wyświetlania tekstu Tj/TJ/'/" bezpośrednio przezTPDFContentProgram.ReplaceTextRun— w odróżnieniu od istniejącego, opartego na masceSearchAndReplaceText, które jedynie nakłada prostokąt na oryginalne glify. Oryginalny tekst znika ze strumienia i nie można go odzyskać. Metoda lokalizuje trafienia przezSearchText, odwzorowuje każdy prostokąt trafienia na obejmującą go instrukcję przezFindInstructionsInRect, przepisuje ją i zapisuje warstwę z powrotem
Version 3.179.0
Nowości
- Dodano strukturalny rejestrator wewnętrzny (
TPDFlibLogger) w nowym moduleLib/PDFlibLogger.pasz czterema poziomami (Debug/Info/Warn/Error), wywołaniem zwrotnym hosta (OnLog), opcjonalnym bezpiecznym wątkowo ujściem plikowym oraz mapą kodów błędów na komunikaty (PDFlibErrorMessage), która nadaje istniejącym kodom liczbowym (1xx/3xx/4xx/5xx) czytelny opis. Rejestrator jest dostępny wTPDFlibprzez właściwośćLogger - Dodano
RenderPagesToFilesParallel, które renderuje zakres stron do osobnego pliku dla każdej strony, używając puliTTaskz jedną instancjąTPDFlibna proces roboczy — TPDFlib nie jest bezpieczne wątkowo — oraz wywołaniemCoInitializew każdym wątku dla bezpieczeństwa modelu apartamentów GDI+. W przypadku wyjścia rastrowego ograniczonego mocą procesora wydajność skaluje się niemal liniowo z liczbą rdzeni
Version 3.178.0
Nowości
- Dodano
EnumCertificatesdo wyliczania wszystkich certyfikatów w magazynie systemowym Windows ("MY", "Root", ...), zwracając podmiot, wystawcę, numer seryjny, okres ważności, HasPrivateKey i Qualified — rozszerzenie eIDAS QCStatements, OID 0.4.0.1862.1.7, wykrywane przez nowy wbudowany dekoder DER w PDFlibASN1 — co zastępuje wcześniejsze ograniczenieSetSignProcessCertFromStoredo pojedynczego certyfikatu według CN - Dodano
SetSignProcessCertFromStoreByHandledo wybierania certyfikatu podpisującego według surowego uchwytu PCCERT_CONTEXT uzyskanego z wyliczania, dzięki czemu wywołujący mogą wybierać według dowolnego kryterium — statusu kwalifikowanego, ważności lub odcisku — zamiast wyłącznie według Subject CN - Dodano
RedactRegion, które rzeczywiście usuwa tekst, ścieżki wektorowe i obiekty XObject obrazów, których malowany obszar przecina prostokąt — edytując strumień treści tak, że usuniętej zawartości nie można odzyskać, w odróżnieniu odMaskRect, które tylko ją zakrywa — z opcjonalnym czarnym wypełnieniem i adnotacją /Redact. Funkcja opiera się na analizatorze strumienia treści śledzącym CTM w PDFlibContentModel (FindInstructionsInRect) - Dodano minimalne funkcje dekodera DER (
DERDecodeLength,DERFindExtensionByOID) do PDFlibASN1 na potrzeby inspekcji rozszerzeń certyfikatu wewnątrz procesu bez CryptDecodeObjectEx
Version 3.177.0
Nowości
- Dodano interfejsy zszywania stron, które układają istniejące strony w nowych kompozycjach za pomocą wektorowego przechwytywania Form XObject — zachowując pełną jakość wektorową, w przeciwieństwie do łączenia strumieni treści:
StitchPageOverlaynakłada jedną stronę na drugą w określonym położeniu z opcjonalnym kryciem,StitchPagesSideBySideumieszcza dwie strony obok siebie na nowej szerszej stronie, aStitchPagesVerticallyukłada zakres stron pionowo w nową wysoką stronę plakatową - Dodano komponowalną warstwę szablonów znaków wodnych w nowym module
Lib/PDFlibWatermark.pas:TPDFlibWatermarkBasez dziewięciopunktowym pozycjonowaniem (wpTopLeft..wpBottomRightorazwpCustom),TPDFlibTextWatermark,TPDFlibImageWatermarkiTPDFlibCompositeWatermark, które rekurencyjnie stosuje listę podrzędnych znaków wodnych w obrębie wspólnego zakresu stron - Dodano
TPDFlib.ApplyWatermarkjako wygodny punkt wejścia delegujący do własnego zakresu stron i ustawień szablonu znaku wodnego
Version 3.176.0
Nowości
- Dodano nazwane stałe formatów wyjściowych renderowania (
PDF_RENDER_BMP,PDF_RENDER_EMF,PDF_RENDER_EMFPLUS,PDF_RENDER_EMF_DUALitd.), które odwzorowują w stosunku 1:1 całkowite wartościOptionsprzyjmowane przezRenderPageToFile,RenderPageToStream,RenderPagesToFilesiRenderDocumentToFile - Dodano wyliczenie
TPDFlibMetafileFormatoraz wygodne metodyRenderPageToMetafileStreamiRenderPageToMetafileFile, które przyjmują nazwany wariant metapliku (mfEMF, mfEMFPlus, mfEMFDual, mfWMF) zamiast surowej liczby całkowitej - Dodano tryb wyjściowy EMF+ Dual — wartość Options 11 / mfEMFDual — który zapisuje polecenia GDI i GDI+ w tym samym metapliku dla zgodności ze starszymi odbiorcami obsługującymi wyłącznie GDI
- Dodano wyliczenie
TPDFlibClipboardFormati metodęRenderPageToClipboard, która umieszcza wyrenderowaną stronę w schowku Windows jako rozszerzony metaplik (CF_ENHMETAFILE), bitmapę DIB (CF_DIB), tekst Unicode strony (CF_UNICODETEXT) albo wszystkie trzy formaty naraz - Dodano nowy moduł
Lib/PDFlibClipboard.pasz niskopoziomowymi funkcjami pomocniczymi Win32 do umieszczania danych w schowku, używanymi przezRenderPageToClipboard - Dodano pełną obsługę DPI osobno dla każdego monitora do
TPDFlibViewer: nową publiczną właściwośćScreenDPI, przesłonięcieCreateWndautomatycznie wykrywające DPI monitora hosta przezGetDpiForWindowz rezerwowymGetDeviceCapsoraz procedurę obsługiWM_DPICHANGED, która przebudowuje układ i czyści pamięć podręczną bitmap po przeniesieniu okna między monitorami - Dodano
TPDFRenderer.SetEMFPlusMetafileTypedo wybierania na poziomie modułu renderującego między zapisem EMF+ Only i EMF+ Dual
Naprawiono
- Poprawiono stronę referencyjną
RenderPageToFile, na której lista wartości Options była błędnie umieszczona w wierszu Page, a komórka Options pozostawała pusta
Version 3.175.3
Nowości
- Dodano moduł Lib/PDFlibTableExport.pas, który renderuje dowolny TDataSet — FireDAC, ClientDataSet lub wynik zapytania — jako stronicowaną tabelę PDF ze stylizowanym nagłówkiem, naprzemiennym cieniowaniem wierszy, kolumnami liczbowymi wyrównanymi do prawej i automatyczną kontynuacją stron, a także demonstrację konsolową Demo/Delphi/DataSetExport wczytującą przez FireDAC przykład customer.FDS z RAD Studio i eksportującą go
Version 3.175.2
Nowości
- Dodano kompletne projekty Demo/ReportBridges, które budują minimalny raport w FastReport, QuickReport i ReportBuilder oraz eksportują go do PDF przez odpowiedni most Addons, wraz z dedykowanym build-ReportBridges.cmd dostarczającym ścieżki źródeł mechanizmu i symbole warunkowe, aby standardowa kompilacja demonstracji nadal budowała projekty jako atrapy
Version 3.175.1
Nowości
- Dodano demonstrację macierzy opcji JBIG2 w Delphi, która sprawdza kombinacje SymbolExtract, SkipBlackDots, BlackDotSize i LossyLevel względem punktów odniesienia CCITT G4 i Flate, tworząc dla każdego wiersza plik PDF oraz wyniki CSV i podsumowania
- Dodano demonstrację Pattern w Delphi obejmującą osiowe i radialne cieniowanie RGB, cieniowanie siatkowe płatem Coonsa oraz niestandardowy wzorzec kafelkowy stosowany jako kolor wypełnienia, obrysu i tekstu
- Dodano demonstrację macierzy faksowej CCITT w Delphi, porównującą kompresję Group 3 1-D, Group 3 2-D i Group 4 z bitami opcji BlackIs1 i Interpolate oraz raportującą rozmiar każdego wyniku i wynikową nazwę /Filter
- Dodano w Addons mosty eksportu FastReport, QuickReport i ReportBuilder, które renderują przygotowany raport do pliku PDF biblioteki PDF Library for Delphi przez natywny obiekt mechanizmu, metaplik i powierzchnię DrawCommand
Version 3.175.0
Zmieniono
- Rozszerzono demonstrację WorkflowGallery o macierz wariantów adnotacji rejestrującą w towarzyszących raportach CSV i HTML wypełnienia wyróżnień tekstu, style znaczników, ikony notatek, tekst dowolny, znaki korektorskie i adnotacje stempli
Version 3.174.0
Zmieniono
- Rozszerzono demonstrację C++Builder AdvancedWorkflowMatrix, aby odwzorowywała nawigację akcji, przepływy PDF/A i AcroForm, diagnostykę czcionek, dostarczanie strumieniowe oraz najnowsze funkcje pomocnicze kompresji skanów w generowanych raportach macierzy
Version 3.173.0
Nowości
- Dodano demonstrację DeliveryWorkflowMatrix w Delphi dla strumieniowego wyjścia PDF Web i CGI, walidacji miniatur stron oraz przepływów dostarczania ze znakiem wodnym, używających jednego wygenerowanego bufora bajtów PDF
Version 3.172.0
Nowości
- Dodano wygodne interfejsy drzewa konspektu do uporządkowanego wstawiania elementów równorzędnych, tworzenia dzieci, usuwania poddrzewa oraz wyliczania konspektu w kolejności preorder ze szczegółami elementu nadrzędnego, równorzędnego, poziomu, strony docelowej, stanu otwarcia i tytułu
Version 3.171.0
Nowości
- Dodano konsolową demonstrację FontDiagnosticsMatrix w Delphi dla ścieżek czcionek CJK i Unicode, aktualizacji podzbiorów TrueType, sprawdzania zainstalowanych czcionek, wyliczania czcionek dokumentu i raportów diagnostycznych czcionek
Version 3.170.0
Nowości
- Dodano konsolową demonstrację CanvasMigrationMatrix w Delphi dla migracji Canvas DC, punktów wejścia surowej treści i ścieżek, funkcji kolorów Delphi, tekstu wypełnianego wzorcem, znaków wodnych, przepływów miniatur stron i renderowanych podglądów walidacyjnych
Version 3.169.0
Nowości
- Dodano dedykowane konsolowe demonstracje LayerCompositionMatrix, TransparencyMaskMatrix i ComplianceFormWorkflowMatrix w Delphi dla zasad drukowania i eksportu zawartości opcjonalnej, kompozycji Pattern/Form XObject, porównania masek przezroczystości, przykładów powodzenia i niepowodzenia PDF/A-1b, przepływów akcji AcroForm, przebudowy wyglądu i widocznych szablonów podpisu
Version 3.168.0
Nowości
- Dodano dedykowane konsolowe demonstracje ImageCompressionMatrix i SecurityPermissionMatrix w Delphi z generowanymi raportami PDF, CSV i HTML do wyboru strategii kompresji obrazów, kompresji skanów, jakości renderowania JPEG oraz audytu profili uprawnień szyfrowania
Version 3.167.0
Nowości
- Dodano nazwane interfejsy pomocnicze do kodowania bitmap JBIG2, opcji importu EMF, akcji zdarzeń AcroForm i akcji łańcuchowych, aby wywołujący mogli używać jawnych przełączników opcji zamiast ręcznie składać całkowite maski bitowe
Version 3.166.0
Nowości
- Dodano wykonywalną konsolową demonstrację C++Builder AdvancedWorkflowMatrix z wynikami PDF, CSV i HTML, odwzorowującą zaawansowaną migrację Canvas, import EMF, kompresję obrazów, AcroForm, podpisy, zabezpieczenia, PDF/A, zawartość opcjonalną, wzorce i przepływy Form XObject na punkty wejścia projektu C++Builder
Version 3.165.0
Nowości
- Dodano demonstrację macierzy nawigacji akcji w Delphi, prezentującą akcje otwarcia dokumentu, JavaScript na poziomie dokumentu, łącza do osadzonych plików, zdalne łącza GoTo, akcje zdarzeń AcroForm, funkcje pomocnicze łączy Submit/Reset/Hide oraz łańcuchowe akcje Next z wynikami PDF, CSV i HTML
Naprawiono
- Naprawiono funkcje pomocnicze zdalnych łączy plikowych, aby AddLinkToFile, AddLinkToFileEx, AddLinkToFileDest oraz lokalne łącza uruchamiające plik tworzyły jedną adnotację i kończyły działanie zamiast wpadać w nieskończoną pętlę
Version 3.164.0
Dodano
- Demo macierzy ochrony PDF/A w Delphi that checks early rejection or allowed-path decisions for PDF/A mode setup, transparency, blend modes, encryption, JavaScript, multimedia, embedded files, and PDF/A-3 associated-file workflows, with generated PDF, CSV, and HTML reports
Version 3.163.0
Dodano
- Jawna macierz pośrednicząca ReportAdapter for FastReport, QuickReport, ReportBuilder, DBGrid, and custom canvas export paths, including generated CSV and HTML mapping output plus a PDF page that shows the reusable adapter strategy
Version 3.162.0
Dodano
- Zaawansowana macierz demonstracyjna przepływów pracy that generates concrete outputs for canvas migration, EMF import options, image compression comparisons, AcroForm action workflows, visible empty signatures, security permissions, PDF/A-1b checks, optional content, tiling patterns, Form XObjects, DBGrid-style table export, and large-file peak memory reporting
Version 3.161.0
Dodano
- Pomocniki Delphi do zwartego tworzenia akcji Open Document, form-field visibility event actions, TColor and gray color setters, and direct raw content, path, text, and matrix content stream injection
Version 3.160.0
Dodano
- Pomocniki Delphi do kompresji skanowanych obrazów bitmap do JBIG2, one-call image mask and color-key transparency setup, GoTo action chaining, and readable AcroForm event names for JavaScript or existing action assignment
- Rozszerzono
ImportEMFFromFileExiImportEMFFromStreamExso theirOptionsflags can force bitmap import, enable EMF color-image JPEG recompression, and request GDI+ processing controls
Version 3.159.1
Zmieniono
- Ulepszono
SaveToStreami zapisywanie powiązanych strumieni wyjściowych so large PDF stream objects are written in bounded chunks instead of copying each stream object into one intermediate output string
Version 3.159.0
Dodano
- Pomocniki umieszczania obrazów that draw or fit a specified image and release its handle immediately afterward, with Delphi, DLL, and ActiveX entry points for lower peak memory in one-use image generation workflows
RenderPageToMonochromeFileExdo renderowania BMP 1-bitowego with threshold conversion and isolated black-pixel cleanup before scanned-image compression workflows
Version 3.158.1
Dodano
- Dema przepływów pracy Delphi do wielokrotnego użytku eksportu w stylu raportu, RichEdit-to-EMF rich text import, and combined page-thumbnail, annotation, form XObject, table, compression, JavaScript, and bound-stream output scenarios
Version 3.158.0
Dodano
- API do kontroli szyfrowania metadanych with Delphi, DLL, and ActiveX entry points: SetEncryptMetadata can write Standard-security PDFs with unencrypted XMP metadata streams, while GetEncryptMetadata reports the pending or loaded /EncryptMetadata state
Version 3.151.0
Dodano
DrawPie,DrawChord,DrawEllipticPieiDrawEllipticChordfor explicit closed circular and elliptic arc drawing with outline, fill, or fill-and-outline modes
Version 3.150.0
Dodano
NewGraphicsStateiSetGraphicsStateso callers can create reusable ExtGState resources for combined fill transparency, stroke transparency, line width, line cap, line join, and miter-limit settings
Version 3.149.1
Naprawiono
- Naprawiono duplikaty identyfikatorów ActiveX dispatch for the Form XObject and miter-limit methods so late-bound COM callers resolve each method unambiguously
Version 3.149.0
Dodano
SetMiterLimitdo sterowania proporcjami łączenia ostrym wierzchołkiem to control stroke miter-limit ratios for paths that use miter joins- Udostępniono
BeginFormXObject,EndFormXObjectiCancelFormXObjectprzez interfejsy DLL i ActiveX
Version 3.148.0
Dodano
- Wielokrotnego użytku API budowania Form XObject:
BeginFormXObject,EndFormXObjectiCancelFormXObjectpozwalają wywołującym rysować wielokrotnego użytku szablon zwykłymi wywołaniami rysowania strony i umieszczać go wielokrotnie przez API rysowania przechwyconych stron
Version 3.147.0
Dodano
SetTextTilingPatterniSetLineTilingPatternso captured-page tiling patterns can be reused for text, underline, and stroked graphics without duplicating drawing commands
Naprawiono
- Kolory stroked shader i tiling-pattern zapisują teraz operator koloru wzoru kreskowania zamiast aktualizować stan koloru bez kreskowania
Version 3.146.0
Dodano
BeginOptionalContentiEndOptionalContentso callers can mark only subsequent drawing commands with an optional content group without rewriting the existing content stream
Naprawiono
- Operatory marked-content zamykające zakres są teraz opróżniane natychmiast, gdy optional content, tagged PDF lub artifact scopes zostają zamknięte na końcu strumienia zawartości
Version 3.145.0
Dodano
SetTransparencyEx, aby wywołujący mogli ustawiać oddzielne wartości przezroczystości wypełnienia i kreskowania dla później rysowanego tekstu i grafiki, zachowując istniejące zachowanie automatycznej aktualizacji do PDF 1.4
Version 3.144.0
Dodano
- Dodano
AddLinkToNamedDestination, dzięki czemu hotspot strony może przeskoczyć do nazwanego celu w tym samym dokumencie bez ustalania strony docelowej w chwili tworzenia odnośnika
Naprawiono
- Czytniki akcji adnotacji zwracają teraz brak akcji dla stron bez adnotacji zamiast dereferencjonować pustą pamięć podręczną adnotacji
Version 3.143.0
Dodano
- API do zarządzania akcjami pól formularza so callers can bind an existing action to a field trigger, inspect the typed trigger action, and remove primary or additional field actions
Naprawiono
FormFieldJavaScriptActionodrzuca teraz dokumenty PDF/A i nieprawidłowe nazwy wyzwalaczy zamiast zapisywać niezgodne słowniki akcji pól
Version 3.142.0
Dodano
- API łańcuchowania akcji so callers can append URI, named, and JavaScript next-actions to an existing annotation, outline, or form-field action and inspect chained actions through
GetActionNextCountandGetActionNextInfo
Version 3.141.0
Nowości
- Dodano
AddLinkToSubmitFormiAddLinkToResetForm, aby aktywne obszary strony mogły wysyłać lub resetować pola AcroForm przez standardowe akcje PDF bez JavaScript
Version 3.140.0
Nowości
- Dodano
AppendToStream, aby przepływy aktualizacji przyrostowych mogły zapisywać bezpośrednio do strumienia dostarczonego przez wywołującego zamiast najpierw materializować aktualizację jakoAnsiString
Zmieniono
SaveToStreamserializuje teraz bezpośrednio do strumienia docelowego, aAppendToString(1)zwraca tylko sekcję aktualizacji przyrostowej bez kopiowania oryginalnych bajtów źródłowych do bufora tymczasowego
Version 3.139.0
Nowości
- Dodano
GetAnnotReplyToiGetAnnotReplyType, aby odpowiedzi w wątkach adnotacji można było sprawdzać przez nazwane akcesory odczytu zamiast ogólnych znaczników właściwości adnotacji
Version 3.138.0
Nowości
- Dodano przykład
DocumentInspectionWorkbenchw Delphi do wsadowej inspekcji plików PDF z połączoną diagnostyką czcionek, próbkowaniem obrazów, wykrywaniem przestrzeni kolorów, pomiarem czasu wczytywania oraz raportami JSON, CSV i HTML
Version 3.137.0
Nowości
- Dodano przykład
ImageDecodeBenchmarkw Delphi do pomiaru wykrywania obrazów stron, liczby bajtów zdekodowanych obrazów i wykrywania przestrzeni kolorów stron wraz z raportami czasowymi CSV i HTML
Version 3.136.0
Nowości
- Dodano
GetDocumentFontDiagnosticsiTPDFlibFontDiagnostics, aby jednym wywołaniem podsumowywać liczbę osadzonych czcionek dokumentu, podzbiorów, czcionek Standard 14, CID, Type3 i czcionek nieznanych
Version 3.135.0
Nowości
TPDFlibSignatureVerifier.VerifySignerCertificateChainbuduje teraz łańcuch osadzonego certyfikatu podpisującego za pomocą Windows CryptoAPI i zwracavsValidtylko wtedy, gdy łańcuch spełnia podstawowe zasady zaufania Windows, natomiast certyfikaty samopodpisane lub z innego powodu niezaufane zwracająvsInvalidbez zmiany wyniku integralności treści funkcjiVerifySignature
Version 3.134.0
Naprawiono
TPDFlibSignatureVerifier.VerifySignatureweryfikuje teraz starsze podpisyadbe.pkcs7.sha1, zwracającvsValid, gdy podpisany skrót odpowiada bajtom objętym przez/ByteRange, orazvsInvalidpo zmianie objętej treści
Version 3.133.0
Dodano
- Dodano
RenderPagesToFilesorazDARenderPagesToFiles, aby renderować dowolne zakresy stron do ponumerowanych plików wyjściowych przy jednoczesnym ponownym wykorzystaniu ustawień renderera na wybranych stronach
Version 3.132.0
Dodano
- Dodano wygodne funkcje stemplujące
AddPageHeaderiAddPageFooter, które umieszczają tekst na ustalonym górnym lub dolnym marginesie na każdej stronie w zakresie, z wyrównaniem do lewej/środka/prawej i rozwijaniem tokenów (&Pbieżąca strona,&Ncałkowita liczba stron,&Ddata,&Ttytuł dokumentu,&&dosłowny znak ampersand) StampTextiStampImagez opcjąsoUnderlayteraz poprawnie umieszczają treść pod istniejącą treścią strony, poprzez dodanie na początku nowej warstwy treści (wcześniej rysowano na wierzchu, tak jak wsoOverlay); operacja jest obsługiwana przez nową metodę drzewa stronPrependContentLayer
Version 3.131.0
Dodano
- Dodano
ScalePage(ScaleX, ScaleY, Anchor), które skaluje treść wybranej strony, otaczając każdą warstwę treści blokiem stanu grafikiq sx 0 0 sy tx ty cm ... Qoraz zmieniając rozmiar MediaBox i CropBox; punkt odniesienia zachowuje początek układu w lewym dolnym rogu (0), wyśrodkowuje zawartość (1) lub zachowuje lewy górny róg (2) - Rozszerzono
EnumPageElementso nowy rodzaj elementuekPath: każda strona teraz zgłasza również swoje ścieżki wektorowe wraz z prostokątem ograniczającym, liczbą punktów, flagą zamknięcia i operatorem malowania, wydobyte ze strumieni treści za pomocą ustrukturyzowanego modelu treści
Version 3.130.0
Dodano
- Dodano trzy funkcje API do optymalizacji rozmiaru pliku, które zmniejszają wczytane dokumenty podczas ponownego zapisu:
SubsetEmbeddedFontsredukuje każdy osadzony program czcionki TrueType (FontFile2) tylko do tych znaków Unicode, które dokument faktycznie renderuje, za pomocą usługiCreateFontPackagez FontSub.dll;DownsampleImages(MaxDPI, Quality, Filter)dekoduje każdy obraz XObject powyżej docelowego DPI, ponownie go próbkuje (metodą box lub dwuliniową) i koduje jako JPEG lub PNG;NormalizeLZWStreamsprzepisuje każdy strumień nadal filtrowany za pomocą LZWDecode na FlateDecode, korzystając z istniejącego dekodera LZW i kodera Flate, zachowując parametry Predictor
Version 3.129.0
Dodano
- Dodano funkcje API do tworzenia cieniowania z użyciem siatki dla czterech typów cieniowania, które wcześniej posiadały tylko obsługę odczytu/parsowania:
NewRGBFreeFormTriangleMesh(ShadingType 4, trójkąty Gourauda o kształcie swobodnym),NewRGBLatticeTriangleMesh(ShadingType 5, siatka trójkątów Gourauda),NewRGBCoonsPatchMesh(ShadingType 6, siatka płatów Coonsa) orazNewRGBTensorPatchMesh(ShadingType 7, siatka płatów iloczynu tensorowego) — każda tworzy nazwany wzór cieniowania siatkowego z płaskiej listy wierzchołków lub płatów z wybieralną głębią bitową współrzędnych/kolorów oraz prostokątem ograniczającym, z możliwością wyboru za pomocąSetFillShader/SetLineShader/SetTextShadertak samo jak w przypadku istniejących shaderów osiowych i promienistych
Version 3.128.0
Dodano
- Dodano pasek miniatur dla przeglądarki:
TPDFlibThumbnailBarwyświetla miniaturę każdej strony, renderowaną z opóźnieniem w miarę przewijania wierszy w obszar widzenia, z numerem strony poniżej; kliknięcie miniatury powoduje przejście podłączonej przeglądarki do tej strony — dopełniając rodzinę kontrolek przeglądarki (przeglądarka, panel zakładek, panel wyszukiwania, miniatury)
Version 3.127.0
Dodano
- Dodano panel wyszukiwania dla przeglądarki:
TPDFlibSearchPanel.RunSearchprzeszukuje cały podłączony dokument i wyświetla jeden wiersz na trafienie z numerem strony i pasującym tekstem; kliknięcie trafienia powoduje przejście przeglądarki do tej strony
Version 3.126.0
Dodano
- Dodano panel zakładek dla przeglądarki:
TPDFlibOutlineViewerwyświetla drzewo zakładek dokumentu z wcięciami i powoduje przejście dołączonej przeglądarki (poprzezAttachViewer) do strony docelowej zakładki po kliknięciu; jest oparty na bazowej klasie panelu wielokrotnego użytku, którą współdzielą późniejsze panele boczne
Version 3.125.0
Dodano
- Dodano zaznaczanie tekstu w kontrolce przeglądarki: przeciągnij lewym przyciskiem myszy, aby zaznaczyć, naciśnij Ctrl+C lub wywołaj
CopySelectedText, aby skopiować zaznaczenie do schowka; przechwycony tekst jest dostępny przez właściwośćSelectedText, uporządkowany z góry na dół ze znakami nowej linii między pasmami - Dodano
GetTextInRegion, które bezpośrednio zwraca tekst z prostokątnego obszaru strony — to samo wyszukiwanie oparte na blokach, co wybór myszą, dostępne dla niestandardowych interfejsów zaznaczania
Version 3.124.0
Dodano
- Kontrolka przeglądarki teraz wstępnie renderuje sąsiednie strony w wątku w tle, dzięki czemu przewijanie do przodu lub do tyłu natychmiast wyświetla następną stronę; wątek roboczy używa własnej instancji dokumentu i przekazuje gotowe renderingi do pamięci podręcznej bez blokowania interfejsu użytkownika
- Dodano interaktywność linków do przeglądarki: kliknięcie adnotacji linku wyzwala
OnLinkClickz numerem strony i tym samym typowanym podsumowaniem akcji, które produkujeGetAnnotActionInfo(adres WWW, cel w dokumencie, nazwana akcja itp.);LinkActionAtPagePointudostępnia bazowy test trafienia dla własnej obsługi
Version 3.123.0
Dodano
- Kontrolka przeglądarki zyskała ciągłe przewijanie:
SetDisplayModeprzełączaTPDFlibViewerpomiędzy widokiem pojedynczej strony a ciągłym przewijaniem pionowym przez cały dokument, przy czym renderowane są tylko strony widoczne w rzutni, a bieżąca strona śledzi pozycję przewijania (wyzwalającOnPageChange, gdy strony pojawiają się w widoku) - Renderowane strony są teraz przechowywane w pamięci podręcznej map bitowych według algorytmu najdawniej używanych (LRU), więc przewijanie w tył i w przód nie wymaga ponownego renderowania; domyślny budżet pamięci to 128 MB i można go dostosować za pomocą
SetCacheLimit, co powoduje usuwanie najstarszych stron, gdy budżet się zmniejszy lub zapełni - Dodano przewijanie kółkiem myszy oraz nawigację klawiaturą do przeglądarki: PageUp/PageDown (skoki o stronę w trybie pojedynczej strony, skoki rzutni w trybie ciągłym), klawisze strzałek, Home oraz End
Version 3.122.0
Dodano
- Dodano interaktywną kontrolkę przeglądarki PDF:
TPDFlibViewerto kontrolka przewijania VCL, która otwiera dokument z pliku lub dołącza do istniejącej instancjiTPDFlib, wyświetla strony za pomocą wybranego silnika renderującego (GDI+, Cairo lub PDFium) i oferuje nawigację po stronach (GoToPage/NextPage/PrevPageze zdarzeniemOnPageChange) oraz kontrolę powiększenia — stały procent, dopasowanie do szerokości lub dopasowanie do strony, przeliczane automatycznie przy zmianie rozmiaru kontrolki; strony szersze niż rzutnia można przewijać, węższe są wyśrodkowywane - Dodano pakiet dla trybu projektowania (
Package\PDFlibViewerPkg.dpk), który rejestruje kontrolkę na stronie palety losLab PDF, aby umożliwić jej użycie metodą przeciągnij i upuść w środowisku IDE
Version 3.121.0
Dodano
- Automatyczne kształtowanie skryptów złożonych w
DrawText: tekst zawierający znaki arabskie, hebrajskie, indyjskie lub inne znaki skryptów złożonych jest teraz wykrywany i kształtowany automatycznie — formy kontekstowe liter, obowiązkowe ligatury i kolejność od prawej do lewej wychodzą poprawnie bez zmian w kodzie; nazwy standard-14 mapują się na ich metrycznie kompatybilne zainstalowane odpowiedniki (Helvetica na Arial, Times na Times New Roman, Courier na Courier New), aGetTextWidthmierzy przy użyciu tego samego przebiegu kształtowania, dzięki czemu wyrównanie pozostaje spójne; teksty łacińskie, cyrylica, greckie i CJK zachowują swoją dotychczasową ścieżkę rysowania bajt po bajcie - Dodano
SetTextShaping, aby przełączać automatyczne trasowanie (włączone domyślnie; przekaż 0, aby przywrócić dokładnie zachowanie sprzed wprowadzenia kształtowania)
Version 3.120.0
Zmieniono
- Czcionki towarzyszące dla ukształtowanego tekstu są teraz ograniczane do podzbioru (subsetted) podczas zapisu tylko do glifów widocznych w dokumencie, co drastycznie zmniejsza pliki wyjściowe (pełny program czcionki o rozmiarze ponad megabajta jest redukowany do użytych glifów); okrojona czcionka zachowuje swoją numerację glifów, zawiera nazwę
BaseFontz oznaczeniem podzbioru i rzeczywiste szerokości/Wna glif, a także zyskuje mapę ToUnicode, która tłumaczy każdy ukształtowany glif z powrotem na jego znaki źródłowe — dzięki czemu kopiowanie lub wyodrębnianie wynikuDrawShapedTextzwraca oryginalny ciąg, w tym obie litery kryjące się pod ligaturą lam-alef
Version 3.119.0
Dodano
- Dodano rysowanie tekstu w skryptach złożonych:
DrawShapedTextkształtuje znaki arabskie, hebrajskie i inne ciągi skryptów złożonych przed ich narysowaniem — kontekstowe formy liter, obowiązkowe ligatury, takie jak lam-alef, i kolejność od prawej do lewej wychodzą poprawnie — i zapisuje ukształtowane glify za pomocą towarzyszącej czcionki Type0 (Identity-H) osadzającej cały program czcionki, dzięki czemu formy bez własnego kodu znaku są renderowane dokładnie; na każdą czcionkę główną tworzona jest jedna czcionka towarzysząca i jest ona ponownie wykorzystywana w kolejnych wywołaniach - Dodano
GetShapedTextWidth, które mierzy tekst przy użyciu tego samego przebiegu kształtowania, więc tekst z ligaturami jest mierzony z zachowaniem jego rzeczywistej narysowanej szerokości — użyj tego, aby wyrównać do prawej lub wyśrodkować ukształtowane akapity
Version 3.118.0
Nowości
- Nowości the foundation for complex-script text shaping: a new Uniscribe (usp10.dll) binding turns Arabic, Hebrew and other complex-script strings into correctly ordered and shaped glyph runs — contextual Arabic forms, mandatory ligatures such as lam-alef, and right-to-left ordering — reporting each glyph's font glyph index, advance and source-character cluster; this is the shaping engine that later versions build the drawing path on, and it is loaded lazily so platforms without Uniscribe simply keep the existing per-character path
Version 3.117.0
Nowości
- Nowości ICC profile introspection:
GetOutputIntentICCInfoparses the ICC profile attached to the document's OutputIntent and reports its version, device class, data colour space, profile connection space, rendering intent and component count — useful for inspecting the print condition of PDF/A and PDF/X files; the renderer's ICCBased colour-space handling now also derives the component count from the profile header itself when a shading's colour space carries neither/Alternatenor/N
Version 3.116.0
Nowości
- Nowości a table-aware text extraction mode:
GetPageTextoption 10 clusters the left edges of the page's text blocks into global column positions and emits tab-separated rows, so tabular layouts extract as ready-to-import TSV with vertically aligned cells staying aligned across rows
Version 3.115.0
Nowości
- Nowości page imposition:
ImposePagesNUplays every page of the document out on new sheets in an n-up grid (2-up, 4-up, 9-up or any Columns x Rows arrangement) with each page aspect-fit and centred in its cell as live vector content, or — with the booklet option — produces saddle-stitch sheets whose page pairing folds into a booklet when printed duplex and stacked
Version 3.114.0
Nowości
- Rozszerzono typowane funkcje odczytu akcji
GetAnnotActionInfoiGetOutlineActionInfoo cztery kolejne rodzaje akcji — Hide (z liczbą ukrywanych celów i flagą ukrycia lub pokazania), SubmitForm (adres URL wysyłania i liczba pól), ResetForm (liczba pól) oraz ImportData (plik źródłowy) — a także o udostępnianie nazwy zawartej w akcjach Named, na przykładNextPage; obie funkcje korzystają teraz ze wspólnego parsera, dzięki czemu łącza adnotacji i zakładki raportują identyczne informacje
Version 3.113.0
Nowości
- Nowości form-field formatting helpers:
SetFormFieldNumberFormat(decimal places, separator style, negative style and currency placement),SetFormFieldPercentFormatandSetFormFieldDateFormat(Acrobat date picture strings such asmm/dd/yyyy) each write the standard Acrobat formatting JavaScript pair onto the field's additional actions — a keystroke filter plus a display formatter — so conforming viewers validate input and render formatted values without hand-written JavaScript
Version 3.112.0
Nowości
- Nowości Sound annotation creation:
AddSoundAnnotationFromFilereads an uncompressed PCM WAV file (8 or 16 bit, mono or stereo) and embeds its samples behind a speaker-icon annotation as a/Soundstream in the signed encoding the PDF sound machinery expects, completing the round trip with the existingGetAnnotSoundToFile/GetAnnotSoundToStringreaders
Version 3.111.0
Nowości
- Nowości threaded annotation replies (ISO 32000-1 §12.5.6.3):
AddAnnotationReplyappends a reply to any existing annotation as a hidden Text annotation whose/IRTreferences the target with the/RTreply relationship, so Acrobat and other viewers show it threaded under the target in the comment panel; combine withAddAnnotationStateand the FDF comment interchange for complete collaborative-review round trips
Version 3.110.0
Nowości
- Nowości mesh and function-based shading rendering, completing coverage of all seven PDF shading types: free-form Gouraud triangle meshes (type 4), lattice-form Gouraud meshes (type 5), Coons patch meshes (type 6) and tensor-product patch meshes (type 7) are decoded from their bit-packed data streams — including shared-edge patch flags,
/Decodevalue mapping and optional colour/Functionramps — and painted through the Cairo engine's native mesh gradients; function-based shadings (type 1) are approximated by sampling the shading function over its domain into a fine patch grid; supported colour spaces cover DeviceRGB, DeviceGray, DeviceCMYK and ICCBased alternates (the GDI+ engine has no mesh gradient primitive and leaves mesh-shaded areas unpainted)
Version 3.109.0
Nowości
- Z użytych po odczytach opcji o edytowaniu (phase 4) z modyfikacjami dla
TPDFContentProgram.GetTextRunsdo użytych od przypisania instrukcji na podmienienie u wskazań we wdrożeniu o opcji na wskazanym uReplaceTextRunz opartych przy wymianach do wpisywanych pod opcję tekstów pod zdefiniowane parametry bez maskowania.
Version 3.108.0
Nowości
- Nowości an object model for page geometry to the content editing framework (phase 3):
TPDFContentProgram.LiftPathraises a path object (move/line/curve/rectangle construction operators plus the clipping and painting operators that end it) into an editableTPDFPathof subpaths and segments;TPDFPath.Transformapplies an affine matrix to every point (move, scale, rotate or skew existing artwork);LowerPathwrites the modified geometry back over the original instructions, ready forWritePageContentLayer
Version 3.107.0
Nowości
- Rozszerzono mechanizm edycji zawartości (etap 2) o udogodnienia na poziomie instrukcji w
TPDFContentProgram:InsertFromSourceanalizuje fragment strumienia zawartości i wstawia jego instrukcje w dowolnej pozycji;SetOperandprzepisuje pojedynczy operand ze składni źródłowej, na przykład zmienia współrzędną lub kolor wypełnienia;OperandTextodczytuje operand;InstructionGroup,FindNextOpiFindNextGroupsłużą do nawigowania po liście instrukcji według operatora albo kategorii operatorów ISO 32000-1
Version 3.106.0
Nowości
- Nowości the first phase of the structured content editing framework:
ParsePageContentLayerdecodes a page content layer into an editableTPDFContentProgram— a list of instructions, each one PDF content operator (all 73 operators of ISO 32000-1 Table 51) with its decoded operand objects — andWritePageContentLayerserialises the program back into the page, so callers can parse, inspect, delete or reorder drawing instructions and rewrite the page;GetPageContentLayerCountreports the number of content layers, which are edited independently; the emitter is behaviour-preserving (an unmodified round trip renders pixel-identically), unknown operators survive unchanged and inline images are carried verbatim
Version 3.105.0
Nowości
- Nowości a reading-order text extraction mode:
GetPageTextoption 9 returns the page text in visual reading order using recursive whitespace analysis (XY-cut), so multi-column layouts come out column by column — a full-width heading first, then the whole left column, then the right column — instead of interleaving the columns line by line as the geometric top-then-left orderings do
Version 3.104.0
Nowości
- Nowości signer-certificate introspection to the signature verifier:
GetSignerCertificatedecodes the PKCS#7 payload of the first signature field and returns a typed summary of the embedded signer certificate — subject and issuer display names, the serial number in conventional hex form, the UTC validity window (NotBefore/NotAfter) and a convenience flag reporting whether the certificate is currently within that window; the signer is matched among the embedded certificates by issuer and serial number
Version 3.103.0
Nowości
- Nowości
NewRGBRadialShader, the radial counterpart ofNewRGBAxialShader: registers a named two-circle radial gradient (ShadingType 3, ISO 32000-1 §8.7.4.5.3) blending between two RGB colours, with optional colour extension beyond the circles; select it with the existingSetFillShader,SetLineShaderorSetTextShaderto paint circular “glow” fills, strokes and text
Version 3.102.0
Nowości
- Nowości radial (ShadingType 3) gradient rendering (ISO 32000-1 §8.7.4.5.4): the page renderer now paints two-circle radial
shadings used by sh operators and shading-pattern fills, in addition to the previously supported axial (ShadingType 2) gradients; supported through both the GDI+ and Cairo raster engines with multi-stop colour functions, DeviceRGB/DeviceCMYK/DeviceN/Separation/ICCBased colour spaces and/Extendhandling
Version 3.101.0
Nowości
- Nowości cloudy border effects (ISO 32000-1 §12.5.4):
SetAnnotCloudyEffectturns the border of a Square, Circle, Polygon or FreeText annotation into a “revision cloud” of connected semicircles by writing the/BEborder effect dictionary, with intensity 1 or 2 matching Acrobat's Cloudy styles and 0 removing the effect again;GetAnnotCloudyEffectreads the setting back (0 = no cloud, else the 1..2 intensity)
Version 3.100.0
Nowości
- Nowości annotation review states (ISO 32000-1 §12.5.6.3):
AddAnnotationStaterecords a review status change for an existing annotation by appending a hidden Text annotation whose/IRTpoints at the target and whose/State+/StateModelcarry the status, supporting theReviewmodel (None/Accepted/Rejected/Cancelled/Completed) and theMarkedmodel (Unmarked/Marked) used by Acrobat's comment-review workflow;GetAnnotStateandGetAnnotStateModelread the recorded strings back from any annotation (empty when absent)
Poprawki
- Poprawki a load-time failure that prevented applications built with recent development versions from starting (a Windows certificate-name lookup was bound to a non-existent DLL entry point), and repaired compile regressions in the FDF comment import, page-range rotation and signature-flag paths
Version 3.99.0
Dodano
- Dodano API do odczytu odcisku palca dokumentu i przejścia strony:
GetDocumentFileIDzwraca stały identyfikator dokumentu z tablicy/IDw trailerze (pierwszy element zakodowany szesnastkowo), przydatny jako stabilny klucz pamięci podręcznej lub odcisk palca dokumentu;GetPageTransitionto odpowiednik odczytu dlaSetPageTransition, zwracający styl przejścia jako silnie typowaną wartośćTPDFlibPageTransitionoraz czas wyświetlania i czas trwania przejścia poprzez odwrotne mapowanie zapisanych wpisów/Trans/S,/Dmi/M
Version 3.98.0
Dodano
- Dodano obrót zakresu stron i introspekcję miniatury:
RotatePageRangestosuje obrót o 0/90/180/270 do każdej strony w zakresie (opakowując istniejące, jednostronicowe wywołanieRotatePage, dzięki czemu wywołujący nie potrzebują już pętli dla każdej strony);HasPageThumbnailraportuje, czy strona zawiera wpis/Thumb;GetPageThumbnailInfoodczytuje szerokość, wysokość i liczbę bitów na komponent obrazu XObject miniatury
Version 3.97.0
Dodano
- Dodano czytniki rozszerzonych właściwości adnotacji:
GetAnnotColorodczytuje tablicę kolorów/C(0..1 RGB, z flagą HasColor rozróżniającą „brak jawnego koloru” od „jawnego czarnego”);GetAnnotBorderWidthodczytuje/BS /W, wracając awaryjnie do starszej tablicy/Border;GetAnnotOpacityodczytuje kanał alfa pociągnięcia/CA(domyślnie 1.0);GetAnnotCreationDateodczytuje znacznik czasu/CreationDate;GetAnnotFlagsodczytuje bajt flag widoczności/drukowania/F
Version 3.96.0
Dodano
- Dodano API do introspekcji bezpieczeństwa po stronie odczytu:
IsEncryptedraportuje, czy wczytywany dokument zawiera słownik/Encrypt;GetEncryptionLevelzwraca silnie typowaną siłę zabezpieczeń (0=none, 1=RC4-40, 2=RC4-128, 3=AES-128, 4=AES-256, 5=AES-256 Acrobat X) pasującą do opcji szyfrowania po stronie zapisu;GetUserPermissionszwraca surowe słowo uprawnień/Pdla bezpośredniego testowania bitowego;IsOwnerPasswordraportuje, czy dokument został otwarty przy użyciu poświadczeń właściciela
Version 3.95.0
Dodano
- Dodano zaawansowane drukowanie i zastępowanie tekstu:
PrintDocumentAdvancedobsługuje pełny DEVMODE drukarki (dupleks, orientacja, kolor, jakość wydruku, rozmiar papieru, podajnik papieru) na wierzchu liczby kopii/sortowania za pomocą rekordu o określonym typieTPDFlibPrintSettings, stosując każde niedomyślne pole poprzez istniejący mechanizm profilu niestandardowej drukarki;SearchAndReplaceTextwykonuje wyszukiwanie w danym zakresie stron i dla każdego trafienia maskuje oryginalny blok tekstu nieprzezroczystym, białym prostokątem, a następnie rysuje zastępczy tekst w punkcie początkowym bloku w czcionce wybranej przez wywołującego, naśladując działanie nakładania-zastępowania znane z PDFtoolkit SearchAndReplace
Version 3.94.0
Dodano
- Dodano wymianę adnotacji w formacie FDF (Acrobat „Export/Import Comments”):
ExportAnnotationsToFDFStringiExportAnnotationsToFDFprzechodzą przez tablicę/Annotskażdej strony i serializują każdą adnotację jako wpis/Type /Annotw tablicy/AnnotsFDF, przenosząc/Subtype,/Contents,/Rect, etykietę autora/T,/Subji indeks/Pageliczony od zera;ImportAnnotationsFromFDFStringiImportAnnotationsFromFDFanalizują taki plik FDF za pomocą prostej maszyny stanów i odtwarzają każdy wpis jako nową adnotację na dopasowanej stronie, zachowując pełny słownik adnotacji zamiast spłaszczać go do karteczki z notatką