Render.ru

Шрифты M$

#21

> Нельзя ли теперь поподробней об этом:
> > 4. Вордовские пдф нуждаются вообще говоря в правке питстопом
> > или проще Quite боксом триксов, т.к текст ваш RGB-шный и т.п.
>
> Дело в том, что там не только текст, но и графики, диаграммы
> и т.п. Как можно всю пдф в CMYK конвертнуть? И можно ли это
> сделать вообще?

конечно можно.

www.quite.com. Качайте плагин Quite a Box of Tricks. Там есть команды RGB gone и All to grayscale.

www.enfocus.com. Качайте Pitstop. Ну там еще интереснее,
разберетесь сами.

Демки 30-дневные, на первое время хватит, а где лекарства искать сами знаете
 
#22
> Наш пламенный привет кварко-ненавистникам: "привет!!"

Горе-то какое.
Ладно, InD 3 подождём. :)

> Как можно всю пдф в CMYK конвертнуть? И можно ли это сделать вообще?

Для этого масса инструментов есть. Например, Quite A Box Of Tricks, Enfocus Pit Stop. Последним можно практически всех блох в PDF-е выловить.

> а можно волшебным прологом поделиться?

Всё, что ниже, вставить в имееющийся в
C:\Program Files\Adobe\Acrobat 5.0 CE\Distillr\Data\prologue.ps
А то, что там было, удалить. В настройках Distiller-а установить самый верхний флажок на вкладке Advanced в Settings -> Job Options.

%% **********************************************************************
%% Сей пролог должен облегчить участь подвижников, отважившихся
%% создавать PDF-документы, содержащие кириллические закладки
%% и прочие диковины, создаваемые при помощи оператора pdfmark.
%% Этот пролог перекодирует не-UNICODE строки этого оператора
%% в Cyrillic-UNICODE и исправляет баг PDFMaker'а при создании
%% PDF из MS Word'а, состоящий в том, что закладки оказываются в
%% Roman-кодировке.
%%
%% Засим затыкаю фонтан своего красноречия
%% Arkady N. Maltson
%% arkady_m@mail.ru
%%
%% 13-Feb-2002
%%
%% P.S. Отдельное спасибо Андрею Монастырскому (г.Харькiв), снабдившему
%% меня бесценной информацией, позволившей написАть баговыводитель
%% для PDFMaker'а и Неизвестным Программистам из Нового Света,
%% сделавшим необходимым и возможным написание нижеследующей программки
%% :)))
%% **********************************************************************
(\nRedefining of pdfmark\n) print

/CyrUUEncodeVector [
%% <0000><0001><0002><0003><0004><0005><0006><0007> % 0x0000 - 0x0007
%% <0008><0009><000A><000B><000C><000D><000E><000F> % 0x0008 - 0x000F
%% <0010><0011><0012><0013><0014><0015><0016><0017> % 0x0010 - 0x0017
%% <0018><0019><001A><001B><001C><001D><001E><001F> % 0x0018 - 0x001F

<0020><0020><0020><0020><0020><0020><0020><0020> % 0x0000 - 0x0007
<0020><0020><0020><0020><0020><0020><0020><0020> % 0x0008 - 0x000f
<0020><0020><0020><0020><0020><0020><0020><0020> % 0x0010 - 0x0017
<0020><0020><0020><0020><0020><0020><0020><0020> % 0x0018 - 0x001f

<0020><0021><0022><0023><0024><0025><0026><0027> % 0x0020 - 0x0027
<0028><0029><002A><002B><002C><002D><002E><002F> % 0x0028 - 0x002F
<0030><0031><0032><0033><0034><0035><0036><0037> % 0x0030 - 0x0037
<0038><0039><003A><003B><003C><003D><003E><003F> % 0x0038 - 0x003F
<0040><0041><0042><0043><0044><0045><0046><0047> % 0x0040 - 0x0047
<0048><0049><004A><004B><004C><004D><004E><004F> % 0x0048 - 0x004F
<0050><0051><0052><0053><0054><0055><0056><0057> % 0x0050 - 0x0057
<0058><0059><005A><005B><005C><005D><005E><005F> % 0x0058 - 0x005F
<0060><0061><0062><0063><0064><0065><0066><0067> % 0x0060 - 0x0067
<0068><0069><006A><006B><006C><006D><006E><006F> % 0x0068 - 0x006F
<0070><0071><0072><0073><0074><0075><0076><0077> % 0x0070 - 0x0077
<0078><0079><007A><007B><007C><007D><007E><007F> % 0x0078 - 0x007F
<0402><0403><201A><0453><201E><2026><2020><2021> % 0x0080 - 0x0087
<20AC><2030><0409><2039><040A><040C><040B><040F> % 0x0088 - 0x008F
<0452><2018><2019><201C><201D><2022><2013><2014> % 0x0090 - 0x0097
<0098><2122><0459><203A><045A><045C><045B><045F> % 0x0098 - 0x009F
<00A0><040E><045E><0408><00A4><0490><00A6><00A7> % 0x00A0 - 0x00A7
<0401><00A9><0404><00AB><00AC><00AD><00AE><0407> % 0x00A8 - 0x00AF
<00B0><00B1><0440><0456><0491><00B5><00B6><00B7> % 0x00B0 - 0x00B7
<0451><2116><0454><00BB><0458><0405><0455><0457> % 0x00B7 - 0x00BF
% UU-codes русских букв
<0410><0411><0412><0413><0414><0415><0416><0417> % 0x00C0 - 0x00C7
<0418><0419><041A><041B><041C><041D><041E><041F> % 0x00C8 - 0x00CF
<0420><0421><0422><0423><0424><0425><0426><0427> % 0x00D0 - 0x00D7
<0428><0429><042A><042B><042C><042D><042E><042F> % 0x00D8 - 0x00DF
<0430><0431><0432><0433><0434><0435><0436><0437> % 0x00E0 - 0x00E7
<0438><0439><043A><043B><043C><043D><043E><043F> % 0x00E8 - 0x00EF
<0440><0441><0442><0443><0444><0445><0446><0447> % 0x00F0 - 0x00F7
<0448><0449><044A><044B><044C><044D><044E><044F> % 0x00F8 - 0x00FF
] def
/PatchedArray [/OUT /ANN /ARTICLE /DOCINFO] def % Мы не только исправим не только Bookmark'sы (и Энгельсы. Гы!)
/StringNames [/Title /Author /Subject /Contents % но и многое другое, создаваемое в pdf с помощью оператора pdfmark
/Keywords /Creator ] def % и упорно не желающее понамать «великий и могучий»
/UUEncodeChar { % Получает на вершине стека операндов код символа и возвращает его UUEncode
CyrUUEncodeVector exch get % search, получим индекс кириллического символа в CyrKeyVector
% и поместим в T.O.S. его Unicode-аналог
} bind def

/asearsh { /Result -1 def % Это поиск элемента в массиве
/Counter 0 def % array X asearch index
exch { %
exch dup 3 -1 roll eq { % Index=-1, если X не содержится в массиве
/Result Counter def % В противном случае возвращается индекс X
exit %
} if %
/Counter Counter 1 add def %
} forall %
pop Result %
} bind def

/BookmarkLimitCheck { % Строка Bookmark не может быть длиннее
dup length 126 gt { % 126 символов в UUE + 2 символа маркер UUE.
([%% Warning! Bookmark ") print %
dup print %
(" Exceed maximum length. Truncated...%]\n) %
print flush %
0 126 getinterval % Если строка длинее,
} if % то усечь ее, оповестив <кого-нибудь>
} bind def
/BookmarksCounter 0 def


% /_f (Bookmarks.txt) (w) file def

/_pdfmark {pdfmark} bind def % Переопределим стандартный
% pdfmark — он теперь будет называться
% _pdfmark
%
/pdfmark { % А pdfmark будет теперь вызывать наши функции
dup PatchedArray exch asearsh -1 gt { % Если мы имеем дело с чем-то из списка PatchedArray ,
% то выполнить преобразование строки Bookmark'а
/OpStackDepth counttomark def %
/RollCounter 0 def %
OpStackDepth 1 roll %
/RollCounter RollCounter 1 add def % Сдвинуть строку Bookmark'а на вершину стека
OpStackDepth 1 sub{
OpStackDepth 1 roll


/RollCounter RollCounter 1 add def
dup StringNames exch asearsh -1 gt
{
OpStackDepth -1 roll %% Подвинуть строку с названием на верхушку стека


% _f dup fileposition
% 15 or 1 add setfileposition
% dup _f exch writestring % записать обрабатываемый Bookmark
% _f <0d0a> writestring

/RollCounter RollCounter 1 sub def
%% **********************************************************************************
%% Этот фрагмент исправляет непонятные мне баги PDFMaker'а для MS Word 2K
%% заключающиеся в том, что кириллические bookmark'и выгружаются хоть в UNICODE,
%% но в кодировке Roman 8-(
%% Нижеследующий фрагмент получает на верхушке стека некую строку, определяет
%% наличие UNICODE-маркера. И, если строка UNICODE, то заменяет символы от 0080
%% до 00FF включительно полагая, что они кириллические
%% **********************************************************************************

/_bFlag false def
dup length 3 gt { %% Длина строки больше 3-х
dup 0 2 getinterval <FEFF> eq %% Выделим первые два символа строки и прверим, не являются ли они UNICODE-маркером
/_bFlag exch def %% Cохраним результат сравнения во флаге
_bFlag { %% И начинается она с UNICODE-маркера
/_ptr 2 def %% Указатель на первый обрабытываемый символ в строке
%% в стеке перед строкой
dup length -1 bitshift 1 sub { %% Число итераций= (Длина_строки)\2 - 1
dup _ptr 2 getinterval %% Получить подстроку из 2-х симв. с позиции _ptr
dup 0 get 0 eq { %% Первый символ = chr(0)?
1 get dup 128 ge { %% код второго символа > 127 ?
CyrUUEncodeVector exch get %% тогда будем использовать как смещение в таблице
exch dup 3 -1 roll %% подготовим стек к putinterval, дублируя исходную строку
_ptr exch putinterval %% Скорректируем в исходной строке UNICODE-символ на Cyr
0 } if pop %% Протолкнем в стек пустышку, чтобы по выходу из IF не нарушать отчетности
0 } if pop %% так как перед входом в тело IF'а в стеке лежал один операнд, используемый внутри тела
/_ptr _ptr 2 add def %% и перейдем с следующей паре символов строки
} repeat
} if
} if

_bFlag not {

%% **********************************************************************************
%% Этот фрагмент преобразует не-UNICODE строку на вершине стека в UNICODE Cyrillic
%% **********************************************************************************

% exch BookmarkLimitCheck % Проверить на превышение максимальной длины
/sBookmarkUUE 65535 string def % Инициализировать пустой строковый буфер
<FEFF> sBookmarkUUE copy pop % и записать в него марке UU-Encoded строки
/ptrBookmarkUUE 2 def % А это — указатели позиции текущего символа
{ % выполняем для каждого символа исходной строки
UUEncodeChar dup length exch % Преобразовать символ из строки в UUEncoded
sBookmarkUUE ptrBookmarkUUE %
3 -1 roll putinterval %
/ptrBookmarkUUE ptrBookmarkUUE 3 -1 roll add def
} forall
/sBookmarkUUE sBookmarkUUE 0 ptrBookmarkUUE getinterval def % оставить ровно столько символов,
sBookmarkUUE % сколько нужно
} if
%% ****************************************************************


OpStackDepth 1 roll
/RollCounter RollCounter 1 add def
} if

%dup /Title eq {
% OpStackDepth RollCounter neg roll
% exit
%}if
} repeat %
} if %
_pdfmark % В заключение вызовем стандартный pdfmark
} bind def
 
Сверху