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

AlternativStandardvärdeBetydelse
DPI150Begärd fysisk upplösning, accepterat intervall 36 till 1200
MaxPages1000Största antal inlästa källsidor
MaxPixelsPerPage40,000,000Största antal sidpixlar och största antal pixlar i en enskild källbild
MaxTotalPixels500,000,000Största ackumulerade antal utdata-rasterpixlar
MaxRasterBytes256 MiBStörsta rasterallokering för sida eller källbild, konservativt kontrollerad med fyra byte per pixel
MaxOutputBytes256 MiBStörsta mellanlagrade PDF-storlek, verkställd före strömallokering och skrivningar
MaxDecodedStreamBytes64 MiBBegränsar varje filterkedja, varje sidas kombinerade innehållspreflight, enskilda inbyggda strömläsningscallbacks, enskilda kodade källbildsströmmar och den inbyggda utdatavalidatorn
MaxTotalDecodedBytes256 MiBBegränsar ytterligare inbyggt arbete i filtrerade avkodare under konverteringen, kombinerat innehållspreflight över sidor och ackumulerade inbyggda strömläsningscallbacks över sidor
MaxInputObjects200,000Största antal redan inlästa indirekta objekt
CancellationTokennilLånad token som kontrolleras före arbetet, under inbyggd rendering och avkodning samt före publicering
CheckpointnilLå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

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