RecolorDocument perkelia visą PDF į vieną spalvų erdvę, o RecolorPage tą patį daro vienam puslapiui. Abu priima 1 pilkai, 2 RGB ir 3 CMYK bei grąžina, kiek spalvų buvo konvertuota. Geometrija, tekstas ir paveikslai lieka tiksliai ten, kur buvo; keičiasi tik spalva
Tai yra operacija, kurios norite prieš siųsdami darbą į spausdinimo mašiną, kuri tikisi vienos erdvės, arba kai spalvotas dokumentas turi tapti pilku be pakartotinio generavimo. Alternatyva — dokumento atkūrimas iš jo šaltinio duomenų tikslinėje erdvėje — yra prieinama tik tada, kai vis dar turite šaltinio duomenis, kurių bet kam, gautam iš išorės, neturite
Kas konvertuojama ir kokia tvarka
Pirmiausia spalvų operatoriai: užpildymai ir brūkšniai, kuriuos puslapis nustato braižydamas. Spalva, jau esanti tikslinėje erdvėje, paliekama ramybėje, todėl puslapis, kurio spalvoms nereikia pakeitimo, išlaiko savo originalius baitus, užuot buvęs perrašytas į identiškas reikšmes. Ši savybė svarbesnė, nei skamba, dideliame dokumente, nes nepaliesti objektai lieka nepaliesti faile
Paveikslai eina po jų, ir tai yra dalis, kuri anksčiau trūko. Dokumentas, paverstas pilku konvertuojant tik operatorius, vis dar rodė spalvotus paveikslus pilkuose puslapiuose, kas yra blogiau nei bet kuris iš kraštutinumų. Paveikslas konvertuojamas, kai jis neša aštuonis bitus komponentui, įrenginio spalvų erdvę ir arba jokio glaudinimo, arba paprasto Flate
Indeksuoti paveikslai konvertuojami per jų spalvų lentelę: konvertuojama paletė, o kiekviam pavyzdžiui išlaiko indeksą, kurį jis jau turėjo. Tai padengia paletinius paveikslus, kuriais paprastai išsaugomas ekrano vaizdas ar diagrama, ir konvertuoja juos nepriklausomai nuo to, kuo jų pavyzdžiai supakuoti ar suglaudinti, nes pavyzdžiai niekada nesikeičia
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;
Kodėl JPEG paliekamas ramybėje?
Nes jo spalvų konvertavimas reikštų pakartotinį kodavimą, o pakartotinis kodavimas yra kitokia operacija su kitokiomis pasekmėmis. JPEG ar fakso paveikslas išlaiko savo baitus: dekodavimas, konvertavimas ir pakartotinis glaudinimas pakeistų paties paveikslo duomenis, įvestų antrą prarandančių artefaktų kartą ir pakeistų failo dydį taip, kaip kviesiantysis neprašė
Minkštosios kaukės ir trafaretinės kaukės paliekamos dėl kitos priežasties. Abi skaitomos kaip aprėptis, o ne kaip spalva, ir vienos konvertavimas leistų puslapiui rodyti kaukę kaip paveikslą — permatomumo kaukę, atvaizduotą kaip pilkas grafikas ant turinio, kurį ji turėjo formuoti. Jas palikti nėra apribojimas, kurį reikia apeiti; tai yra teisingas rezultatas
Spalvos, nustatytos per ICCBased, Separation, Indexed ar Pattern erdvę, taip pat paliekamos tokios, kokios yra operatoriaus lygyje. Jas konvertuojant neperskaičius jų profilio, būtų pakeista tai, kaip puslapis atrodo, o ne išsaugota, o pakartotinio dažymo perdavimas, kurio visas pažadas yra išsaugojimas, negali pradėti spėlioti profilių
Gradientai konvertuojami su jų užnugario sustojimo taškais
Gradientas yra spalvų erdvė ir funkcija, kuri gamina joje spalvas, ir vieno be kito konvertavimas gamina nesąmonę — konvertuotas gradientas, kurio sustojimo taškai liko, skaitomas kaip kanalas, supainiotas su pilko lygiu, kas puslapyje atrodo kaip visiškai netinkamos spalvos juosta. Gradiento spalvų erdvė ir jos užnugario sustojimo taškai juda kartu
Gradientai surandami ten, kur jie gyvena: turėdami savo objektą, užrašyti viduje šablono, kuris juos dažo, arba sėdėdami puslapio šešėliavimo ištekliaus. Ši aprėptis svarbi, nes projektavimo įrankiai paskirsto juos skirtingai, o konverteris, kuris apdorotų tik vieną išdėstymą, paliktų dokumentą per pusę konvertuotą be akivaizdžios trikčių schemos
Dvi rūšys sąmoningai paliekamos tokios, kokios yra. Gradientas, sukurtas iš atrinktos arba PostScript funkcijos, išlaiko savo apibrėžimą, kaip ir tinklo tipai, kurie neša savo spalvas sraute, o ne funkcijoje. Abu perrašyti yra kitokia operacija nei spalvos konvertavimas, ir tai padaryti tyliai pakartotinio dažymo perdavimo viduje būtų staigmena
// 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');
Kur pakartotinis dažymas tinka prieš pateikimą spausdinimui
Naudokite jį kaip normalizavimo žingsnį, o ne kaip spalvų valdymą. Pakartotinis dažymas konvertuoja reikšmes tarp įrenginio erdvių; jis netaiko ICC profilio, negerbia atvaizdavimo intencijos ir nesimuliuoja spaudinio sąlygų. Darbui, kuris turi pasiekti sutartinį įrodymą, profiliu grįstas darbo eigos būdas yra atsakymas, o pakartotinis dažymas yra daugiausia žingsnis, kuris viską pirmiausia perkelia į vieną erdvę
Kur jis uždirna savo vietą, tai įprasta gamybos problema: pateikimas, kuris turi būti pilkas ir atkeliauja su RGB logotipu, vidinis dokumentas, kuris neturi būti spausdinamas spalvotai, failų paketas, kuris turi būti vienoje erdvėje, kad skrydžio prieš tai žingsnis juos priimtų. Sujunkite jį su patikra — PDF/A ir PDF/UA skrydžio prieš tai ir atitikties ir pasirašymo darbo stalo pastabos padengia verdikto vykdymą kaip to paties darbo dalį
Jei dokumentui taip pat reikia ištirti jo vektorinę grafiką, o ne konvertuoti, vektorinės grafikos, šešėliuotojų ir gradientų aprašymas padengia, kaip tie objektai išvis yra statomi, kas yra naudingas kontekstas suprasti, ko pakartotinio dažymo perdavimas gali ir ko negali pasiekti
PDFlibPas yra natyvi Pascal PDF biblioteka, skirta Delphi, C++Builder ir Lazarus be išorinės vykdymo aplinkos, todėl spalvų normalizavimo žingsnis vyksta jūsų pačių paslaugoje, užuot iškvietus konverterį — žr. PDFlibPas produkto puslapį pilnam dokumentų apdorojimo API