Optional Document Handlers
THPDFDocumentHandlerRegistry väljer utbytbara hanterare efter granskat innehåll före svaga filändelse- eller MIME-ledtrådar, och konverterar därefter den valda källan till en oföränderlig PDF-cache som delas av export och rendering
Inbyggda valfria hanterare
- XPS och OpenXPS behåller fasta sidimensioner och visuell ordning, konverterar självstängande eller egenskapsbärande förkortad
Pathgeometri till inbyggda PDF-vektorer, bevarar attribut- och egenskapselementmassiva penslar, flerstoppsLinearGradientBrushoch elliptiskaRadialGradientBrushskuggningsmönster och fyller banor via paketets JPEG-, PNG-, TIFF- eller JPEG XRImageBrushresurser medTileMode=None - XPS-bildfyllningar stödjer absolut eller
RelativeToBoundingBoxViewboxochViewportmappning,None,Tile,FlipX,FlipYochFlipXYtile-lägen, inbyggd ban- och placeringsklippning, ändliga sexparametrarsTransformattribut ellerImageBrush.TransformMatrixTransformelement, pensel- och banopacitet, PNG soft-mask-alfa, bild-DPI och paketresurscachning - XPS
Path.OpacityMaskstödjer solida, flerstopps linjära eller elliptiska radiella gradienter och PNGImageBrushmasker, inklusive upprepade och reflekterade bildceller; enhetlig alfa viks in i befintliga grafiktillstånd medan variabel alfa använder avgränsade inbyggda DeviceGray-transparensgrupper som delar skuggningsmönster och bildens soft-mask-strömmar - XPS Canvas
OpacityochCanvas.OpacityMaskkomponerar överlappande ättlingar en gång via isolerade DeviceRGB Form XObjects i stället för att dämpa varje barn separat; enhetlig maskalfa viks in i grupptillståndet, variabel gradient- eller PNG-bildalfa återanvänder inbyggda soft-mask-resurser, och nästlade grupper behåller transformerade klipp, resursägandeskap och avgränsade länkannoteringar inom gränserna 4 096 grupper och 16 MiB fångat innehåll per grupp - XPS
VisualBrushkonverterar rekursivt inbäddade eller resursbaseradeCanvas,PathochGlyphsvisualer, resolverar nästlade och externaResourceDictionaryscoper, mappar en absolutViewboxtill en absolut eller relativViewport, och återanvänder ett avgränsat PDF Form XObject över direkta, tileade och reflekterade placeringar - XPS
Canvas.Clipaccepterar avgränsad förkortad geometri, lokala eller externaStaticResourcePathGeometryvärden och direkta egenskapselement med strukturerade linje-, Bézier-, kvadratiska- eller bågfigurer, geometritransformer, tom geometri ochEvenOddellerNonZerofyllnadsregler; nästlade klipp blir inbyggda PDFW*ellerWbanor, navigeringsrektanglar skärs med aktiva transformerade klippgränser, parsningen takas vid 100 000 numeriska värden, och felaktiga eller singulära klipp misslyckas slutet innan barnvisualer målats - XPS
Glyphsaccepterar högst 65 536 striktaIndicesmappningar, behåller en-till-många- och många-till-en-klusterprogression, explicita promilleavstånd, horisontella och vertikala förskjutningar, uddaBidiLevelomvänd progression, solida attribut- eller egenskapselementfyllningar, opacitet, Unicode-extrahering och fail-closed-diagnostik vid felaktig indata; enkla run använder inbyggda PDFTJarrayer och stora mappningsbuffertar växer med amortiserad linjär kostnad - Paketets
FontUriresurser stödjer TrueType- och OpenType-program, TTC-medlemsfragment och XPS GUID-fördunklade typsnitt; exakta glyf-ID:n, cmap-härledda run, kluster, avstånd, förskjutningar, RTL-origo, återanvändning av typsnittsresurser, inbäddningsbehörigheter, valfri subsetting ochToUnicodeextraheringskartor förblir inbyggda PDF-typsnittsdata utan GDI-ersättning - XPS
FixedPage.NavigateUripå transformeradePathochGlyphsvisualer blir en inbyggd PDF-länkannotering med geometri- eller metrikhärledda gränser; HTTP-, HTTPS- och postlänkar förblir URI-åtgärder, medan paketrelativa sidor och procentavkodadeLinkTargetfragment blir framåt- eller bakåtriktade GoTo-åtgärder när alla sidor finns tillgängliga - En Canvas
FixedPage.NavigateUriblir det ärvda målet för varje ättling-Path,Glyphs, eller nästlad Canvas-visual tills en ättling anger sitt eget URI; scopade mål återställs efter nästlade överskrivningar, följer varje visuals geometri och transform, förblir begränsade av aktiva Canvas-klipp, överlever isolerad opacitetsgruppfångst och förblir undertryckta inuti återanvändbaraVisualBrushForms - Navigering takas vid 65 536 länkar med 8 192 tecken per URI, kontrolleras för avbrott under publicering, undertrycks under återanvändbar
VisualBrushfångst och avvisas för kontrolltecken, osäkra scheman, saknade mål eller felmatchande bana och fragment - Icke-standard
RelativeTransform, oresolverade matrisresurser, Repeat- eller Reflect-gradientutspridning, icke-sRGB-interpolation, penslar med variabel alfa, färgkonvertering, bildstreck, relativaVisualBrushviewboxes, stilsimulering, sidvända glyfer och avancerade streckegenskaper förblir explicita diagnostikposter - EPUB resolverar
container.xml, manifest och spine-ordning och använder därefter den avgränsade HTML5-importören för sidindelade medier med callback-only-paketresurser - CBZ känner igen bildposter som stöds, tillämpar deterministisk naturlig filnamnsordning och skapar en sida per bild med den konfigurerade bild-DPI:n
Budgetar och felisolering
En validerad genomsökning av ZIP:s centrala katalog driver post-, komprimerad-byte-, expanderad-byte-, per-post-, duplicerad-sökvägs-, osäker-sökvägs- och komprimeringsförhållanden-gränser innan konverteringen
Klassiska PKZIP ZipCrypto-poster kan begära autentiseringsuppgifter via ArchivePasswordCallback; callbacken tar emot källnamnet, postnamnet och försöksnumret (1-baserat), medan MaxPasswordAttempts takar försök från 1 till 16
Autentiseringsuppgifter och delvis avkodade postbyte stannar i minnet och rensas mellan försök, avbrott kontrolleras före och efter varje callback, och saknade callbacks, avslagna autentiseringsuppgifter, uttömda försök eller ej stödd kryptering misslyckas slutet
ZipCrypto är äldre lösenordsskydd snarare än modern autentiserad kryptering, och bytekonventioner för icke-ASCII-lösenord kan variera mellan ZIP-producenter
Lösenordsskyddade poster kräver Delphi 12 eller senare, vars System.Zip exponerar dekrypteringskroken; byggd med en tidigare Delphi-version läser hanterarna fortfarande okrypterade poster men avvisar krypterade som ej stödda innan ArchivePasswordCallback anropas
Poster vars storlekar eller offsetter behöver ZIP64-fält kräver Delphi 11 eller senare; tidigare Delphi-versioner avvisar dem som ej stödda
Gränser för resurser, reflow, sidor, pixlar, DPI, utdata och avbrott förblir aktiva genom hela konvertering och rendering, medan misslyckad utdatapublikering återställer en sökbar målström
Registrering och användning
var
Registry: THPDFDocumentHandlerRegistry;
Options: THPDFDocumentHandlerOptions;
Handled: IHPDFHandledDocument;
Info: THPDFDocumentHandlerInfo;
begin
Registry:= THPDFDocumentHandlerRegistry.Create;
try
Registry.RegisterStandardHandlers;
Options:= THPDFDocumentHandlerOptions.Default;
Options.ArchivePasswordCallback:= SupplyArchivePassword;
if Registry.OpenFromFile('book.epub', '', Options, Handled, Info) then
Handled.WritePDF(OutputStream, Options, Info);
finally
Registry.Free;
end;
end;