pdfbeads 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,509 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
+ <html>
3
+ <head>
4
+
5
+ <title>PDFBeads: сборка PDF из отсканированных страниц</title>
6
+
7
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
8
+
9
+ <meta name="Generator" content="Written directly in html">
10
+
11
+ <meta name="Description" content="Руководство пользователя PDFBEADS версии 1.0">
12
+
13
+ <style type="text/css">
14
+ body {
15
+ font-family: Times New Roman, Times, serif;
16
+ text-align: justify;
17
+ }
18
+ a:link {
19
+ color: blue; text-decoration: underline
20
+ }
21
+ a:hover {
22
+ color: fuchsia
23
+ }
24
+ a:active {
25
+ color: fuchsia
26
+ }
27
+ a:visited {
28
+ color: purple
29
+ }
30
+ h1 {
31
+ font-size: 36px;
32
+ font-family: Times New Roman, Times, serif;
33
+ text-align: center;
34
+ font-style: normal;
35
+ font-weight: bold
36
+ }
37
+ h2 {
38
+ font-size: 20px;
39
+ font-family: Arial, Helvetica, sans-serif;
40
+ text-align: center;
41
+ font-style: normal;
42
+ font-weight: bold;
43
+ }
44
+ h3 {
45
+ font-size: 16px;
46
+ font-family: Arial, Helvetica, sans-serif;
47
+ text-align: left;
48
+ font-style: italic;
49
+ font-weight: bold;
50
+ }
51
+ dt {
52
+ font-weight: bold;
53
+ }
54
+ </style>
55
+
56
+ </head>
57
+
58
+ <body>
59
+
60
+ <h1>Руководство пользователя PDFBEADS версии 1.0</h1>
61
+
62
+ <p>(c) Алексей Крюков, 2010</p>
63
+
64
+ <p>Утилита pdfbeads предназначена для создания электронных книг в формате
65
+ PDF из предварительно обработанных отсканированных страниц. В отличие от
66
+ других подобных программ, pdfbeads стремится строить PDF-файлы по модели,
67
+ более привычной для формата DJVU, разделяя страницу на слои, различающиеся
68
+ форматом сжатия данных и разрешением.</p>
69
+
70
+ <p>Среди возможностей pdfbeads:</p>
71
+
72
+ <ul>
73
+
74
+ <li><p>сжатие графических данных с использованием форматов JBIG2 и
75
+ JPEG2000;</p></li>
76
+
77
+ <li><p>разделение «смешанных» файлов, созданных программой
78
+ <a href="http://scantailor.sourceforge.net/">ScanTailor</a>, на текстовый
79
+ и картиночный слои;</p></li>
80
+
81
+ <li><p>подклейка фоновых изображений к предварительно бинаризованным
82
+ текстовым страницам;</p></li>
83
+
84
+ <li><p>обработка малоцветных индексированных изображений с сохранением
85
+ цвета и выносом содержимого в передний план;</p></li>
86
+
87
+ <li><p>разделение полноцветных изображений на фон и передний план по
88
+ заданной маске;</p></li>
89
+
90
+ <li><p>создание PDF-файлов с оглавлением и метаданными;</p></li>
91
+
92
+ <li><p>добавление скрытого текстового слоя из документов в формате hOCR
93
+ с корректной обработкой символов кириллицы.</p></li>
94
+
95
+ </ul>
96
+
97
+ <p>Название pdfbeads связано с тем, что сборка электронной книги из отдельных
98
+ графических файлов может быть уподоблена нанизыванию бус. Кроме того, оно
99
+ представляется вполне уместным для сценария, написанного на языке Ruby: ведь
100
+ драгоценные камни, подобные рубину, как раз и служат для создания ювелирных
101
+ украшений.</p>
102
+
103
+ <h2>Требования</h2>
104
+
105
+ <p>Для запуска программы требуется прежде всего интерпретатор языка Ruby
106
+ версии 1.8 или 1.9, доступный в дистрибутивах большинства Unix-подобных
107
+ систем. Версия для Windows может быть загружена с сайта <a
108
+ href="http://www.rubyinstaller.org/">RubyInstaller</a>. Для корректной
109
+ установки pdfbeads необходимо также загрузить пакетный менеджер RubyGems,
110
+ представляющий собой стандартный интерфейс языка Ruby для работы с
111
+ расширениями. Кроме того, в дополнение к основному дистрибутиву Ruby
112
+ понадобятся расширения RMagick и hpricot (последнее&nbsp;&mdash; для
113
+ обработки распознанного текста в формате hOCR).</p>
114
+
115
+ <p>Если вы хотите создавать PDF-файлы с использованием формата сжатия
116
+ данных JBIG2, то в системе также должна быть установлена утилита jbig2
117
+ из пакета <a href="http://github.com/agl/jbig2enc">jbig2enc</a>. Внимание:
118
+ по состоянию на октябрь 2010&nbsp;г., когда пишется этот файл,
119
+ настоятельно рекомендуется использовать версию jbig2, самостоятельно
120
+ собранную из исходников, доступных в репозитории git, поскольку более
121
+ ранние версии не обеспечивают корректного сохранения информации о разрешении
122
+ изображений.</p>
123
+
124
+ <h2>Установка</h2>
125
+
126
+ <p>Для того, чтобы скачать и установить наиболее свежую версию pdfbeads
127
+ с помощью пакетного менеджера RubyGems, достаточно набрать в командной
128
+ строке</p>
129
+
130
+ <pre>
131
+ gem install pdfbeads
132
+ </pre>
133
+
134
+ <p>Перед запуском программы необходимо удостовериться, что расширение
135
+ RMagick установлено и доступно интерпретатору Ruby. К сожалению, эту
136
+ зависимость нельзя отследить автоматически, поскольку в некоторых
137
+ дистрибутивах Linux (в частности, Ubuntu) пакет RMagick устанавливается в
138
+ обход механизма RubyGems, так что утилите gem о нем ничего не известно.</p>
139
+
140
+ <p>Пользователям Ubuntu также следует иметь в виду, что в этом дистрибутиве
141
+ исполняемые файлы из пакетов gem по умолчанию распаковываются в каталоги
142
+ <tt>/var/lib/gems/1.8/bin</tt> и <tt>/var/lib/gems/1.9.1/bin</tt>
143
+ (для Ruby 1.8 и 1.9 соответственно), изначально не включенные в переменную
144
+ окружения PATH. Поэтому для того, чтобы утилиту pdfbeads можно было запускать
145
+ без указания полного пути к ней, нужно либо соответствующим образом
146
+ модифицировать переменную PATH, либо переместить файл <tt>pdfbeads</tt>
147
+ в одну из директорий, традиционно используемых для размещения исполняемых
148
+ файлов (например, <tt>/usr/local/bin</tt>).</p>
149
+
150
+ <h2>Общие принципы</h2>
151
+
152
+ <p>Методика работы pdfbeads основана на разграничении «основного»
153
+ изображения, вокруг которого выстраивается страница PDF-документа, и различных
154
+ вспомогательных файлов, связанных с текущей страницей.</p>
155
+
156
+ <p>«Основными» считаются файлы, содержащие отсканированный
157
+ текст, который может быть использован в качестве переднего плана (маски).
158
+ Как правило, в этой роли должны выступать предварительно бинаризованные
159
+ текстовые страницы. Кроме того, pdfbeads может обрабатывать малоцветные
160
+ индексированные изображения с белым или прозрачным фоном, а также смешанные
161
+ изображения, сочетающие бинаризованный текст с полутоновыми иллюстрациями.
162
+ Последняя возможность наиболее полезна для работы с файлами, полученными при
163
+ помощи программы <a href="http://scantailor.sourceforge.net/">ScanTailor</a>.</p>
164
+
165
+ <p>Специальной обработке подвергаются файлы с двойным расширением,
166
+ где расширению, указывающему на один из графических форматов (TIF(F),
167
+ PNG, JP(E)G, JP2, JPX), предшествует один из следующих суффиксов:</p>
168
+
169
+ <dl>
170
+
171
+ <dt>bg или sep</dt>
172
+ <dd><p>Фоновое изображение (полутоновое или индексированное);</p></dd>
173
+
174
+ <dt>fg</dt>
175
+ <dd><p>Изображение, предназначенное для раскраски текстового слоя (подобно
176
+ блоку FG44 в DJVU);</p></dd>
177
+
178
+ <dt>color</dt>
179
+ <dd><p>Полноцветный скан, служащий источником для формирования файлов
180
+ с суффиксами <tt>*.bg.*</tt> и <tt>*.fg.*</tt>;</p></dd>
181
+
182
+ <dt>Спецификация цвета (напр. <tt>black</tt> или <tt>#ff00ff</tt>)</dt>
183
+ <dd><p>Бинаризованное изображение, для отрисовки которого следует
184
+ использовать указанный цвет.</p></dd>
185
+
186
+ </dl>
187
+
188
+ <p>Кроме того, при наличии в текущей директории HTML-файлов с расширением
189
+ HTM(L) или HOCR, содержащих распознанный текст в формате hOCR, pdfbeads
190
+ будет использовать их для формирования скрытого текстового слоя в PDF-файле.</p>
191
+
192
+ <p>Некоторые из перечисленных выше видов вспомогательных файлов могут
193
+ создаваться pdfbeads в качестве промежуточного этапа работы. Поскольку
194
+ обработка изображений с помощью библиотеки ImageMagick, на которой основывается
195
+ pdfbeads, иногда занимает довольно много времени, эти файлы в дальнейшем
196
+ не удаляются с диска и могут быть повторно использованы при последующих
197
+ прогонах в целях экономии времени. Для того, чтобы заставить pdfbeads
198
+ заменить такие файлы заново созданными версиями, можно запустить его с опцией
199
+ <tt>-f</tt> или <tt>--force-update</tt>.</p>
200
+
201
+ <p>pdfbeads предназначен для сборки PDF из предварительно обработанных
202
+ сканов, чем объясняются некоторые особенности работы программы:</p>
203
+
204
+ <ul>
205
+
206
+ <li><p>нет возможности как-то модифицировать сканы текстовых страниц,
207
+ за исключением принудительного задания разрешения (предполагается,
208
+ что они были созданы с желательными для пользователя настройками, так что
209
+ дальнейшая обработка не требуется);</p></li>
210
+
211
+ <li><p>не предусмотрена бинаризация и сегментация необработанных сканов,
212
+ выполненных в цвете или в оттенках серого. Исключение представляют случаи
213
+ полуавтоматической обработки (разделение «смешанных» страниц,
214
+ где бинаризованный текст сочетается с полутоновыми картинками; сегментация
215
+ полноцветных изображений по заданной маске), когда pdfbeads лишь завершает
216
+ работу, начатую с помощью других программ;</p></li>
217
+
218
+ <li><p>фоновые изображения, взятые непосредственно с жесткого диска
219
+ пользователя, не подвергаются дополнительной обработке и кодируются
220
+ «как есть».</p></li>
221
+
222
+ </ul>
223
+
224
+ <h2>Начало работы с программой</h2>
225
+
226
+ <p>Программа использует следующий формат запуска из командной строки:</p>
227
+
228
+ <pre>
229
+ pdfbeads [options] [files to process] [&gt; output_file.pdf]
230
+ </pre>
231
+
232
+ <p>Список файлов для обработки может быть либо получен из листинга текущей
233
+ директории, либо задан напрямую в командной строке. В обоих случаях pdfbeads
234
+ проверяет имена файлов на соответствие определенному шаблону: к обработке
235
+ принимаются только изображения TIF(F) или PNG (регистр букв не имеет значения),
236
+ причем расширению файла не должно предшествовать никаких дополнительных
237
+ суффиксов, отделенных точками. Это связано с тем, что двойные расширения
238
+ используются программой для маркировки вспомогательных файлов, имеющих
239
+ специальное назначение.</p>
240
+
241
+ <p>Вместо записи PDF-файла на стандартное устройство вывода можно использовать
242
+ опцию <tt>-o</tt> или <tt>--output</tt>, сопроводив ее указанием имени файла.</p>
243
+
244
+ <h2>Обработка бинаризованных изображений</h2>
245
+
246
+ <p>Для формирования переднего плана, или «маски», на странице
247
+ PDF-документа, используются «основные» файлы отсканированных
248
+ страниц, поданные на вход pdfbeads. При этом программа руководствуется
249
+ следующими правилами:</p>
250
+
251
+ <ul>
252
+
253
+ <li><p>бинаризованные изображения в формате TIFF или PNG используются
254
+ «как есть»;</p></li>
255
+
256
+ <li><p>страницы со смешанным содержимым освобождаются от полутоновых
257
+ изображений (об их обработке см. следующий раздел), а оставшийся
258
+ черно-белый текст сохраняется в файле с расширением <tt>black.tiff</tt>,
259
+ из которого затем и создается маска;</p></li>
260
+
261
+ <li><p>индексированные изображения с белым или прозрачным фоном, содержащие
262
+ небольшое количество цветов (по умолчанию&nbsp;&mdash; 4; это количество
263
+ может быть изменено с помощью параметра <tt>-x</tt> (<tt>--max-colors</tt>)
264
+ разбиваются на несколько бинаризованных файлов (по числу цветов), каждый
265
+ из которых в дальнейшем кодируется отдельно. При этом pdfbeads использует
266
+ предусмотренную форматом pdf возможность наложить на изображение две или
267
+ более масок, указав для каждой из них свой цвет.</p></li>
268
+
269
+ </ul>
270
+
271
+ <p>Для черно-белых текстовых страниц рекомендуется использовать формат
272
+ TIFF со сжатием данных CCITT Group 4 fax, поскольку pdfbeads в большинстве
273
+ случаев в состоянии считывать данные из таких файлов без обращения к библиотеке
274
+ ImageMagick, что существенно увеличивает скорость обработки.</p>
275
+
276
+ <p>По умолчанию передний план страницы упаковывается с помощью технологии
277
+ сжатия JBIG2, для чего pdfbeads использует утилиту <a
278
+ href="http://github.com/agl/jbig2enc">jbig2enc</a> (автор&nbsp;&mdash; Адам
279
+ Лэнгли). При этом можно задать опцию <tt>-p</tt> (<tt>--pages-per-dict</tt>),
280
+ чтобы указать желательное количество страниц, использующих общий словарь
281
+ разделенных символов (по умолчанию&nbsp;&mdash; 15).</p>
282
+
283
+ <p>Если утилита jbig2enc недоступна, либо при запуске pdfbeads была указана
284
+ опция <tt>-m</tt> (<tt>--mask-compression</tt>) с аргументом `G4' (синонимы&nbsp;&mdash;
285
+ `Group4', `CCITTFax'), то вместо JBIG2-сжатия будет использоваться формат
286
+ CCITT Group 4 fax.</p>
287
+
288
+ <h2>Обработка полутоновых изображений</h2>
289
+
290
+ <p>Полутоновые изображения используются в качестве фона PDF-страницы, который,
291
+ как правило, должен иметь меньшее разрешение, чем маска. pdfbeads может
292
+ взять фоновое изображение непосредственно с жесткого диска (из файла
293
+ с дополнительным расширением <strong>bg</strong> или <strong>sep</strong>)
294
+ либо сформировать его путем разделения смешанного файла.</p>
295
+
296
+ <p>При обработке смешанных файлов картинки прежде всего отделяются от текста,
297
+ для чего все черные пиксели окрашиваются белым цветом. Полученное изображение
298
+ сохраняется на диск с учетом следующих параметров командной строки:</p>
299
+
300
+ <dl>
301
+ <dt>-b, --bg-compression</dt>
302
+ <dd><p>Формат сжатия данных. Допускаются значения `JPEG2000' (с синонимами
303
+ `JP2' или `JPX'), `JPEG' (с синонимом `JPG'), а также `LOSSLESS'
304
+ (синонимы&nbsp;&mdash; `DEFLATE', `PNG'). Если используемая сборка библиотеки
305
+ ImageMagick поддерживает формат JPEG2000, по умолчанию используется именно
306
+ он; в противном случае&nbsp;&mdash; JPEG. Если выбрана опция LOSSLESS,
307
+ то pdfbeads будет использовать для сжатия изображений технологию deflate.
308
+ Следует иметь в виду, что это может привести к значительному возрастанию
309
+ объема данных по сравнению с форматами JPEG2000 или JPEG.</p></dd>
310
+
311
+ <dt>-B, --bg-resolution DPI</dt>
312
+ <dd><p>Разрешение для фонового слоя. Разумные значения обычно лежат в пределах
313
+ 150–300 dpi (по умолчанию&nbsp;&mdash; 300).</p></dd>
314
+
315
+ <dt>-g, --grayscale</dt>
316
+ <dd><p>Заставляет pdfbeads принудительно конвертировать цветные картинки в
317
+ оттенки серого. Данная опция может быть полезна в том случае, если исходные
318
+ сканы были выполнены в цвете, но фактически содержали только черно-белые
319
+ картинки, причем преобразование в оттенки серого не было выполнено на этапе
320
+ первичной сканобработки. Такая ситуация часто возникает, в частности, при
321
+ обработке цифровых фотографий с помощью программы ScanTailor.</p></dd>
322
+
323
+ <p>Если pdfbeads загружает готовое фоновое изображение с диска, то какая-либо
324
+ дополнительная обработка уже не производится. Картинки JPEG и JPEG2000
325
+ вставляются в PDF-файл без изменений, а изображения, считанные из файлов
326
+ TIFF и PNG, сжимаются по технологии deflate. Однако при наличии нескольких
327
+ одноименных файлов, различающихся лишь расширением, предпочтение того или
328
+ иного графического формата определяется значением параметра
329
+ <tt>--bg-compression</tt>.</p>
330
+
331
+ </dl>
332
+
333
+ <h2>Сегментация полноцветных изображений по заданной маске</h2>
334
+
335
+ <p>Разделение отсканированного изображения на слои связано с особыми
336
+ сложностями в тех случаях, когда текст напечатан поверх рисунка или
337
+ текстуры. Для того, чтобы упаковать такую страницу в pdf с помощью
338
+ pdfbeads, необходимо подготовить два графических файла:</p>
339
+
340
+ <ul>
341
+
342
+ <li><p>бинаризованное или малоцветное индексированное изображение,
343
+ содержащее только текст или другие элементы, которые должны быть вынесены
344
+ на передний план;</p></li>
345
+
346
+ <li><p>полноцветный скан той же страницы (pdfbeads распознаёт такие
347
+ изображения по суффиксу <tt>*.color.*</tt> в их имени).</p></li>
348
+
349
+ </ul>
350
+
351
+ <p>Первый из двух файлов будет использован в качестве шаблона:
352
+ руководствуясь его начертаниями, pdfbeads постарается сформировать из
353
+ полноцветного скана два новых изображения, причем первое (с суффиксом
354
+ <tt>*.bg.*</tt>) будет содержать фон, освобожденный от текстовых данных,
355
+ а на втором (с суффиксом <tt>*.fg.*</tt>) останутся только элементы маски
356
+ с присущей им текстурой. Данная процедура по смыслу напоминает операцию,
357
+ осуществляемую утилитой <tt>djvumake</tt> при указании опции <tt>PPM</tt>,
358
+ и имеет ту же самую цель: создание трехслойной страницы, где один из
359
+ полноцветных слоев отвечает за отображение фона, а другой&nbsp;&mdash;
360
+ за раскраску наложенной на этот фон маски.</p>
361
+
362
+ <p>Для достижения желаемого результата необходимо, чтобы шаблон накладывался
363
+ на полноцветное изображение без каких-либо сдвигов и искажений. В то же время
364
+ разрешение этих двух изображений (и, соответственно, их пиксельные размеры)
365
+ может быть различным: в этом случае на этапе сегментации будет использоваться
366
+ копия шаблона, масштабированная до размеров цветной картинки. Если весь текст на
367
+ странице набран черным цветом (или, по крайней мере, темнее фона), то для
368
+ создания обоих файлов удобно использовать программу ScanTailor: для этого нужно
369
+ вывести одну и ту же страницу сначала в режиме «черно-белый»,
370
+ а затем&nbsp;&mdash; в режиме «цветной/серый».</p>
371
+
372
+ <p>Следует иметь в виду, что в случае, если шаблон представлен малоцветным
373
+ индексированным изображением, файл с суффиксом <tt>*.fg.*</tt> создан не
374
+ будет: вместо этого на очищенный от текстовых данных фон будет наложена
375
+ маска с изначально заданными цветами.</p>
376
+
377
+ <p>В заключение этого раздела отметим, что используемый pdfbeads алгоритм
378
+ сегментации по заданной маске появился под влиянием
379
+ <a href="http://www.imagemagick.org/discourse-server/viewtopic.php?p=41498#p41498">дискуссии
380
+ на форуме ImageMagick</a>, где обсуждались возможные способы удаления текста
381
+ с картинки с последующим заполнением образовавшихся «дырок»
382
+ исходя из значений соседних пикселей.
383
+
384
+ </p><h2>Дополнительные возможности</h2>
385
+
386
+ <h3>Добавление метаданных</h3>
387
+
388
+ <p>Для того, чтобы созданный pdfbeads PDF-документ содержал данные об авторе,
389
+ заглавии книги и т. д., необходимо предварительно занести эти данные
390
+ в специальный текстовый файл в кодировке ASCII или UTF-8. Каждая строка
391
+ такого файла должна иметь формат</p>
392
+
393
+ <pre>&lt;KEYWORD&gt;: "Текст"
394
+ </pre>
395
+
396
+ <p>В настоящее время в качестве ключевых слов распознаются <tt>Title</tt>,
397
+ <tt>Author</tt>, <tt>Subject</tt> и <tt>Keywords</tt>. Строки, начинающиеся
398
+ с символа `#', считаются комментариями и игнорируются.</p>
399
+
400
+ <p>Ссылку на созданный файл можно передать pdfbeads с помощью опции
401
+ <tt>-M</tt> (или <tt>--meta</tt>).</p>
402
+
403
+ <h3>Метки страниц</h3>
404
+
405
+ <p>pdfbeads позволяет задать метки страниц, которые могут быть использованы
406
+ просмотрщиком PDF вместо их порядковых номеров. Таким образом можно привести
407
+ нумерацию страниц электронного документа в соответствие с нумерацией страниц
408
+ бумажной книги. Для этой цели pdfbeads использует параметр <tt>-L</tt> (или
409
+ <tt>--labels</tt>). Аргумент этого параметра обязательно заключается в
410
+ кавычки и может состоять из одной или нескольких спецификаций диапазонов
411
+ нумерации, отделенных друг от друга символом точки с запятой.</p>
412
+
413
+ <p>Диапазон нумерации формируется из следующих компонентов (каждый из
414
+ них может быть опущен):</p>
415
+
416
+ <ul>
417
+ <li><p>Порядковый номер первой страницы диапазона в PDF-файле, отделенный
418
+ двоеточием от остальной части спецификации. Внимание: страницы PDF-документа
419
+ нумеруются, начиная с нуля, так что для первого диапазона это значение
420
+ всегда должно быть равным нулю.</p></li>
421
+
422
+ <li><p>Произвольный префикс нумерации (допускаются любые символы, кроме
423
+ двойной кавычки, двоеточия, точки с запятой и знака процента).</p></li>
424
+
425
+ <li><p>Описание формата нумерации, начинающееся со знака процента,
426
+ за которым следует латинская буква, указывающая на ее стиль:</p></li>
427
+
428
+ <dl>
429
+
430
+ <dt>D</dt>
431
+ <dd><p>арабские цифры;</p></dd>
432
+
433
+ <dt>R</dt>
434
+ <dd><p>заглавные римские цифры;</p></dd>
435
+
436
+ <dt>r</dt>
437
+ <dd><p>строчные римские цифры;</p></dd>
438
+
439
+ <dt>A</dt>
440
+ <dd><p>заглавные латинские буквы;</p></dd>
441
+
442
+ <dt>a</dt>
443
+ <dd><p>строчные латинские буквы.</p></dd>
444
+
445
+ </dl>
446
+
447
+ <p>Между знаком процента и идентификатором формата нумерации может стоять
448
+ произвольное число, обозначающее отображаемый номер начальной страницы
449
+ (по умолчанию&nbsp;&mdash; 1).</p>
450
+
451
+ </ul>
452
+
453
+ <p>Предположим, например, что книга начинается с двух ненумерованных
454
+ титульных страниц, после чего следуют 32 страницы, пронумерованных
455
+ римскими цифрами, а далее идет арабская нумерация, которая, однако,
456
+ начинается сразу с 33. В таком случае целесообразно задать следующий
457
+ аргумент для параметра <tt>--labels</tt>:</p>
458
+
459
+ <pre>
460
+ "0:Титул %D;2:%R;34:%33D"
461
+ </pre>
462
+
463
+ <h3>Добавление оглавления</h3>
464
+
465
+ <p>pdfbeads предусматривает возможность добавить оглавление к создаваемому
466
+ PDF-файлу. Для этого используется параметр <tt>-C</tt> (или <tt>--toc</tt>),
467
+ принимающий в качестве аргумента путь к текстовому файлу.</p>
468
+
469
+ <p>Файл оглавления должен иметь кодировку UTF-8 и состоять из строк, оформленных
470
+ по следующему образцу (строки, начинающиеся с символа `#', игнорируются):</p>
471
+
472
+ <pre>
473
+ &lt;отступ&gt;"Заголовок" "Номер страницы" [0|-|1|+]
474
+ </pre>
475
+
476
+ <p>Уровень вложенности заголовка определяется его отступом (последний может
477
+ состоять из пробелов или табуляторов, но одновременное использование тех и
478
+ других в пределах одного файла не допускается). После отступа идут поля
479
+ заголовка и номера страницы, которые разделяются любым числом пробельных
480
+ символов и при необходимости заключаются в кавычки. Последний, необязательный
481
+ параметр указывает, должен ли данный пункт оглавления отображаться
482
+ развернутым по умолчанию (символы `+' и `1' означают «да»).</p>
483
+
484
+ <p>Опцию <tt>--toc</tt> целесообразно использовать в сочетании с опцией
485
+ <tt>--labels</tt>. В этом случае в файле оглавления можно использовать
486
+ те же номера страниц, что и в бумажной книге, не задумываясь о сдвигах
487
+ нумерации.</p>
488
+
489
+ <h2>Лицензия</h2>
490
+
491
+ <p>Данная программа является свободным программным обеспечением. Вы
492
+ вправе распространять ее и/или модифицировать в соответствии с
493
+ условиями версии 2 либо по вашему выбору с условиями более поздней
494
+ версии Стандартной Общественной Лицензии GNU, опубликованной Free
495
+ Software Foundation.</p>
496
+
497
+ <p>Мы распространяем данную программу в надежде на то, что она будет
498
+ вам полезной, однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том
499
+ числе ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ
500
+ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Для получения более подробной
501
+ информации ознакомьтесь со Стандартной Общественной Лицензией GNU.</p>
502
+
503
+ <p>Вместе с данной программой вы должны были получить экземпляр
504
+ Стандартной Общественной Лицензии GNU. Если вы его не получили,
505
+ сообщите об этом в Free Software Foundation, Inc., 59 Temple Place -
506
+ Suite 330, Boston, MA 02111-1307, USA.</p>
507
+
508
+ </body>
509
+ </html>