Konvertering av inläst PDF till PDF/A-4-raster
HPDFArchivalConversion skapar ett nytt PDF/A-4-dokument från det synliga sidinnehållet i ett inläst THotPDF-dokument, med strikt inbyggd rendering och en tillhandahållen sRGB ICC-profil
Varje utdatasida innehåller en förlustfritt komprimerad RGB-rasterbild med begärd DPI, där ursprungliga synliga mått, beskärning, rotation och UserUnit återspeglas i utdatasidans geometri
Använd den separata text- och vektorbevarande profilen när ursprungliga inbäddade typsnitt, textoperatorer, vektorsökvägar, bilder, OCR-lager samt synliga annoterings- eller widgetutseenden måste överleva; rasterprofilen bevarar inte de strukturerna
Ingångspunkter
function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
Destination: TStream; const SRGBProfile: TBytes;
const Options: THPDFArchivalConversionOptions;
out Report: THPDFArchivalConversionReport): Boolean;
function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
const TargetFileName: string; const SRGBProfile: TBytes;
const Options: THPDFArchivalConversionOptions;
out Report: THPDFArchivalConversionReport): Boolean;
Läs in källan först och håll eventuella anroparägda indataströmmar levande tills källdokumentet förstörs
Använd filingångspunkten för ordinär arkivpublicering: den sonderar ett befintligt mål för källaliasering innan en exklusiv temporärfil skapas i målkatalogen, validerar hela konverteringen, spolar filen och ersätter målet med MoveFileEx med MOVEFILE_REPLACE_EXISTING och MOVEFILE_WRITE_THROUGH
Fel i konvertering, rendering, validering, avbrott och publicering behåller en befintlig målfil och tar bort den temporära utdatan
Strömingångspunkten kräver ett tomt, seekbart mål vid position noll och avvisar kända alias för indata via IsLoadedSourceStreamAlias; den publicerar byte först efter att hela den mellanlagrade utdatan har klarat inbyggd validering
Ett skrivfel på målet utlöser en best effort-återställning till en tom ström, men en godtycklig enhet eller anpassad ström kan avvisa den återställningen och behålla en ofullständig skrivning; använd filingångspunkten när filpublicering måste vara atomär
Alternativ och resursgränser
| Alternativ | Standardvärde | Betydelse |
|---|---|---|
DPI | 150 | Begärd fysisk upplösning, accepterat intervall 36 till 1200 |
MaxPages | 1000 | Största antal inlästa källsidor |
MaxPixelsPerPage | 40,000,000 | Största antal sidpixlar och största antal pixlar i en enskild källbild |
MaxTotalPixels | 500,000,000 | Största ackumulerade antal utdata-rasterpixlar |
MaxRasterBytes | 256 MiB | Största rasterallokering för sida eller källbild, konservativt kontrollerad med fyra byte per pixel |
MaxOutputBytes | 256 MiB | Största mellanlagrade PDF-storlek, verkställd före strömallokering och skrivningar |
MaxDecodedStreamBytes | 64 MiB | Begränsar varje filterkedja, varje sidas kombinerade innehållspreflight, enskilda inbyggda strömläsningscallbacks, enskilda kodade källbildsströmmar och den inbyggda utdatavalidatorn |
MaxTotalDecodedBytes | 256 MiB | Begränsar ytterligare inbyggt arbete i filtrerade avkodare under konverteringen, kombinerat innehållspreflight över sidor och ackumulerade inbyggda strömläsningscallbacks över sidor |
MaxInputObjects | 200,000 | Största antal redan inlästa indirekta objekt |
CancellationToken | nil | Lånad token som kontrolleras före arbetet, under inbyggd rendering och avkodning samt före publicering |
Checkpoint | nil | Lånad synkron callback som anropas med nil-avsändare vid konverterings- och inbyggda resurskontrollpunkter; anropa inte tillbaka in i källdokumentet |
Avkodningsgränser räknar avkodningsarbete och kan belasta samma filtrerade ström igen under preflight, display-list-kompilering och rendering; att höja en budget är ett explicit anroparbeslut
Pixelpreflight omfattar både den begärda fysiska upplösningen och den inbyggda renderarens heltals-DPI efter UserUnit-skalning; mycket små enheter kan kräva ytterligare rasterpixlar, och icke-heltaliga sidmått kan introducera subpixel-omsampling när bilden mappas tillbaka på den fysiska sidan
Konverteringsgränser gäller efter källinläsning; konfigurera inläsarens egna resursgränser när otillförlitlig indata accepteras
Källans objektgraf behålls, medan läscachar och avkodningsstatistik kan fyllas; renderingsinställningar, avbrottstoken, backend och avkodningsbudget återställs vid både framgång och misslyckande
Ge konverteraren exklusiv åtkomst till sitt källdokument medan den tillfälligt använder dessa inställningar
Rendering och färg
Varje sida måste renderas utan inbyggd reservdiagnostik, utan att diagnostik tappas och utan fel från saknade resurser; innehåll som inte stöds avvisar konverteringen i stället för att publicera en ofullständig sida
ICC-argumentet måste beskriva sRGB med en känd matrix/TRC-representation, de standardiserade D50-adapterade primärfärgerna och IEC:s sRGB-överföringsfunktion; orelaterade RGB-profiler, CMYK-profiler, felformade profiler och LUT-baserade profiler avvisas
Utdata deklarerar en sRGB-OutputIntent och PDF/A-4 XMP-metadata; ett anpassat proof- eller utdata-ICC-arbetsflöde som redan är konfigurerat på källan avvisas eftersom dess bildavkodningsinställningar inte kan tolkas om säkert som sRGB
FPC-bygget kräver sin inbyggda codec-brygga med LittleCMS tillgängligt och avvisar konvertering när den färghanteringsbackend saknas
JPEG- och JPX-bildströmmar, inklusive kodade inline-bilder, får sina faktiska codestream-mått inspekterade före inbyggd pixelavkodning och måste överensstämma med PDF-bildordlistan
JPEG accepterar avgränsade 8-bitars baseline-, extended sequential- och progressive-huvuden; JPX accepterar avgränsade J2K SIZ-huvuden och JP2-boxar av normal längd med högst fyra komponenter och komponentprecision på högst 16 bitar
Kodade codecs har en ytterligare konservativ arbetsbudget på 64 byte per källpixel, och JPX-tile-metadata begränsas av både MaxInputObjects och 1024 byte per tile inom MaxRasterBytes; standardbudgeten på 256 MiB raster tillåter därför högst 4,194,304 kodade källpixlar, och anropare kan uttryckligen höja den för större bilder
JBIG2-konvertering avvisas eftersom dess interna region- och symbolallokeringar inte kan begränsas via det tillgängliga huvud-API:t; icke-terminala bildcodecs, JP2-boxar med utökad längd, wrappers som inte stöds och inslagna codec-strömmar som bär DecodeParms avvisas också
CCITT-faxparametrar måste behålla de deklarerade positiva bildmåtten; DecodeParms.Columns- och Rows-överskrivningar som avviker från ordlistan, inklusive okänt Rows=0, avvisas före inbyggd avkodning
Dessa kontroller begränsar de kända huvud- och allokeringsprofiler som konverteraren accepterar och lovar inte en komplett processminnessandlåda för varje inbyggd avkodare
Informations- och kvalitetsförlust
- Vektorinnehåll, typsnitt, transparens och källans färgrymder blir RGB-sidpixlar; högre DPI förbättrar visuell detalj men ökar minnesanvändning och filstorlek
- Utdatatext är inte sökbar eller markerbar, och inget textlager eller OCR-utdata syntetiseras
- Annoteringar, annoteringsutseenden, formulärfält, widgetutseenden och synliga signaturutseenden utelämnas i stället för att bakas in i sidrastern
- Digitala signaturer, inbäddade filer, skript, actions, bokmärken, lager som interaktiva kontroller, strukturella taggar och den ursprungliga dokumentidentiteten bevaras inte
- Resultatet bevarar inte vektorredigerbarhet, ursprunglig signaturgiltighet, PDF/UA-tillgänglighet eller källdokumentets semantik
THPDFArchivalConversionReport tillhandahåller framgångs- och avbrottstillstånd, antal käll- och renderingssidor, rasterpixlar, utdatabyte, antal borttagna annoteringar/formulär/bilagor, en feldiagnostik och de inbyggda valideringsfynden
FailureKind skiljer afkNone, afkConversion, afkBudget och afkCancelled; typade konverterarbudgetfel tillhandahåller också BudgetMetric, BudgetObserved och BudgetLimit
Ett checkpoint-undantag stoppar konverteringen och rapporteras via det inbyggda felfallet; wrappers som behöver den ursprungliga callback-undantagskategorin måste behålla den innan konverteraren fångar den
archive.pdfa4.raster-JSON- och C ABI-operationen kräver uttryckligt godkännande av informationsförlust, bevarar källhandtaget, levererar den validerade PDF:en och förlustrapporten samt tillämpar konservativa jobbbudgettak
Konformitetsverifiering
Konverteraren läser in sin mellanlagrade utdata igen och kräver ValidatePDFA4 med basprofilen PDF/A-4 före publicering; den inbyggda validatorn täcker sin dokumenterade avgränsade regelmängd och är inte ett bevis för varje ISO 19005-4-krav
Oberoende godkännande kan använda veraPDF med --flavour 4; regressionsfixturen med icke-inbäddad text, transparens, en RGB-bild, en länk, en signaturwidget och en bilaga klarade veraPDF 1.30.2 utan misslyckade regler eller kontroller
Kör Tests/Delphi/Run-HotPDFArchivalTests.bat för den fokuserade icke-GUI-regressionssviten