Portabla XFA-lösenordsappearances

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF konsumerar XFA-fält av typen passwordEdit som nativa textwidgetar med PDF-lösenordsflaggan och en maskad appearance med inbäddat typsnitt på Windows och Linux

Appearancen innehåller en asterisk per Unicode-skalär: ett tilläggstecken som representeras av ett UTF-16-surrogatpar ger en asterisk, medan kombinerande tecken och ZWJ var och en bidrar med sin egen asterisk

Det nativa /V behåller det kompletta ursprungliga Unicode-värdet; maskering av appearancen ger ingen kryptering och tar inte bort det värdet ur PDF:en

Till exempel ger A😀B tre asterisker, och é ger två, eftersom den kombinerande accenten är en egen skalär

Gränser och avbrott

Adaptern kontrollerar avbrott medan skalärer räknas, och kontrollerar den återstående aggregerade glyph-budgeten innan masksträngen allokeras

TXFAHeadlessPDFResult.GlyphUnits räknar de faktiskt genererade asteriskerna för lösenordsappearances; den befintliga UTF-16-redovisningen för vanlig text och övriga appearance-konsumenter är oförändrad

Två tilläggstecken ryms i en återstående MaxGlyphs-budget på två; en budget på ett misslyckas innan masken allokeras

Originalvärdet omfattas fortfarande av gränser för indata och objektbytes, och alla fält delar den aggregerade appearance-budgeten

Fel i förberedelse, budget och avbrott lämnar anroparens destinationsposition, längd och befintliga bytes oändrade; skrivfel i destinationen följer strömmens eget beteende vid partiella skrivningar

Verifiering

Tests/Linux/XFAHeadlessPasswordTests.pas och lösenordskörarna för Windows och Linux verifierar exakta budgetar, avbrottsgränser, strömbevarande och beteende vid nya försök

Den oberoende verifieraren kontrollerar nativa värden, flaggor, faktiska AP CID-sekvenser, ToUnicode och inbäddade glyph-ID, och renderar och extraherar sedan de sparade PDF:erna med MuPDF

Automatisk XFA-skapning beskriver övriga konsumenter av nativa fält och ritningar