Wczytany PDF do PDF/A-4 z zachowaniem tekstu i wektorów

HPDFArchivalConversion oferuje profil zachowania dla wczytanych dokumentów, których widoczne fonty, przestrzenie kolorów i zasoby renderowania mogą spełnić PDF/A-4 bez podmiany zawartości stron

Konwerter zachowuje oryginalne operatory tekstu, ścieżki wektorowe, obrazy, geometrię stron i istniejące warstwy tekstu OCR, spłaszcza widoczne wyglądy normal adnotacji i widgetów w wektorowe Form XObjects, naprawia wspierane problemy metadanych i strukturalne i waliduje zserializowany wynik przed publikacją

Ten profil nigdy nie rasteryzuje strony: RasterizedPages pozostaje zerem, włącznie gdy OCR renderuje tymczasową bitmapę rozpoznawania i dokleja niewidzialny przeszukiwalny tekst

Akceptacja runtime obejmuje Delphi Win32 i Win64; Windows FPC kompiluje implementację ze świeżych źródeł, a wygenerowane publiczne nagłówki kompilują z C++Builder Win32 i Win64x

Punkty wejścia

function HPDFConvertLoadedToPDFA4Preserving(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalPreservationOptions;
  out Report: THPDFArchivalPreservationReport): Boolean;

function HPDFConvertLoadedToPDFA4PreservingFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalPreservationOptions;
  out Report: THPDFArchivalPreservationReport): Boolean;

Najpierw wczytaj źródło, utrzymuj żywotność każdego należącego do wywołującego strumienia wejściowego i daj konwerterowi wyłączny dostęp do dokumentu podczas operacji

Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
  SRGBProfile, Options, Report) then
  raise Exception.Create(Report.Conversion.Diagnostic);

Dowód zachowania

Konwerter robi snapshot bieżącego edytowanego grafu źródła pod transakcją grafu i wycofuje źródło po serializacji, po czym wykonuje całą pracę konwersji na niezależnym wczytanym klonie

Oryginalne zdekodowane strumienie zawartości stron muszą pozostać identyczne bajt w bajt i osiągalne z oryginalnych stron w oryginalnej kolejności po ponownym wczytaniu wyjścia

Drzewa zasobów stron i zachowane drzewa zasobów wyglądów normal są przechodzone z limitami obiektów i rekurencji; osadzone programy fontów, mapy ToUnicode, obrazy, profile ICC i zagnieżdżone Form XObjects zachowują swoje oryginalne zakodowane ładunki, weryfikowane streamingowym SHA-256 i sprawdzane pod kątem dalszej osiągalności z wyjściowych stron

Niezależne strumienie zawartości otaczają oryginalne operatory strony osłonami stanu grafiki i utrzymują doklejone operatory wyglądów, unikając natywnej ścieżki doklejania pojedynczego strumienia, która przepisywałaby oryginalny strumień zawartości

TextAndVectorContentPreserved staje się true dopiero po przejściu walidacji wyjścia natywnego i kontroli zachowania; jest czyszczone, gdy konwersja albo publikacja pliku zawiedzie

Obsługa wyglądów

Dostarczenie istniejącego wyglądu normal wspiera dowolny tekst osadzonych fontów już poprawnie reprezentowany w tym wyglądzie, włącznie z Unicode; konwerter zachowuje ten wygląd zamiast podstawiać font systemowy

Spłaszczanie usuwa interakcję adnotacji, edytowalne pola, obliczenia, akcje i pola podpisów, zachowując widoczne wyglądy; każdy dotknięta adnotacja i każdy syntetyzowany wygląd produkuje wpis utraty ze swoją stroną źródła, indeksem adnotacji i numerem obiektu, gdy dostępne

Kolor, fonty i jawne utraty

Wymagany argument ICC to profil sRGB matrix/TRC akceptowany przez istniejący walidator archiwalny; każdy istniejący output intent musi mieć dokładnie te same zdekodowane bajty co dostarczony profil, w przeciwnym razie konwersja jest odrzucana, by uniknąć ponownej interpretacji istniejącego warunku wyjścia

Konwerter dodaje output intent PDF/A sRGB tylko, gdy potrzebny, synchronizuje rzeczywisty serializator do nagłówka PDF 2.0 i wywołuje ograniczoną bazową naprawę metadanych i struktury PDF/A-4

Nie osadza brakujących widocznych programów fontów, nie przekodowuje oryginalnego tekstu, nie przemalowuje operatorów DeviceCMYK, nie podmienia istniejącego warunku wyjścia ani nie spłaszcza przezroczystości strony w bitmapę; nierozwiązane natywne ustalenia preflight odrzucają publikację

Zaszyfrowane źródła muszą być odszyfrowane przed konwersją; pola podpisów wymagają jawnego AllowSignatureInvalidation, a istniejące pliki osadzone jawnego RemoveEmbeddedFiles, bo ten profil celuje w bazowy PDF/A-4

Losses raportuje tež unieważnienie podpisów, usuwanie plików osadzonych, usuwanie legacy słowników Info i usuwanie zabronionych metadanych katalogu albo prezentacji

Istniejące XMP jest zachowywane, gdy wspierane; przy generowaniu metadanych wspierane informacje tytułu, autora, tematu i słów kluczowych są przenoszone, podczas gdy dowolne legacy pola Info nie są obiecane do przetrwania

OCR i budżety

AddOCRToImagePages domyślnie false; włączenie rozpoznaje strony bez wyekstrahowalnego tekstu i dokleja niewidzialny tekst bez podmiany oryginalnej zawartości albo istniejących warstw OCR

Ustaw OCREngine na silnik aplikacji albo zostaw nil dla wbudowanego ograniczonego silnika OCR ASCII, którego pokrycie języka i typografii pozostaje pokryciem wbudowanego profilu rozpoznawania

OCROptions steruje rozdzielczością rozpoznawania i budżetami słów, podczas gdy konwerter wymusza skip-pages-with-text, retencję istniejących warstw OCR i pominięcie nowej grupy optional-content

Limits używa THPDFArchivalConversionOptions.Default dla liczby stron, obiektów, etapowanych bajtów wyjścia, pracy pojedynczego strumienia, skumulowanej pracy strumieni, anulowania i synchronicznych checkpointów; limity pikseli rastra stosują się tylko, gdy OCR renderuje bitmapy rozpoznawania

Dodatkowe wartości domyślne to 1,024 wpisów utrat, 1,048,576 jednostek kodu tekstu wyekstrahowanego albo oczekiwanego i 4,000,000 tokenów zawartości na przejście walidacji natywnej

Haszowanie ładunków zasobów zarachowuje zakodowane bajty względem tych samych budżetów pracy strumieni; weryfikacja źródła i wyjścia obie konsumują skumulowaną pracę, więc duże kolekcje skanów mogą wymagać jawnie zwiększonego MaxTotalDecodedBytes, mimo że weryfikacja zasobów używa stałego 64 KiB bufora haszowania

Budżety stosują się po wczytaniu źródła i ograniczają osobno snapshoty posiadane przez konwerter i etapowane wyjście; skonfiguruj limity wczytywania przy przyjmowaniu niezaufanego wejścia

Publikacja i walidacja

API strumienia wymaga pustego seekowalnego celu w pozycji zero i odrzuca aliasy źródła; kopiuje etapowane bajty dopiero po przejściu ponownego wczytania, walidacji natywnej, kontroli zachowania i kontroli anulowania

Niepowodzenie zapisu celu wywołuje reset best-effort; dowolny własny strumień może odrzucić ten reset, więc użyj punktu wejścia plikowego dla atomowej publikacji pliku

API plikowy sonda aliasy źródła, tworzy wyłączny plik tymczasowy obok celu, flushuje go i podmienia cel przez MoveFileEx dopiero po przejściu wszystkich kontroli; wcześniejsze niepowodzenia zachowują istniejący cel i usuwają plik tymczasowy

InitialValidationIssues, Repair, Conversion.ValidationIssues, szczegóły OCR, liczniki strumieni, liczniki wyekstrahowanego tekstu i jawne utraty pozostają dostępne do inspekcji

Walidacja natywna obejmuje wspierane reguły HotPDF PDF/A-4 i nie jest ogólną certyfikacją dowolnych PDF; akceptacja regresji dodatkowo używa niezależnych kontroli pypdf i MuPDF plus walidacji veraPDF PDF/A-4 na artefaktach wygenerowanych wyglądów i natywnego OCR

Regresja rzeczywistego korpusu obejmuje przewodniki Word i biblioteczne z osadzonymi fontami oraz 380-stronicową kolekcję skanów chińskich, podczas gdy raport handlowy z nieosadzonymi fontami i zawartością DeviceCMYK jest jawnym przypadkiem odrzucenia

Polecenia regresji

powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win32
powershell -File Tests/Delphi/Run-ArchivalPreservationTests.ps1 -Platform Win64
python Tests/Delphi/Fixtures/ArchivalPreservation/verify_preserving_output.py
verapdf --format xml --flavour 4 Tests/Delphi/generated/ArchivalPreservation/appearance.pdf Tests/Delphi/generated/ArchivalPreservation/ocr.pdf Tests/Delphi/generated/ArchivalPreservation/native-appearance.pdf

Runner Delphi tłumi uruchamianie przeglądarki i obejmuje fiksatury regresji zarówno zachowania, jak i istniejącego rastra; niezależna akceptacja veraPDF używa rzeczywistego profilu walidacji PDF/A-4

Powiązane tematy

Konwersja archiwalna rastrowa dostarcza osobny profil z jawną utratą oryginalnego tekstu i wektorów, gdy natywne renderowanie jest wspierane