RecolorDocument premakne celoten PDF v en sam barvni prostor, RecolorPage pa stori enako za posamezno stran. Oba vzameta 1 za sivinsko, 2 za RGB in 3 za CMYK ter vrneta, koliko barv je bilo pretvorjenih. Geometrija, besedilo in slike ostanejo točno tam, kjer so bile; spremeni se le barva
To je operacija, ki jo želite pred pošiljanjem dela v tiskarski stroj, ki pričakuje en prostor, ali ko mora barvni dokument postati sivinski brez ponovne generacije. Nadomestilo — ponovna izgradnja dokumenta iz njegovih izvornih podatkov v ciljnem prostoru — je na voljo le, če imate še vedno izvorne podatke, kar za vse, kar prejmete od zunaj, ne drži
Kaj se pretvori in v kakšnem vrstnem redu
Najprej barvni operatorji: polnila in poteze, ki jih stran nastavi med risanjem. Barva, ki je že v ciljnem prostoru, se pusti pri miru, tako stran, katere barve se ne rabijo spremeniti, obdrži svoje izvirne bajte namesto da bi bila prepisana z enakimi vrednostmi. Ta lastnost je pomembnejša, kot zveni pri velikem dokumentu, ker nedotaknjeni objekti ostanejo v datoteki nedotaknjeni
Nato pridejo slike in to je del, ki je nekoč manjkal. Dokument, posivljen samo s pretvorjenimi operatorji, je še vedno kazal barvne slike na sivih straneh, kar je huje od obeh skrajnosti. Slika se pretvori, ko nosi osem bitov na komponento, barvni prostor naprave in bodisi brez stiskanja bodisi navadni Flate
Indeksirane slike se pretvarjajo skozi svojo barvno tabelo: paleta se pretvori, vsak vzorec pa obdrži indeks, ki ga je že imel. To pokriva paletno shranjene slike, kot jih običajno shrani zajem zaslona ali graf, in pretvori jih ne glede na to, s čim so pakirani ali stisnjeni njihovi vzorci, ker se vzorci nikoli ne spremenijo
var
Lib: TPDFlib;
Converted: Integer;
begin
Lib := TPDFlib.Create;
try
Lib.LoadFromFile('brochure.pdf', '');
Converted := Lib.RecolorDocument(1); // 1 grey, 2 RGB, 3 CMYK
Log(Format('%d colours converted', [Converted]));
Lib.SaveToFile('brochure-grey.pdf');
finally
Lib.Free;
end;
end;
Zakaj se JPEG pusti pri miru?
Ker bi pretvorba njegovih barv pomenila njegovo ponovno kodiranje, ponovno kodiranje pa je drugačna operacija z drugačnimi posledicami. Slika JPEG ali faks obdrži svoje bajte: dekodiranje, pretvorba in ponovno stiskanje bi spremenili samo podatke slike, vpeljale drugo generacijo izgubnih artefaktov in spremenile velikost datoteke na načine, ki jih klicatelj ni zahteval
Mehke maske in maske šablone se pustijo pri miru iz drugačnega razloga. Obe se bereta kot pokritost in ne kot barva, pretvorba ene od njiju pa bi pustila stran, ki kaže masko kot sliko — prosojnostno masko, prevlečeno kot sivinsko grafiko na vrhu vsebine, ki naj bi jo oblikovala. Pustiti ju ni omejitev, ki bi se ji bilo treba izogniti; to je pravilen rezultat
Barve, nastavljene skozi prostor ICCBased, Separation, Indexed ali Pattern, prav tako ostanejo takšne, kot so na ravni operatorja. Njihova pretvorba brez branja profila bi spremenila, kako stran izgleda, namesto da bi jo ohranila, prevleka barv, katere celotno obljubo je ohranitev, pa ne more začeti ugibati o profilih
Prelivi se pretvorijo skupaj s svojimi postavitvami
Preliv je barvni prostor plus funkcija, ki v njem proizvaja barve, pretvorba enega brez drugega pa daje nesmisel — pretvorjen preliv, katerega postavitve so ostale za njim, se prebere kot kanal, zamenjan za sivinsko raven, kar na strani izgleda kot pas povsem napačne barve. Barvni prostor preliva in postavitve za njim se premaknejo skupaj
Prelivi se najdejo, kjer koli že živijo: kot lasten objekt, zapisani znotraj vzorca, ki jih riše, ali v sredstvih senčenja strani. Ta pokritost je pomembna, ker jih oblikovalna orodja razporejajo različno, pretvornik, ki bi obvladal le eno razporeditev, pa bi pustil dokument napol pretvorjen brez očitne sheme neuspehov
Dve vrsti se namerno pustita takšni, kot sta. Preliv, zgrajen iz vzorčene ali PostScriptove funkcije, obdrži svojo definicijo, enako velja za mrežne tipe, ki svoje barve nosijo v toku in ne v funkciji. Ponovni zapis obeh je drugačna operacija od pretvorbe barve, tiho izvajanje znotraj prevleke barv pa bi bilo presenečenje
// Convert a single page - useful when only the cover needs to change
Lib.SelectPage(1);
Lib.RecolorPage(3); // this page to CMYK
Lib.SaveToFile('cover-cmyk.pdf');
Kam sodi prevleka barv pred oddajo v tisk
Uporabite jo kot korak normalizacije in ne kot upravljanje barv. Prevleka barv pretvarja vrednosti med prostori naprave; ne uporablja profila ICC, ne upošteva namena upodabljanja in ne simulira stanja tiskarskega stroja. Za delo, ki mora zadeti pogodbeno probno predlogo, je odgovor s profilom gnanim delovnim tokom, prevleka barv pa je v najboljšem primeru korak, ki najprej spravi vse v en prostor
Kjer si zasluži svoje mesto, je običajna proizvodna težava: oddaja, ki mora biti sivinska in prispe z logotipom RGB, interni dokument, ki se ne sme natisniti v barvi, paket datotek, ki mora biti v enem prostoru, preden ga korak predleta sprejme. Parite jo s preverjanjem — zapiski o predletu PDF/A in PDF/UA in o delovni postaji za skladnost in podpisovanje obravnavajo izvajanje verdikta kot del iste diligence
Če dokument potrebuje tudi pregled vektorske grafike namesto pretvorbe, sprehod skozi vektorsko grafiko, senčilnike in prelive obravnava, kako so ti objekti prvotno zgrajeni, kar je uporaben kontekst za razumevanje, do česar lahko seže prevleka barv in do česar ne
PDFlibPas je izvorna Pascalova knjižnica PDF za Delphi, C++Builder in Lazarus brez zunanjega izvajalnega okolja, tako da korak normalizacije barv teče v lastni storitvi namesto klica zunanjega pretvornika — glejte stran izdelka PDFlibPas za popoln API za obdelavo dokumentov