Neobavezni rukovatelji dokumentima
THPDFDocumentHandlerRegistry odabire zamjenjive rukovatelje prema ispitanom sadržaju prije slabih ekstenzija ili MIME naznaka, a zatim pretvara odabrani izvor u jednu nepromjenjivu PDF predmemoriju koju dijele izvoz i renderiranje
Ugrađeni neobavezni rukovaoci
- XPS i OpenXPS zadržavaju dimenzije fiksnih stranica i vizualni redoslijed, pretvaraju skraćenu geometriju
Pathsa samozatvarajućim ili svojstvenim elementima u izvorne PDF vektore, čuvaju atribute i elemente svojstava punih kistova, sjenčanja multi-stopLinearGradientBrushi eliptičnaRadialGradientBrush, te ispunjavaju putanje kroz resurseImageBrushpaketnih JPEG, PNG, TIFF ili JPEG XR slika sTileMode=None - XPS ispunjavanja slika podržavaju apsolutno ili
RelativeToBoundingBoxmapiranjeViewboxiViewport, načine popločavanjaNone,Tile,FlipX,FlipYiFlipXY, izvorno isječkanje puta i smještaja, konačne šesteroparametarske atributeTransformili elementeImageBrush.TransformMatrixTransform, prozirnost četke i puta, PNG alfu mekog maske, DPI slike i predmemoriranje resursa paketa - XPS
Path.OpacityMaskpodržava pune, višestanične linearne ili eliptične radijalne gradijente i PNGImageBrushmaske, uključujući ponovljene i reflektirane ćelije slika; ujednačena alfa savija se u postojeća grafička stanja dok varijabilna alfa koristi ograničene izvorne DeviceGray grupe prozirnosti koje dijele uzorke sjenčanja i tokove mekog maske slika - XPS Canvas
OpacityiCanvas.OpacityMasksastavljaju preklapajuće potomke jednom kroz izolirane DeviceRGB Form XObjecte umjesto slabljenja svakog djeteta neovisno; ujednačena alfa maske savija se u stanje grupe, varijabilna gradijentna ili PNG slikovna alfa ponovno koristi izvorne resurse mekog maske, a ugniježđene grupe čuvaju transformirane isječke, vlasništvo nad resursima i ograničene navigacijske napomene unutar ograničenja od 4.096 grupa i 16 MiB uhvaćenog sadržaja po grupi - XPS
VisualBrushrekurzivno pretvara inline ili resursima poduprteCanvas,PathiGlyphsvizuale, razrješuje ugniježđene i udaljene opsegeResourceDictionary, mapira apsolutniViewboxna apsolutni ili relativniViewporti ponovno koristi jedan ograničeni PDF Form XObject kroz izravna, popločana i reflektirana smještanja - XPS
Canvas.Clipprihvaća ograničenu skraćenu geometriju, lokalne ili udaljeneStaticResourcevrijednostiPathGeometryi izravne elemente svojstava s strukturiranim figurama linije, Béziera, kvadratike ili luka, transformacijama geometrije, praznom geometrijom i pravilima ispuneEvenOddiliNonZero; ugniježđeni isječci postaju izvorni PDF puteviW*iliW, navigacijski pravokutnici presijecaju se s aktivnim transformiranim granicama isječka, parsiranje je ograničeno na 100.000 numeričkih vrijednosti, a deformirani ili singularni isječci otkazuju se zatvoreno prije bojanja podređenih vizuala - XPS
Glyphsprihvaća najviše 65.536 strogih mapiranjaIndices, čuva napredovanje klastera više-na-jedan i jedan-na-više, eksplicitne pomake stotinka ema, horizontalne i vertikalne pomake, obrnuto napredovanje neparnogBidiLevela, pune ispune atributa ili elemenata svojstava, prozirnost, izdvajanje Unicodea i dijagnostiku zatvorenog koda za deformirani ulaz; jednostavni nizovi koriste izvorna PDF poljaTJ, a veliki međuspremnici mapiranja rastu amortizirano linearnim troškom - Resursi paketa
FontUripodržavaju programe TrueType i OpenType, fragmente članova TTC-a i XPS fontove zamagljene GUID-om; točni ID-jevi glifa, nizovi izvedeni iz cmapa, klasteri, pomaci, RTL ishodišta, ponovna upotreba resursa fonta, dopuštenja ugrađivanja, neobavezno podskupljanje iToUnicodeizdvajanja mape ostaju izvorni podaci fonta PDF-a bez GDI zamjene - XPS
FixedPage.NavigateUrina transformiranim vizualimaPathiGlyphspostaje izvorna navigacijska napomena PDF-a s granicama izvedenim iz geometrije ili metrike; HTTP, HTTPS i mail veze ostaju URI akcije, dok paketno-relativne stranice i postotno dekodirani fragmentiLinkTargetpostaju naprijed ili natrag GoTo akcije nakon što je svaka stranica dostupna - Canvas
FixedPage.NavigateUripostaje naslijeđeni cilj svakog potomkaPath,Glyphsili ugniježđenog Canvas vizuala dok potomak ne isporuči vlastiti URI; opsegom ograničeni ciljevi vraćaju se nakon ugniježđenih nadjačavanja, slijede geometriju i transformaciju svakog vizuala, ostaju ograničeni aktivnim Canvas isječcima, prežive izolirano hvatanje grupa prozirnosti i ostaju potisnuti unutar višekratno upotrebljivihVisualBrushoblika - Navigacija je ograničena na 65.536 veza s 8.192 znakova po URI-ju, provjerava otkazivanje tijekom objavljivanja, potiskuje se tijekom višekratno upotrebljivog
VisualBrushhvatanja i odbija se za kontrolne znakove, nesigurne sheme, nedostajuće ciljeve ili nepodudaranja puta i fragmenta - Nestandardni
RelativeTransform, nerazrješeni resursi matrica, gradijentni raspon Repeat ili Reflect, interpolacija koja nije sRGB, boje s varijabilnom alfom, konverzija boja, potezi slika, relativniVisualBrushviewboxovi, simulacija stilova, bočne glife i napredna svojstva poteza ostaju eksplicitna dijagnostika - EPUB razrješuje
container.xml, manifest i redoslijed spine, a zatim koristi ograničeni HTML5 uvoznik straničnih medija s resursima paketa samo putem callbacka - CBZ prepoznaje podržane slikovne unose, primjenjuje deterministički prirodni redoslijed naziva datoteka i stvara jednu stranicu po slici pri konfiguriranom DPI-ju slike
Proračuni i izolacija neuspjeha
Jedan validirani prelazak ZIP centralnog direktorija provodi ograničenja unosa, komprimiranih bajtova, proširenih bajtova, po unosa, dupliciranih putanja, nesigurnih putanja i omjera kompresije prije konverzije
Klasični PKZIP ZipCrypto unosi mogu zatražiti vjerodajnice kroz ArchivePasswordCallback; callback prima naziv izvora, naziv unosa i broj pokušaja s jednom bazom, dok MaxPasswordAttempts ograničava ponavljanja od 1 do 16
Vjerodajnice i djelomično dekodirani bajtovi unosa ostaju u memoriji i brišu se između pokušaja, otkazivanje se provjerava prije i nakon svakog callbacka, a nedostajući callbackovi, odbijene vjerodajnice, iscrpljena ponavljanja ili nepodržano šifriranje otkazuju se zatvoreno
ZipCrypto je zastarjela zaštita lozinkom, a ne moderna autentificirano šifriranje, i konvencije bajtova ne-ASCII lozinki mogu varirati između ZIP proizvođača
Unosi zaštićeni lozinkom trebaju Delphi 12 ili noviji, čiji System.Zip izlaže hook za dešifriranje; sagrađeni ranijom verzijom Delphija, rukovatelji i dalje čitaju nešifrirane unose, ali šifrirane odbacuju kao nepodržane prije nego što se pozove ArchivePasswordCallback
Unosi čije se veličine ili pomaci moraju zapisati u ZIP64 polja trebaju Delphi 11 ili noviji; starije verzije Delphija odbacuju ih kao nepodržane
Ograničenja resursa, prelijevanja, stranica, piksela, DPI-ja, izlaza i otkazivanja ostaju aktivna tijekom cijele konverzije i renderiranja, dok neuspjelo objavljivanje izlaza vraća potražljivi odredišni tok
Registracija i upotreba
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;