Opcioni rukovaoci dokumentima
THPDFDocumentHandlerRegistry bira zamenjive rukovaoce po pregledanom sadržaju pre slabih ekstenzijskih ili MIME nagoveštaja, zatim konvertuje odabrani izvor u jedan nepromenljivi PDF keš deljen izvozom i renderovanjem
Ugrađeni opcioni rukovaoci
- XPS i OpenXPS zadržavaju dimenzije fiksne stranice, redosled sekvenci i tekst iz
Glyphselemenata dok izveštavaju nepodržane funkcije crtanja fiksne straniceLinearGradientBrushi eliptičneRadialGradientBrushshading šare i putanje popune kroz paketne JPEG, PNG, TIFF ili JPEG XRImageBrushresurse saTileMode=None - XPS popune slika podržavaju apsolutno ili
RelativeToBoundingBoxViewboxiViewportmapiranje,None,Tile,FlipX,FlipYiFlipXYtile režime, nativno klipovanje putanje i postavljanja, konačne šestoparametarskeTransformatribute iliImageBrush.TransformMatrixTransformelemente, neprozirnost četke i putanje, PNG soft-mask alfa, DPI slike i keširanje paket-resursa - XPS
Path.OpacityMaskpodržava punu, višestaničnu linearnu ili eliptičnu radijalnu gradijent i PNGImageBrushmaske, uključujući ponovljene i reflektovane ćelije slika; ujednačena alfa uklapa se u postojeća stanja grafike dok promenljiva alfa koristi ograničene nativne DeviceGray grupe transparentnosti koje dele shading šare i tokove soft maski slika - XPS Canvas
OpacityiCanvas.OpacityMaskkomponuju preklapajuće potomke jednom kroz izolovane DeviceRGB Form XObject-e umesto da prigušuje svako dete nezavisno; ujednačena alfa maske uklapa se u stanje grupe, promenljiva gradijent ili PNG alfa slike ponovo koristi nativne soft-mask resurse, a ugnježdene grupe zadržavaju transformisane klipove, vlasništvo resursa i ograničene link anotacije unutar limita od 4,096 grupa i 16 MiB uhvaćenog sadržaja po grupi - XPS
VisualBrushrekurzivno konvertuje inline ili resursom podržaneCanvas,PathiGlyphsvizuale, razrešava ugnježdene i udaljeneResourceDictionaryopsege, mapira apsolutniViewboxu apsolutni ili relativniViewporti ponovo koristi jedan ograničeni PDF Form XObject kroz direktna, popločana i reflektovana postavljanja - XPS
Canvas.Clipprihvata ograničenu skraćenu geometriju, lokalne ili udaljeneStaticResourcePathGeometryvrednosti i direktne elemente svojstava sa strukturisanim figurama linija, Bézier, kvadratičnih ili lukova, transformacijama geometrije, praznom geometrijom iEvenOddiliNonZeropravilima popune; ugnježdeni klipovi postaju nativne PDFW*iliWputanje, navigacijski pravougaonici presecaju se sa aktivnim transformisanim granicama klipova, parsiranje je ograničeno na 100,000 numeričkih vrednosti, a neispravni ili singularni klipovi bezbedno otkazuju pre nego što se dečji vizuali nacrtaju - XPS
Glyphsprihvata najviše 65,536 strogihIndicesmapiranja, zadržava jedan-ka-više i više-ka-jedan napredak klastera, eksplicitne pomake stotinki em-a, horizontalna i vertikalna pomeranja, neparanBidiLevelobrnuti napredak, pune atribute ili popune elemenata svojstava, neprozirnost, izdvajanje Unicode-a i fail-closed dijagnostiku neispravnog ulaza; jednostavni nizovi koriste nativne PDFTJnizove i veliki baferi mapiranja rastu amortizovano linearnim troškom - Package
FontUriresursi podržavaju TrueType i OpenType programe, TTC fragmente članova i XPS GUID-zamaskirane fontove; tačni glyph ID-ijevi, cmap-izvedeni nizovi, klasteri, pomaci, ofseti, RTL porekla, ponovna upotreba font-resursa, dozvole ugrađivanja, opciono pravljenje podskupa iToUnicodeizvozna mapiranja ostaju nativni PDF podaci fonta bez GDI zamene - XPS
FixedPage.NavigateUrina transformisanomPathiGlyphsvizuali postaje nativna PDF link anotacija sa granicama izvedenim iz geometrije ili metrike; HTTP, HTTPS i mail veze ostaju URI akcije, dok se paketski-relativne stranice i percent-dekodiraniLinkTargetfragmenti pretvaraju u napred ili nazad GoTo akcije nakon što su sve stranice dostupne - Canvas
FixedPage.NavigateUripostaje nasleđeni cilj svakog potomkaPath,Glyphs, ili ugnježdeni Canvas vizual dok neki potomak ne dostavi svoj URI; opsegom ograničeni ciljevi vraćaju se nakon ugnježdenih zamena, prate geometriju i transformaciju svakog vizuala, ostaju ograničeni aktivnim Canvas klipovima, preživljavaju izolovano hvatanje opacity-grupe i ostaju potisnuti unutar višekoristnogVisualBrushForms - Navigacija je ograničena na 65,536 veza sa 8,192 znaka po URI, proverava otkazivanje tokom objavljivanja, potiskuje se tokom višekoristnog
VisualBrushhvatanja i odbija se za kontrolne znakove, nesigurne šeme, nedostajuće ciljeve ili nepoklapanja putanje i fragmenta - Non-standard
RelativeTransform, nerazrešeni matrix resursi, Repeat ili Reflect širenje gradijenta, ne-sRGB interpolacija, četke sa promenljivom alfom, konverzija boja, potezi slika, relativniVisualBrushviewbox-evi, simulacija stila, bočni glifovi i napredna svojstva poteza ostaju eksplicitna dijagnostika - EPUB razrešava
container.xml, manifest i redosled kičme, zatim koristi ograničeni HTML5 paged-media importer sa resursima paketa samo preko callback-a - CBZ prepoznaje podržane unose slika, primenjuje deterministički prirodni redosled imena datoteka i formira jednu stranicu po slici na konfigurisanom DPI-ju slike
Budžeti i izolacija neuspeha
Jedan validiran sken ZIP centralnog direktorijuma sprovodi limite unosa, komprimovanih bajtova, proširenih bajtova, po unosu, duplirane putanje, nesigurne putanje i odnos kompresije pre konverzije
Klasični PKZIP ZipCrypto unosi mogu tražiti akreditive kroz ArchivePasswordCallback; callback prima ime izvora, ime unosa i broj pokušaja od jedan, dok MaxPasswordAttempts ograničava ponavljanja od 1 do 16
Akreditivi i delimično dekodovani bajtovi unosa ostaju u memoriji i čiste se između pokušaja, otkazivanje se proverava pre i posle svakog callback-a, a nedostajući callback-ovi, odbijeni akreditivi, iscrpljena ponavljanja ili nepodržana enkripcija bezbedno otkazuju
ZipCrypto je zastarela zaštita lozinkom, a ne moderno autentifikovano enkripcijom, i konvencije bajtova ne-ASCII lozinki mogu da variraju između ZIP proizvođača
Unosi zaštićeni lozinkom zahtevaju Delphi 12 ili noviji, čiji System.Zip izlaže hook za dekripciju; sagrađeni sa starijom verzijom Delphija, rukovaoci i dalje čitaju neenkriptovane unose ali odbijaju enkriptovane kao nepodržane pre nego što se pozove ArchivePasswordCallback
Unosi čije veličine ili ofseti zahtevaju ZIP64 polja traže Delphi 11 ili noviji; starije verzije Delphija ih odbijaju kao nepodržane
Ograničenja resursa, preobražaja, stranica, piksela, DPI-ja, izlaza i otkazivanja ostaju aktivna tokom konverzije i renderovanja, dok neuspešno objavljivanje izlaza vraća tok odredišta koji se može pretraživati
Registracija i upotreba
var
Registry: THPDFDocumentHandlerRegistry;
Options: THPDFDocumentHandlerOptions;
Handled: IHPDFHandledDocument;
Info: THPDFDocumentHandlerInfo;
begin
Registry:= THPDFDocumentHandlerRegistry.Create;
try
Registry.RegisterStandardHandlers;
Options:= THPDFDocumentHandlerOptions.Default;
if Registry.OpenFromFile('book.epub', '', Options, Handled, Info) then
Handled.WritePDF(OutputStream, Options, Info);
finally
Registry.Free;
end;
end;