Optional Document Handlers
THPDFDocumentHandlerRegistry vælger udskiftelige handlers efter inspiceret indhold frem for svage filendelses- eller MIME-hints og konverterer derefter den valgte kilde til én uforanderlig PDF-cache, der deles af eksport og rendering
Indbyggede valgfrie handlers
- XPS og OpenXPS bevarer faste sidedimensioner og visuel orden, konverterer selvafsluttende eller egenskabsbærende forkortet
Path-geometri til native PDF-vektorer, bevarer attribut- og egenskabselement solid brushes, multi-stopLinearGradientBrushog elliptiskeRadialGradientBrush-shading-mønstre og fylder stier gennem pakke-JPEG-, PNG-, TIFF- eller JPEG XR-ImageBrush-ressourcer medTileMode=None - XPS-billedfyld understøtter absolut eller
RelativeToBoundingBoxViewboxogViewport, ogNone,Tile,FlipX,FlipY, ogFlipXY-elementer, børste- og sti-opacity, PNG soft-mask-alfa, billed-DPI og pakkeressource-cachingTransformunderstøtter solid, multi-stop lineær eller elliptisk radial gradient og PNG-ImageBrush.TransformMatrixTransform-masks, herunder gentagne og reflekterede billedceller; ensformig alfa foldes ind i eksisterende grafiktilstande, mens variabel alfa bruger afgrænsede native DeviceGray-transparensgrupper, der deler shading-mønstre og billed-soft-mask-strømme - XPS
Path.OpacityMaskkompositerer overlappende efterkommere én gang gennem isolerede DeviceRGB Form XObjects i stedet for at dæmpe hvert barn hver for sig; ensformig mask-alfa foldes ind i gruppetilstanden, variabel gradient- eller PNG-billedalfa genbruger native soft-mask-ressourcer, og indlejrede grupper bevarer transformerede klip, ressourceejerskab og afgrænsede link-annotationer inden for grænserne på 4.096 grupper og 16 MiB fanget indhold pr. gruppeImageBrushkonverterer rekursivt inline- eller ressourcebaserede - XPS Canvas
OpacityogCanvas.OpacityMask-visuals, opløser indlejrede og fjerne - XPS
VisualBrushkonverterer rekursivt inline- eller ressourcebaseredeCanvas-,Path- ogGlyphs-visuals, opløser indlejrede og eksterneResourceDictionary-scopes, afbilder en absolutViewboxtil en absolut eller relativViewportog genbruger ét afgrænset PDF Form XObject på tværs af direkte, fliselagte og spejlede placeringer - XPS
Canvas.Clip-stier, navigationsrektangler skæres med aktive transformerede klippegrænser, fortolkning begrænses til 100.000 numeriske værdier, og misdannede eller singulære klip fejler lukket, før underordnede visuals tegnesStaticResourcePathGeometry-mappings, beholder en-til-mange og mange-til-en klyngeprogression, eksplicitte hundreddele-em-fremskridt, vandrette og lodrette forskydninger, uligeEvenOddellerNonZero-omvendt progression, solide attribut- eller egenskabselement-fyld, opacity, Unicode-udtræk og fail-closed diagnostik af misdannet input; simple runs bruger native PDF-W*ellerW-arrays og store mapping-buffere vokser med amortiseret lineær omkostning - XPS
Glyphsaccepts at most 65,536 strictIndices-ressourcer understøtter TrueType- og OpenType-programmer, TTC-medlemsfragmenter og XPS GUID-obfuskerede fonts; præcise glyph-ID'er, cmap-afledte runs, klynger, fremskridt, forskydninger, RTL-origo, genbrug af font-ressourcer, indlejringstilladelser, valgfri subsetting ogBidiLevel-udtræksmaps forbliver native PDF-fontdata uden GDI-substitutionTJpå transformerede - Package
FontUri-visuals bliver til en native PDF-link-annotation med geometri- eller metrik-afledte grænser; HTTP-, HTTPS- og mail-links forbliver URI-actions, mens pakkerelative sider og procentafkodedeToUnicode-fragmenter bliver fremad- eller bagudrettede GoTo-actions, når alle sider er tilgængelige - XPS
FixedPage.NavigateUribliver den nedarvede mål for enhver efterkommer-PathogGlyphseller indlejret Canvas-visual, indtil en efterkommer leverer sin egen URI; scopede mål gendannes efter indlejrede overrides, følger hver visuals geometri og transformation, forbliver begrænset af aktive Canvas-klip, overlever isoleret opacity-gruppe-fangst og forbliver undertrykt inde i genbrugeligeLinkTargetNavigation begrænses til 65.536 links med 8.192 tegn pr. URI, tjekkes for annullering under publicering, undertrykkes under genbrugelig - A Canvas
FixedPage.NavigateUri-fangst og afvises for kontroltegn, usikre skemaer, manglende mål eller sti- og fragment-uesstemmelserPath,GlyphsIkke-standardVisualBrushForms - Navigation er begrænset til 65.536 links med 8.192 tegn pr. URI, kontrolleres for annullering under publicering, undertrykkes under genbrugelig
VisualBrush-capture og afvises ved kontroltegn, usikre skemaer, manglende mål eller uoverensstemmelser i sti og fragment - Ikke-standard
RelativeTransform, uopløste matrixressourcer, Repeat- eller Reflect-gradientspredning, ikke-sRGB-interpolation, paint brushes med variabel alfa, farvekonvertering, billedstregs, relativeVisualBrush-viewboxes, stilsimulering, sidevendte glyffer og avancerede stregegenskaber forbliver eksplicitte diagnostikker - EPUB løser
container.xml, manifest og spine-orden og bruger derefter den afgrænsede HTML5 paged-media-importør med callback-only pakkeressourcer - CBZ genkender understøttede billed-entry'er, anvender deterministisk naturlig filnavnsorden og opretter én side pr. billede ved det konfigurerede billed-DPI
Budgetter og fejlisolering
Én valideret scanning af ZIP central directory håndhæver grænser for entry, komprimerede bytes, udvidede bytes, pr. entry, duplikerede stier, usikre stier og komprimeringsforhold før konvertering
Klassiske PKZIP ZipCrypto-entry'er kan anmode om credentials via ArchivePasswordCallback; callback'en modtager kildenavnet, entry-navnet og et én-baseret forsøgsnummer, mens MaxPasswordAttempts afgrænser gentagne forsøg fra 1 til 16
Credentials og delvist afkodede entry-bytes forbliver i hukommelsen og ryddes mellem forsøg, annullering tjekkes før og efter hvert callback, og manglende callbacks, afviste credentials, opbrugte forsøg eller ikke-understøttet kryptering fejler lukket
ZipCrypto er en ældre adgangskodebeskyttelse og ikke moderne autentificeret kryptering, og konventionerne for bytes i ikke-ASCII-adgangskoder kan variere mellem ZIP-producenter
Adgangskodebeskyttede entry'er kræver Delphi 12 eller nyere, hvis System.Zip eksponerer dekrypteringshooket; bygget med en tidligere Delphi-version læser handlerne stadig ukrypterede entry'er, men afviser krypterede som ikke-understøttet, før ArchivePasswordCallback kaldes
Entry'er, hvis størrelser eller offsets kræver ZIP64-felter, kræver Delphi 11 eller nyere; tidligere Delphi-versioner afviser dem som ikke-understøttet
Grænserne for ressourcer, reflow, sider, pixels, DPI, output og annullering er aktive gennem hele konverteringen og renderingen, og hvis publiceringen af output fejler, gendannes en destination stream, der kan søges i
Registrering og brug
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;