RU|DTP - настольные издательские системы
Home | FAQ | Литература | Статьи | Документы ICC | Prepressure | Download | Форум Восстановленная копия сайта RuDtp.ru

СТАТЬИ

Дмитрий Юнов
Национальные гипертекстовые Bookmark'и для PDF, созданных из публикации FrameMaker и Frame+SGML.

Известные продукты FrameMaker и Frame+SGML. являются признанным мировым стандартом для подготовки бумажной технической документации и управления документами в течении последних 8-10 лет для платформ, использующих MacOS, Windows и UNIX.

Особым удобством является встроенная мощная возможность легко получать PDF версию законченной публикации с гипертекстовыми ссылками, индексами и оглавлением, представленным как Bookmark в PDF.

Единственная проблема состоит в том, что текст с языком, отличным от Western (English, German, French, ...), будет представлен некорректно.

Выход состоит в собственной обработке полученного PS файла перед операцией превращения его в PDF с помощью Acrobat Distiller. Процедура предварительной обработки PS файла для исправления данного дефекта FrameMaker/Frame+SGML описана ниже для Windows и документов, использующих CP 1251 Cyrillic. Все принципы, изложенные здесь, полностью применимы для документов FrameMaker/Frame+SGML, использующих как другие кодовые страницы, так и иные операционные системы (MacOS, Solaris, AIX, HP-UX, Irix, Linux etc.) в своем окружении.



Пример навигационного окна Acrobat 5 и PDF документа с хорошо построенной системой Bookmark, созданной из FrameMaker публикации.



Создание Bookmark

При печати из FrameMaker если вы указали в его основном диалоге Print флаг Generate Acrobat Data и настроили PDF Setup опции, находящиеся рядом с флажком, созданный вами PS файл будет содержать специальные PDFMark операторы для создания Acrobat Distiller'ом навигационных Bookmark.





Однако, в том случае, если ваша FrameMaker/Frame+SGML публикация создана на русском, украинском, белорусском, языках Балтии, современном греческом, языках Центральной и Восточной Европы или любом другом языке, отличном от поддерживаемых кодовой страницей 1252 Western, вы получите на экране в Acrobat набор немецкой, французской и португальской диакритики вместо своего национального текста.

Дело в том, что FrameMaker/Frame+SGML не поддерживает Unicode enconding для языков документа, отличных от Western группы (и японского, китайского и корейского). Поэтому ваш национальный текст будущих Bookmarks будет представлен внутри PS документа в неправильной кодировке - так называемом build-in Acrobat encoding. Нам данный формат представления текста ничем не интересен - по той причине, что он игнорирует языки, с которыми мы работаем. Например, текст будущей PDF закладки

абвгдеёжзий....эюя

будет представлен внутри PS файла как:

(\340\341\342\343\344\345\270\346\347\350\351 ... \374\306\330)

Однако Acrobat 4 и 5 (PDF формат версий 1.3 и 1.4) поддерживают и Unicode encoding. Формат Unicode текстовой строки для корректной обработки PS файла Acrobat Distiller'ом очень прост и выглядит для примера выше так:

<04300431043204330434043504510436043704380439...044D044E044F>

Обратите внимание на круглые (Acrobat encoding) и угловые (Unicode encoding) скобки, в которые заключен текст.

Таким образом, задача вполне тривиальна и состоит в том, чтобы найти внутри PS файла все PDFMark операторы для Bookmarks, выделить внутри них поля с текстовыми строками в build-in Acrobat encoding и заменить их на аналогичные по содержанию поля, использующие Unicode encoding. Для автоматизации задачи проще всего использовать Perl или любой скриптовый язык, который нравится пользователю.

Внутри полученного PS файла эта разметка представлена в следующем виде:

###############################################



[

/Creator (FrameMaker 6.0)

/CreationDate (D:20010823095456)

/ModDate (D:20010823115211)

/DOCINFO FmPD2

[/Dest/F/DEST FmPD2

[/Dest/G999212/Title(\340\341\342\343\ ... \374\306\330)/Count 1/OUT FmPD2

[/Dest/G999213/Title(\340\341\342\343\350\351 ... \374\306\330)/OUT FmPD2

[/Dest/G999493/Title(\340\341\342\343\350\351 ... \374\306\330)/OUT FmPD2

[/Dest/G999472/Title(ABCD efgh-123)/OUT FmPD2

[ /PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW FmPD2

[/Dest/L/DEST FmPD2

; : N : N 463 148/G999197 FmPA

463 6518/G999194 FmPA

;

%%EndDocument

###############################################



Оранжевым цветом выделены различные переменные, которые могут отличаться в вашем случае от данного примера.

Красным цветом выделен искомые текстовые поля, содержимое которых копируется из вашей публикации при создании PS файла с включенной опцией Generate Acrobat Data. С ними-то мы и работаем.

Далее, после обработки Acrobat Distiller'ом, текст из них попадает в Bookmarks и быть представлен в навигационном окне Acrobat'а.

Внутри строки кириллического текста могут встречаются лишние пробелы, добавленные FrameMaker после некоторых символов. При нашей обработке их нужно удалять.

Логично, что если есть латинский текст, он также должен быть представлен в Unicode. Таблица Latin Unicode представлена в конце статьи. Хотя вы и можете смешивать в тексте Bookmark символы из разных кодовых страниц и даже просто из Unicode (например, сделать его Armenian), как будет написано ниже, отображение в Acrobat все равно ограничено ОДНОЙ кодовой страницей. Таким образом, Bookmark в виде, например, шведско-русского (CP1252+CP1251) текста невозможен. Но два соседних Bookmarks могут иметь разные кодовые страницы.

Длина поля Bookmark ограничена и равна 64 символа, если более — строка будет обрезана и автоматически добавится составной знак [...] в ее конец.

Таблица соответствий представлена ниже.



Обозначения:

LC — locked codes. Эти знакоместа запрещены во всех версиях FrameMaker/Frame+SGML по историческим причинам наследия старого кода программы. Вы не сможете ввести и использовать какие-либо символы, расположенные на этих местах. Для Windows это делает невозможным или очень проблематичным работу с чешским, польским, словацким, сербским и македонским языками. Существует специальный патч, разрешающий работу с этими символами для данных языков, который используется в этих странах. На MacOS и UNIX знакоместа locked codes другие, хотя их количество и внутренний Frame MIF encoding тот же.

Bookmrk — Acrobat build-in encoding values

1251 Uni — Unicode values for CP1251 Cyrillic.

Frame MIF encoding — Inner FrameMaker MIF encoding



ANSI Char Bookmrk 1251 Uni Frame MIF encoding
128Ђ 232 0402\xf5
129 Ѓ LC 0403 -
130 221201A \xe2
131 ѓ 206 0453\xc4
132 214201E \xe3
133 203 2026 \xc9
134 201 2020 <Char Dagger>
135 202 2021 <Char DoubleDagger>
136 032 20AC \xf6
137 213 2030 \xe4
138 Љ 263 0409 \xb3
139 210 2039 \xdc
140 Њ 226 040A \xce
141 Ќ 030 040C \xf9
142 Ћ 033 040B \xfa
143 Џ LC 040F -
144 ђ LC 0452 -
145 217 2018 \xd4
146 220 2019 \xd5
147 215 201C \xd2
148 216 201D \xd3
149 200 2022 <Char Bullet>
150 205 2013 <Char EnDash>
151 204 2014 <Char EmDash>
152 n/a 037 - \xf7
153 222 2122 \xaa
154 љ 360 0459 \xf0
155 211 203A \xdd
156 њ 234 045A \xcf
157 ќ 034 LC 045C \xfd
158 ћ 035 045B \xfe
159 џ 230 045F \xd9
160 (nbspace) 021 00A0 (no)
161 Ў 241 040E \xc1
162 ў 242 045E <Char Cent>
163 Ј 243 0408 <Char Pound>
164 ¤ 244 00A4 \xdb
165 Ґ 245 0490 <Char Yen>
166 ¦ 255 00A6 \xad
167 § 247 00A7 \xa4
168 Ё 250 0401 \xac
169 © 251 00A9 \xa9
170 Є 252 0404 \xbb
171 « 253 00AB \xc7
172 ¬ 254 00AC (no)
173 (shyph) 004 00AD \x7f
174 ® 256 00AE \xa8
175 Ї 257 0407 \xf8
176 ° 036 00B0 \xfb
177 ± 261 00B1 \xb1
178 І 267 0406 \xb7
179 і 270 0456 \xb8
180 ґ 264 0491 \xab
181 µ 265 00B5 \xb5
182 266 00B6 (no)
183 · 267 00B7 \xe1
184 ё 270 0451 \xfc
185 266 2116 \xb6
186 є 272 0454 \xbc
187 » 273 00BB \xc8
188 ј 271 0458 \xb9
189 Ѕ 272 0405 \xba
190 ѕ 275 0455 \xbd
191 ї 277 0457 \xc0
192 А 300 0410 \xcb
193 Б 301 0411 \xe7
194 В 302 0412 \xe5
195 Г 303 0413 \xcc
196 Д 304 0414 \x80
197 Е 305 0415 \x81
198 Ж 306 0416 \xae
199 З 307 0417 \x82
200 И 310 0418 \xe9
201 Й 311 0419 \x83
202 К 312 041A \xe6
203 Л 313 041B \xe8
204 М 314 041C \xed
205 Н 315 041D \xea
206 О 316 041E \xeb
207 П 317 041F \xec
208 Р 303 0420 \xc3
209 С 321 0421 \x84
210 Т 322 0422 \xf1
211 У 323 0423 \xee
212 Ф 324 0424 \xef
213 Х 325 0425 \xcd
214 Ц 326 0426 \x85
215 Ч 260 0427 \xb0
216 Ш 330 0428 \xaf
217 Щ 331 0429 \xf4
218 Ъ 332 042A \xf2
219 Ы 333 042B \xf3
220 Ь 334 042C \x86
221 Э 305 042D \xc5
222 Ю 327 042E \xd7
223 Я 337 042F \xa7
225 а 340 0430 \x87
226 б 341 0431 \x89
227 в 342 0432 \x8b
228 г 343 0433 \x8a
229 д 344 0434 \x8c
184 е 345 0435 \xfc
230 ё 270 0436 \xbe
231 ж 346 0437 \x8d
232 з 347 0438 \x8f
233 и 350 0439 \x8e
234 й 351 043A \x90
235 к 352 043B \x91
236 л 353 043C \x93
237 м 354 043D \x92
238 н 355 043E \x94
239 о 356 043F \x95
240 п 357 0440 \xb2
241 р 262 0441 \x96
242 с 361 0442 \x97
243 т 362 0443 \x98
244 у 363 0444 \x99
245 ф 364 0445 \x9b
246 х 365 0446 \x9a
247 ч 366 0447 \xd6
248 ш 367 0448 \xbf
249 щ 370 0449 \x9d
250 ъ 371 044A \x9c
251 ы 372 044B \x9e
252 ь 373 044C \x9f
253 э 374 044D \xc6
254 ю 306 044E \xca
255 я 330 044F \xd8


Partial © 1996, 1998, 2001 - Dmitry Yunov, <yudmi@star.spb.ru>

(space) 0020 @ 0040 ` 0060
! 0021 A 0041 a 0061
" 0022 B 0042 b 0062
# 0023 C 0043 c 0063
$ 0024 D 0044 d 0064
% 0025 E 0045 e 0065
& 0026 F 0046 f 0066
' 0027 G 0047 g 0067
( 0028 H 0048 h 0068
) 0029 I 0049 i 0069
* 002A J 004A j 006A
+ 002B K 004B k 006B
, 002C L 004C l 006C
- 002D M 004D m 006D
. 002E N 004E n 006E
/ 002F O 004F o 006F
0 0030 P 0050 p 0070
1 0031 Q 0051 q 0071
2 0032 R 0052 r 0072
3 0033 S 0053 s 0073
4 0034 T 0054 t 0074
5 0035 U 0055 u 0075
6 0036 V 0056 v 0076
7 0037 W 0057 w 0077
8 0038 X 0058 x 0078
9 0039 Y 0059 y 0079
: 003A Z 005A z 007A
; 003B [ 005B { 007B
< 003C \ 005C | 007C
= 003D ] 005D } 007D
> 003E ^ 005E ~ 007E
? 003F _ 005F (del) 007F


Ограничения.

1. В случае с Bookmarks отображение на экране все равно ограничено основными языковыми скриптами (кодовыми страницами) Windows/Macintosh (см. рис.).

Поэтому получение Bookmark на языке, не имеющем кодовой страницы, невозможно, по той причине, что выбор шрифта, которым отображается любой текст Bookmark Acrobat, не настраивается.

К таким печальным случаям относятся многочисленные FrameMaker документы, использующие непризнан­ные MS, IBM и Apple, но широко распространенные локальные и корпоративные кодовые страницы — Armenian, Georgian, Asian Cyrillic PT, Azerbaijan Latin (1992,1999), Uzbek Latin (1998), Tatar Latin (2000), Turkmen Latin (1996), Polytonal Greek PT, Old Slavonic PT, Old Church PT и любые собственные encoding'и пользователя.



2. Как можно заметить из таблицы, три пары символов имеют ОДНО И ТОЖЕ Acrobat build-in encoding значение. Перекрылись русское/белорусское ё и украинское/белорусское і, знак параграфа ¶ и знак номера №, украинское є и македонская Ѕ. Из них наибольшая проблема очевидно, с белорусскими публикациями из-за активного использования в языке как ё так и і.

179 і 270 0456
184 ё 270 0451
182 266 00B6
185 266 2116
186 є 272 0454
189 Ѕ 272 0405


Уверен, что написание скрипта или утилиты благодарный читатель возьмет на себя. :-)

Удачи.

(с) 08.2001 — Dmitry Yunov <yudmi@star.spb.ru>



Дата размещения: 2001-08-28 17:18:45
Видеокурс Допечатная подготовка журнала
Desktop Publishing на человеческом языке
Разделы: Home | FAQ | Литература | Статьи | Документы ICC | Prepressure | Download | Форум

О «мертвых» линках и ошибках сообщать вебмастеру бесполезно. Это восстановленная после аварии копия сайта.

Дизайн: N-design