THPDFHeadlessDocument
HPDFHeadlessDocument dostarcza konsolowe API dokumentów dla natywnego Linux i Windows, używając istniejącego parsera obiektów HotPDF, helperów Direct File, dekoderów fontów, interpretatora zawartości, dekoderów filtrów i writera xref
Wczytywanie dokumentu przyjmuje klasyczne tablice odwołań krzyżowych, strumienie xref, hybrydowe sekcje xref, łańcuchy przyrostowe Prev, obiekty bezpośrednie i skompresowane, dziedziczone zasoby stron, tablice zawartości, Form XObjects i drzewa pól AcroForm
Boczne strumienie hybrydowe mają pierwszeństwo przed towarzyszącą tabelą, a nowsze rewizje przed starszymi; członkowie object-stream są dekodowani i parsowani leniwie przez współdzielony parser obiektów
Cykl życia i własność
Create używa THPDFHeadlessDocumentOptions.Default, podczas gdy przeciążenie z opcjami przyjmuje jawne budżety i token anulowania wywołującego
LoadFromFile zamyka poprzedni dokument, otwiera źródło tylko do odczytu, wczytuje bieżący graf obiektów i zamyka stan częściowy przy niepowodzeniu; Close zwalnia źródło i wszystkie wczytane obiekty
LoadFromFile(FileName, Password) uwierzytelnia dokumenty Standard AES-256 R5 albo R6 przez THPDFHeadlessAES256Security; oryginalne przeciążenie z jednym argumentem używa pustego hasła
Hasła użytkownika muszą udzielać uprawnienia ekstrakcji tekstu albo wypełniania formularzy przed wykonaniem tych operacji, podczas gdy hasła właściciela omijają ograniczenia uprawnień użytkownika; błędne hasła, niedopasowania uwierzytelnionego Perms, odmowane operacje i zniekształcone ładunki szyfrow mają odrębne diagnostyki dokumentu
Bezpośrednie łańcuchy i strumienie są deszyfrowane współdzielonym kodem kryptograficznym, skompresowani członkowie są deszyfrowani tylko ze swoim kontenerem, a zaszyfrowane przyrostowe podmiany pozostają zaszyfrowane pod oryginalnymi kluczami i polityką uprawnień
Hasła używają bajtów UTF-8 obcinanych do 127 bajtów bez normalizacji SASLprep; nieobsługiwane handlery, jawne filtry Crypt i polityki PDF MAC są diagnozowane, a nie ignorowane
Zakodowane klucze słowników i nazwy zasobów są dekodowane przed użyciem, wielkość liter pozostaje znacząca, a zduplikowane zdekodowane klucze są odrzucane; flagi pól i MaxLen muszą mieścić się we wspieranym niedodatnim zakresie 32-bitowym
Instancje nie są bezpieczne dla wątków; używaj jednej instancji na worker i utrzymuj jej token anulowania żywy do zniszczenia instancji
Strony i tekst
PageCount raportuje liczbę liści drzewa stron; ExtractPageText(PageIndex) przyjmuje indeks od zera i zwraca tekst Unicode złożony ze współdzielonego interpretatora glifów
ExtractPageTextBounded stosuje tymczasowe limity glifów i strumieni przed przygotowaniem tekstu i przywraca wszystkie oryginalne opcje zasobów po sukcesie, niepowodzeniu albo anulowaniu
GetObjectAccess wystawia pożzyczony dostęp tylko do odczytu do katalogu, informacji i obiektów z ograniczoną alokacją indeksu dla natywnego porównania strukturalnego i pełnego
Dekodowanie tekstu podąża za kodowaniami fontów, różnicami kodowań, osadzonymi CMap ToUnicode, jawnymi szerokościami i dostawcą metryk standardowych fontów; zagnieżdżone Form XObjects stosują swoje macierze i używają własnych albo dziedziczonych słowników zasobów
Fallback standardowych fontów Linux wymaga Fontconfig i zainstalowanych fontów TrueType; złożone fonty dokumentu muszą dostarczać wspieraną strategię dekodowania, a brakujące zasoby fontów produkują diagnostykę
AppendPageText dodaje widoczny albo dopasowany niewidzialny tekst Unicode, zachowując oryginalną zawartość stron i zaszyfrowane polityki bezpieczeństwa
AppendImportedPages klonuje wybrane grafy zasobów stron, dziedziczoną geometrię i widoczne wyglądy normal, zachowując istniejące rewizje celu i uwierzytelnioną politykę szyfrowania
Wartości text AcroForm
FormFieldCount, GetFormField(FieldIndex) i FindFormField(Name) wyliczają pola terminalne pełni kwalifikowanymi nazwami i dziedziczonymi typami pól, flagami, maksymalnymi długościami i wartościami; indeksy są od zera, a brakująca nazwa zwraca -1
SetTextFieldValue(FieldIndex, Text) przyjmuje zapisywalne pola Tx, zapisuje łańcuch PDF UTF-16BE i ustawia NeedAppearances=true na słowniku AcroForm
Ta metoda tylko wartości polega na regeneracji przez przeglądarkę; przeglądarki nieodtwarzające wyglądów mogą nadal wyświetlać stary wygląd albo pusty widget
SetTextFieldValueWithAppearance generuje jawne wyglądy Unicode dla każdego istniejącego widgetu, używając dostarczonego przez wywołującego fontu TrueType, rzeczywistych metryk glifów, kodowania Identity-H, ToUnicode i pełnego osadzania FontFile2
Profil wyglądów wspiera tekst jednowierszowy i wielowierszowy, zawijanie, komórki comb, obroty o ćwierć obrotu, stały rozmiar albo auto-dopasowanie, wyrównanie i opcjonalne natywne złożone shapowanie HarfBuzz/FriBidi
SetChoiceFieldValuesWithAppearance obsługuje listy wielokrotnego wyboru, dziedziczone opcje, posortowane tablice export i każdy widoczny zaznaczony wiersz; helper pojedynczej wartości wspiera tež etykiety export/display combo
GetChoiceFieldValues odczytuje kompletną zaznaczoną tablicę export; SetButtonFieldValueWithAppearance i SetPushButtonAppearance generują rzeczywiste stany przycisków i podpisy
Nowe obiekty i strumienie wyglądów są ograniczane przed zmianami pól i pozostają zaszyfrowane pod oryginalną polityką bezpieczeństwa AES przy zapisie; natywny Cairo Linux i niezależne czytniki konsumują te same wygenerowane obiekty
Pola tylko do odczytu, wartości dłuższe niż MaxLen w jednostkach kodu UTF-16, pola nietekstowe, formularze XFA, pola podpisane i uprawnienia dokumentów certyfikowanych są odrzucane dla edycji
Podpisane dokumenty używają uwierzytelnionych polityk DocMDP i FieldMDP: dozwolone aktualizacje formularzy zachowują istniejące podpisane rewizje, podczas gdy zablokowane pola, ograniczenia P1 i próby nadpisania podpisanych pól podpisu są odrzucane
Zwalidowane dowody DSS/VRI dodają uwierzytelnione dane certyfikatów i odwołań do rewizji przyrostowej bez zmieniania istniejących podpisów ByteRange
Weryfikacja podpisów
SignatureCount wylicza podpisane pola podpisów AcroForm, a VerifySignature(SignatureIndex, Options) waliduje podpisy od zera przez współdzielony parser i streamingowego dostawcę CMS OpenSSL 3
Profil PDF przyjmuje adbe.pkcs7.detached i automatycznie rozpoznawane ETSI.CAdES.detached z zawartością szesnastkową albo standardową literałową; CAdES zawsze uwierzytelnia wiązanie certyfikatu podpisującego ESS, podczas gdy jawne ustawienia CA ewaluują zaufanie osobno
DocTimeStamp z ETSI.RFC3161 automatycznie uwierzytelnia prawdziwe zamknięte TSTInfo, ESS, cel TSA i nazwę podpisującego oraz dokładny imprint PDF; skonfigurowane korzenie i CRL znaczników czasu osobno ewaluują zaufanie TSA
Weryfikacja waliduje dokładną niepodpisaną przerwę łącznie z jej ogranicznikami i binduje swoje zdekodowane bajty do bieżącego słownika podpisu przed weryfikacją kryptograficzną
Wynik rozróżnia integralność, jawnie ewaluowane zaufanie CA i bajty niepodpisane po uwierzytelnionej rewizji; nieobsługiwane profile podpisów PDF produkują typowaną diagnostykę
Zobacz HPDFVerifyHeadlessCMS dla wymagań runtime i THPDFHeadlessCMSOptions dla budżetów i ustawień zaufania
Przyrostowe podpisy zatwierdzenia
SignToFile podpisuje istniejące zapisywalne, niepodpisane pole Sig i publikuje niezależnie przyrostowo zaktualizowany PDF używając dostarczonego przez wywołującego certyfikatu PEM i nieszyfrowanego klucza prywatnego PEM
AddSignatureField tworzy widget strony i jego linki AcroForm, włącznie z nowym AcroForm na prostym zaimportowanym PDF; SetSignatureFieldAppearance generuje jego widoczny podpis, a SignPFXToFile wczytuje tożsamość certyfikat/klucz PKCS12 z łańcuchem
CertificationPermission tworzy pierwszy podpis certyfikacji DocMDP; P2 i P3 pozwalają na kolejne podpisy zatwierdzenia w istniejących polach, podczas gdy P1 odrzuca dalsze podpisy
Oryginalne bajty źródła i wczytany graf obiektów pozostają niezmienione; późniejsze podpisy zatwierdzenia zachowują bajty wcześniejszych podpisów i ich uwierzytelnione granice rewizji
Standardowe szyfrowanie AES-256 R5 i R6, hasła, ID i uprawnienia pozostają w mocy, włącznie z zaszyfrowanymi źródłami object-stream; łańcuch Contents podpisu podąża za wyjątkiem PDF od szyfrowania
Istniejące wartości podpisów, pola tylko do odczytu, polityki dokumentów certyfikowanych, odmowane uprawnienia wypełniania formularzy, rozbieżne tokeny anulowania i wyczerpane budżety wyjścia są odrzucane bez publikacji wyjścia
Znaczniki czasu dokumentu
TimestampToFile tworzy prawdziwy znacznik czasu dokumentu RFC 3161 w istniejącym niepodpisanym polu podpisu bez klucza podpisującego aplikacji, używając transportu TSA należącego do wywołującego i jawnego zaufania TSA
Writer zachowuje oryginalne rewizje i bezpieczeństwo AES, deklaruje rozszerzenie ESIC dla wejść sprzed PDF 2.0 i atomowo publikuje dopiero po przejściu kontroli nonce, imprintu, podpisu, certyfikatu, skonfigurowanych odwołań i seed
Niezbędne uwierzytelnione zmiany znacznika czasu dokumentu są dozwolone pod DocMDP i FieldMDP; zwykłe edycje formularzy i podpisy zatwierdzenia zachowują swoje oryginalne ograniczenia
Wymiana formularzy FDF i XFDF
ExportAnnotationsFDF eksportuje ograniczone grafy obiektów adnotacji i ich współdzielone zasoby wyglądów; SaveAnnotationsFDFToFile przygotowuje nazwane podmiany i dokleja w niezależnej atomowej rewizji PDF
Binarny profil adnotacji FDF zachowuje szyfrowanie i politykę podpisów uwierzytelnionego dokumentu, wrażliwe na kontekst lokalne referencje stron GoTo oraz dokładnie niezmienioną publikację; po zapisie pozostawia wczytany dokument niezmieniony
SaveAnnotationsXFDFToFile dokleja ograniczone zmapowane adnotacje do niezależnej rewizji przyrostowej; HPDFExportHeadlessAnnotationsXFDF zwraca ich bajty XFDF
ExportFormData zwraca ograniczone dane pól Unicode, włącznie z rzeczywistymi tablicami choice i stanami export checkbox albo radio
ImportFormDataToFile regeneruje prawdziwe wyglądy na prywatnym uwierzytelnionym grafie rewizji i atomowo publikuje przyrostowy PDF, zachowując stan wczytanego źródła
ImportRichFormDataToFile importuje ograniczony profil XHTML z FDF RV albo XFDF value-richtext z rzeczywistymi programami fontów regular, bold, italic i bold-italic
SaveRichTextFieldUpdatesToFile stosuje pola skalarne i oryginalne typowane runy rich w jednej niezależnej atomowej rewizji, zachowując rzeczywiste programy fontów i precyzję numeryczną PDF; niezmienione chronione pola wymagają pasujących zdekodowanych wyglądów i rozwiązanych zasobów dla każdego widgetu
Istniejące szyfrowanie, flagi tylko do odczytu, uwierzytelnione DocMDP i FieldMDP, oryginalne podpisy, anulowanie i budżety zasobów pozostają wymuszane; zobacz Natywne dane formularzy FDF i XFDF dla wspieranej składni i granic wymiany skalarnej
Pożzyczony dostęp do renderowania
GetRenderAccess(PageIndex) dostarcza istniejący słownik strony, dziedziczone zasoby, rozwiązywacz fontów, rozwiązywanie obiektów, kontrolę uprawnień, token anulowania i ograniczone callbacki zdekodowanych strumieni przez THPDFHeadlessRenderAccess
To szeregowy pożzyczony widok tylko do odczytu; dokument musi pozostać wczytany i niezmieniony do zakończenia renderowania, a wywołujący nie mogą mutować jego wystawionego grafu obiektów
Callback RequireOutputPath widoku sprawdza prospektywne wyjście względem kanonicznej ścieżki źródła i fizycznej tożsamości pliku bez tworzenia albo modyfikowania pliku
Niezależne wyjście
ExtractPageGlyphs zwraca pozycjonowane glify przez ograniczonego przechodnia zagnieżdżonej zawartości; AnalyzePageSemanticText dostarcza semantyczny tekst i geometrię źródła dla natywnego porównywania umów
SaveToFile(FileName) kopiuje oryginalne bajty i dokleja podmieniane wartości obiektów, klasyczną tabelę xref i trailer związany przez Prev; członkowie obiektów skompresowanych są materializowani jako obiekty bezpośrednie w doklejanej rewizji, a oryginalne bajty strumieni są zachowywane
Publikacja plikowa Windows używa wyłącznie utworzonego pliku staging w katalogu docelowym, flushuje go i publikuje przez atomową zmianę nazwy
Niepowodzenia budżetu, anulowania albo serializacji zachowują istniejący cel i usuwają niepublikowany plik staging; źródło pozostaje tylko do odczytu
Natywny PDF przeglądu z adnotacjami eksportuje rzeczywiste podświetlenia Unicode i widoczne wyglądy z uwierzytelnionymi uprawnieniami adnotacji, zachowując oryginalny wczytany dokument i rewizje podpisów
Granice formatu
Bieżący profil wspiera szyfrowanie Standard AES-256 R5 i R6, jawnie diagnozuje nieobsługiwane handlery bezpieczeństwa i filtry strumieni i odrzuca wycofane generacje obiektów wolnych, których jego writer nie może reprezentować
Strumienie xref bootstrap wymagają bezpośrednich wartości słownika i bezpośredniego ograniczonego Length; zniekształcone szerokości, nakładanie podsekcji, offsety bez znaku ponad Int64, niedopasowania członków skompresowanych, cykle referencji i skonfigurowane limity produkują typowane diagnostyki
Zdekodowana zawartość wspiera filtry Flate, ASCIIHex, ASCII85 i LZW ze wspieranymi predyktorami i pośrednimi długościami strumieni; ładunki obrazów nie są dekodowane dla ekstrakcji tekstu
Natywne workflow podpisywania obejmują pola podpisów, widoczne wyglądy i certyfikację; uwierzytelnione polityki podpisanych formularzy, API znaczników czasu i walidacji długoterminowej zachowują swoje jawne opcje integralności i zaufania
Akceptacja
Nazwane rodziny fontów rich dodają wiele rzeczywistych dostarczonych rodzin przez SetRichTextFieldValueWithFamilies i ImportRichFormDataWithFamiliesToFile, z istniejącymi politykami pól, bezpieczeństwa i transakcji
Natywne pola rich-text dostarczają typowane stylowane runy, rzeczywiste wyglądy osadzonych fontów stylów, zsynchronizowane wartości V i RV, zaszyfrowane wyjście przyrostowe i ograniczone transakcyjne edycje; GetRichTextFieldValue odczytuje przechowywany albo dziedziczony XHTML
Tests/Linux/Run-HeadlessDocumentTests.sh buduje natywny plik wykonywalny ELF z wyczyszczonymi zmiennymi pulpitu i sprawdza zależności bibliotek GUI; Run-HeadlessDocumentTests-Windows.cmd Win32 i Win64 ćwiczą to samo współdzielone API dokumentów
Zobacz THPDFHeadlessFormField, EHPDFHeadlessDocumentError i THPDFHeadlessDiagnosticCode dla zwracanych wartości i typowanych diagnostyk
Usuwanie adnotacji
Usuwaj adnotacje stron po dokładnej tożsamości strony i nazwy Unicode przez SaveAnnotationRemovalsToFile, z kaskadami popupów i odpowiedzi, ograniczonym przygotowaniem i atomowym osobnym wyjściem
Wczytany dokument pozostaje niezmieniony; niezmieniony wybór kopiuje dokładną bieżącą rewizję, a przyrostowe usuwanie zachowuje historyczne bajty