Ответ: Как в пдф высветлить/затемнить все фото сразу?
А давайте сделаем ЭТО каким-нибудь новым прикольным способом, который мы еще не пробовали! По ссылкам выше мне все уже надоели : -(.
Допустим, "фото" у нас в модели CMYK.
Сначала мы удалим компрессию из нашего pdf, примерно так:
Код:
gswin32c -- pdfinflt.ps in.pdf out.pdf
У кого нету pdfinflt.ps, не расстраивайтесь! Можете скачать сорс гостскрипта, он там в папке toolbin. Заодно раскомментируйте в нем строки, отвечающие за декомпрессию jpeg.
Далее обработаем разжатый pdf как просто raw текст, вот так:
где скрипт будет такой:
Код:
my $c = 0;
sub bar {
foreach(@_) {$_ >>= 1};
return @_
}
sub foo {
print "Now processing image number ", ++ $c, "\n";
my $s = shift;
my $_ = '';
my $i = 0;
while (1) {
my @a = unpack("C*", substr($s, $i, 1000000));
$_ .= pack("C*", bar @a);
if ($#a < 999999) {return $_}
$i += 1000000
}
};
open(F, "+<", $ARGV[0]);
binmode(F);
local $/ = undef;
my $_ = <F>;
s/(\/Image.+?\/DeviceCMYK.+?stream\n)(.+?)(\nendstream)/$1.foo($2).$3/ges;
seek(F, 0, 0);
print(F $_);
Далее не мешает сжать результат, но уж это вы сами как-нибудь (pdftk "compress", например).
Я бы организовал вам все шаги в приятный скрипт или батник, в котором выход предыдущего шага идет на вход следующего, но чорт его знает, видимо pdfinflt.ps такая цаца, что хочет RA на выходе (лень копаться), так что получилось по отдельным шагам : -(.
Да, и ТС был несколько неконкретен, надо ли ему "убледнить" или "выбледнить". А это, сами понимаете, важно. Я предположил, что "убледнить", и просто поделил все краски пополам. Кому надо, отредактируйте блок в процедуре bar.