Laddad PDF till PDF/A-4 med bevarad text och vektorer
HPDFArchivalConversion erbjuder en bevarandeprofil för laddade dokument vars synliga teckensnitt, färgrymder och renderingsresurser kan uppfylla PDF/A-4 utan att deras sidinnehåll byts ut
Konverteraren behåller ursprungliga textoperatorer, vektorpaths, bilder, sidgeometri och befintliga OCR-textlager, plattar ut synliga normal-annoterings- och widgetappearances till vektor-Form XObjects, reparerar stött metadata- och strukturbortfall och validerar det serialiserade resultatet före publiceringen
Denna profil rastrerar aldrig en sida: RasterizedPages förblir noll, även när OCR renderar en tillfällig igenkänningsbitmapp och lägger till osynlig sökbar text
Körtidsacceptans täcker Delphi Win32 och Win64; Windows FPC kompilerar implementeringen från färska källor, och de genererade publika headerfilerna kompilerar med C++Builder Win32 och Win64x
Ingångspunkter
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;
Ladda källan först, håll en eventuell indataström som anroparen äger vid liv och ge konverteraren exklusiv åtkomst till dokumentet under operationen
Options := THPDFArchivalPreservationOptions.Default;
if not HPDFConvertLoadedToPDFA4PreservingFile(Source, TargetFileName,
SRGBProfile, Options, Report) then
raise Exception.Create(Report.Conversion.Diagnostic);
Bevarandebevis
Konverteraren tar en ögonblicksbild av den aktuella redigerade källgrafen under en graftransaktion och rullar tillbaka källan efter serialiseringen, och utför sedan allt konverteringsarbete på en fristående laddad klon
Ursprungliga avkodade sidinnehållsströmmar måste förbli byteidentiska och nås från sina ursprungliga sidor i ursprunglig ordning efter omläsning av utdata
Sidresursträd och kvarhållna normal-appearance-resursträd traverseras med objekt- och rekursionsgränser; inbäddade teckensnittsprogram, ToUnicode-mappningar, bilder, ICC-profiler och nästlade Form XObjects behåller sina ursprungliga kodade nyttolaster, verifierade med strömmande SHA-256 och kontrollerade för fortsatt nåbarhet från utdatasidor
Fristående innehållsströmmar omsluter ursprungliga sidoperatorer med grafiktillståndsskydd och rymmer tillagda appearance-operatorer, vilket undviker den native vägen med tillägg i en enda ström som skulle skriva om en ursprunglig innehållsström
TextAndVectorContentPreserved blir true först efter att native utdatavalidering och bevarandekontroller godkänts; den nollställs när konverteringen eller filpubliceringen misslyckas
Appearance-hantering
- Synliga normal-
AP/N-appearances mappas från sin Form BBox och Matrix till annoteringens Rect med native annoteringsplattning, med egna teckensnitt och resurser behållna - Flaggorna Invisible, Hidden och NoView förhindrar målning även när en befintlig normal-appearance finns; Popup-annoteringar tas bort utan målning
- Ramlösa länkar utan en normal-appearance tas bort utan målning endast när en explicit nollbreddsram fastställer att de saknar synlig ram
SynthesizeMissingAppearancesär true som standard och anropar native generering av markup- eller fältappearance; undertyper som inte stöds, ogiltiga rektanglar eller misslyckad generering avvisar konverteringen- Saknade textual-appearances stöder ASCII-värden med en kompatibel native teckensnittskodning; hexadecimala, Unicode- eller maskerade textual-värden kräver en explicit normal-appearance
- Syntetiserade textual-appearances kontrolleras mot sina källvärden i om-läst sökbar text efter blankstegsnormalisering; en inkompatibel teckensnittskodning avvisar publiceringen
Att tillhandahålla en befintlig normal-appearance stöder godtycklig inbäddad teckensnittstext som redan representeras korrekt i den appearance:n, inklusive Unicode; konverteraren behåller den appearance:n i stället för att byta till ett systemteckensnitt
Plattning tar bort annoteringsinteraktion, redigerbara fält, beräkningar, actions och signaturfält samtidigt som synliga appearances behålls; varje berörd annotering och varje syntetiserad appearance ger en förlustpost med sin källsida, annoteringsindex och objektnummer när det finns
Färg, teckensnitt och explicita förluster
ICC-argumentet som krävs är en sRGB matrix/TRC-profil som den befintliga arkivvalidatorn accepterar; varje befintlig utdataprofil måste ha exakt samma avkodade byte som den tillhandahållna profilen, annars avvisas konverteringen för att inte tolka om det befintliga utdatavillkoret
Konverteraren lägger bara till en sRGB PDF/A output intent vid behov, synkroniserar den verkliga serializern till en PDF 2.0-header och anropar avgränsad basreparation av PDF/A-4-metadata och struktur
Den inbäddar inte saknade synliga teckensnittsprogram, kodar inte om ursprunglig text, färgar inte om DeviceCMYK-operatorer, byter inte ut ett befintligt utdatavillkor och plattar inte ut sidtransparens till en bitmapp; olösta native preflight-fynd avvisar publiceringen
Krypterade källor måste dekrypteras före konverteringen; signaturfält kräver explicit AllowSignatureInvalidation, och befintliga inbäddade filer kräver explicit RemoveEmbeddedFiles eftersom denna profil riktar sig mot bas-PDF/A-4
Losses redovisar också signaturogiltigförklaring, borttagning av inbäddade filer, borttagning av äldre Info-dictionaries och borttagning av förbjuden katalog- eller presentationsmetadata
Befintlig XMP behålls när den stöds; när metadata genereras överförs information om titel, författare, ämne och nyckelord som stöds, medan godtyckliga äldre Info-fält inte garanteras överleva
OCR och budgeter
AddOCRToImagePages är false som standard; aktiveras den igenkänns sidor utan extraherbar text och osynlig text läggs till utan att ursprungligt innehåll eller befintliga OCR-lager byts ut
Sätt OCREngine till en applikationsmotor eller lämna den som nil för den inbyggda avgränsade ASCII-OCR-motorn, vars språk- och typografitäckning fortfarande är den hos den inbyggda igenkänningsprofilen
OCROptions styr igenkänningsupplösning och ordbudgeter, medan konverteraren tvingar skip-pages-with-text, kvarhållande av befintliga OCR-lager och utelämnande av en ny optional-content-grupp
Limits använder THPDFArchivalConversionOptions.Default för sidantal, objektantal, etablerade utdata-byte, individuellt strömarbete, kumulativt strömarbete, avbrott och synkrona kontrollpunkter; rasterpixelgränser gäller bara när OCR renderar igenkänningsbitmappar
Ytterligare standardvärden är 1 024 förlustposter, 1 048 576 extraherade eller förväntade textkodenheter och 4 000 000 innehållstokens per native valideringspass
Hashning av resursnyttolaster räknar kodade byte mot samma strömarbetsbudgeter; käll- och utdataverifiering förbrukar båda kumulativt arbete, så stora skannsamlingar kan kräva explicit ökad MaxTotalDecodedBytes även om resursverifieringen använder en fast hashbuffert på 64 KiB
Budgeter tillämpas efter källinläsningen och avgränsar konverterarens egna ögonblicksbilder respektive etablerad utdata separat; konfigurera inläsargränser när du tar emot opålitlig indata
Publicering och validering
Ström-API:et kräver en tom seekbar destination vid position noll och avvisar källalias; den kopierar etablerade byte först när omläsning, native validering, bevarandekontroller och avbrottskontroller lyckats
Ett skrivfel på destinationen utlöser en bäst-effort-återställning; en godtycklig egen ström kan avvisa den återställningen, så använd filingångspunkten för atomär filpublicering
Fil-API:et söker efter källalias, skapar en exklusiv temporär fil bredvid målet, spolar den och byter målet med MoveFileEx först när alla kontroller godkänts; tidigare fel behåller ett befintligt mål och tar bort den temporära filen
InitialValidationIssues, Repair, Conversion.ValidationIssues, OCR-detaljer, strömantal, extraherade textantal och explicita förluster finns kvar för granskning
Native validering täcker de stödda HotPDF PDF/A-4-reglerna och är ingen generell certifiering av godtyckliga PDF-filer; regressionsacceptansen använder dessutom fristående pypdf- och MuPDF-kontroller plus veraPDF PDF/A-4-validering på genererade appearance- och native OCR-artefakter
Verklig korpusregression omfattar Word- och biblioteksguider med inbäddade teckensnitt och en kinesisk skannsamling på 380 sidor, medan en handelsrapport med icke inbäddade teckensnitt och DeviceCMYK-innehåll är ett explicit avvisningsfall
Regressionskommandon
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
Delphi-runner:n undertrycker visarstart och inkluderar både bevarande- och befintliga raster-regressionsfixtures; fristående veraPDF-acceptans använder den verkliga PDF/A-4-valideringsprofilen
Relaterade ämnen
Rasteriserad arkivkonvertering tillhandahåller en separat profil med explicit förlust av ursprunglig text och vektorer när native rendering stöds