Оглавление
Об авторе
Предисловие
Глава 1. Вездесущий PDF
2. Чтение PDF-документов в Mac OS X с помощью программы Preview
3. Чтение документов в формате PDF с помощью программы GSview от Ghostscript
4. Ускорение запуска программы Acrobat
5. Управление дополнениями к программе Acrobat в Windows с помощью профилей
6. Открытие PDF-файлов в Windows своим способом
7. Копирование данных с PDF-страниц
8. Конвертирование PDF-документов в формат Word
9. Просмотр одного PDF-документа в нескольких окнах
10. Ускорение чтения или демонстрации слайдов в программах Acrobat и Adobe Reader
11. Ускорение чтения или демонстрации слайдов в Mac OS X с помощью программы Preview
12. Распаковка PDF-вложений
13. Переход к следующему или предыдущему заголовку
14. Перемещение по PDF-документам и управление ими с помощью эскизов страниц
Глава 2. Управление коллекцией
16. Создание Windows-ярлыков для сетевых PDF-страниц с помощью Acrobat
17. Создание Windows-ярлыков к местным PDF-страницам
18. Превращение PDF-закладок в Windows-ярлыки
19. Генерирование ключевых слов документа
20. Индексирование и поиск местных PDF-коллекций в Windows
21. Создание порталов документов
22. Создание порталов коллекций
23. Идентификация связанных PDF-документов
Глава 3. Авторская разработка и публикация: хакинг вне PDF
25. Разработка дизайна документа
26. Создание диаграмм и графиков на основе необработанных данных
27. Станьте издателем
28. Печатайте дома, в офисе или в полиграфической сети Kinko's
29. Публикация POD и электронных книг
30. Продажа через Amazon
31. Продайте свою книгу, продайте свой труд
Глава 4. Создание PDF и других изданий
33. Создание экранного издания с помощью Word
34. Многоцелевой PDF-документ
35. Создание HTML-издания с помощью редактора Word
36. Создание портативного издания из HTML-документа
37. Конвертирование документов в формат PDF с помощью имеющихся средств
38. Acrobat Distiller и его профили
39. Печать PDF-документов в Windows с помощью Ghostscript и RedMon
40. Сохранение PDF-документов в Mac OS X
41. Совместимость PDF-документов
42. Конфигурирование Distiller и Ghostscript
43. Встраиваемые и неполные шрифты
44. Совместное использование PDF-принтера с помощью программы Samba
45. Вывод изображений и опции преобразования в растровый формат
46. Вывод SVG-графики
47. Печать в интернете
48. Создание PDF-альбома цифровых фотографий
49. Печать на факсимильных аппаратах в Windows
50. Конвертирование входящих факсов в PDF-формат в Linux
51. Управление PDF-файлами
53. Добавление операции шифрования документов формата PDF в контекстное меню Windows
55. Добавление таблиц к документу
56. Добавление операции вложения в PDF-документ в контекстное меню Windows
57. Создание предметного указателя из ключевых слов
58. Преобразование художественных работ в растровый формат с помощью программ Illustrator или Photoshop
59. Обрезка страниц для большего удобства просмотра
60. Уменьшение размера документов перед отправкой по электронной почте
61. Копирование свойств из одного PDF-документа в другой
62. Окончательная шлифовка PDF-издания
63. Добавление и редактирование PDF-закладок
64. Добавление и настройка PDF-метаданных
65. Добавление навигационной панели в веб-стиле к PDF-странице
66. Защита PDF-документа от копирования
67. Поддержка чтения PDF-документов в сети
68. Загрузка документа в формате PDF вместо его чтения
69. HTML-гиперссылки к PDF-страницам
70. Создание HTML-оглавления на основе PDF-закладок
71. Веб-обложки для документов в формате PDF
73. Определение популярности темы
Глава 6. Сбор данных с помощью сетевых PDF-форм
75. Сопровождение заполненных PDF-форм
76. Распространение PDF-форм
77. Заполнение PDF-форм
78. Объединение PDF-формы и ее данных
79. Управление с помощью pdftk
80. Декодирование и управление документом в формате PDF на текстовом уровне
81. Редактирование PDF-кода
82. Объединение pdftk с gVim для редактирования документов в формате PDF
83.  Изменение PDF-гиперссылок
84. Изменение PDF-текста во время сеанса
85. Использование HTML для создания документов в формате PDF
86. Использование Perl для создания документов в формате PDF
87. Использование PHP для создания документов в формате PDF
88. Использование Java для создания документов в формате PDF
89. Компоновка страниц и управление документом в формате PDF
90. Наложение PDF-страниц
91. Генерирование документов в формате PDF из XML и CSS
92. Создание документов в формате PDF с помощью XSL-FO и FOP
Глава 7. Создание сценариев и программирование Adobe Acrobat
94. Создание сценариев для Acrobat в Windows с помощью Visual Basic
95. Создание сценариев для Acrobat в Windows с помощью Perl
96. Настройка Adobe Acrobat с помощью JavaScript
97. Средства разработки дополнений к программе Acrobat
98.  Изучение документации и примеров Acrobat SDK
99. Использование дополнений к программе Acrobat для расширения PDF-документов
100. PostScript и PDF-игры
Обложка
Обложка
Текст
                    взломы
PDF
Cud Стюард
O'REILLY®


Sid Steward PDF HACKS O'REILLY® Beijing ■ Cambridge ■ Farnham ■ Koln ■ Paris ■ Sebastopol ■ Taipei ■ Tokyo
Сшд Стшард взломы PDF Щ^ЩЛ'Нр'С»' I ЩРв» w* WHi# I gwiry IVItCrlil IF CJPIbI Москва «СП ЭКОМ» «БИНОМ. Лаборатория знаний» 2006 эшм
УДК 681.3 ББК 32.97 С 88 Стюард С. С 88 Взломы PDF. 100 профессиональных советов и инструментов. Практ. пособ. / Пер. с англ.— М.: «СП ЭКОМ», 2006.— 320 с: илл. ISBN 5-9570-0048-5 Книга представляет собой сборник профессиональных советов, позволяющий повысить эффективность работы с документами в формате PDF. Рассматриваются следующие темы: управление документами в программах Adobe Acrobat и Adobe Acrobat Reader, управление коллекциями; создание интерактивных и динамических документов, электронных книг; Acrobat Distiller и его профили; печать PDF-документов; создание сценариев и программирование Acrobat. Книга рассчитана на пользователей средней и высокой квалификации, занимающихся издательской деятельностью. Copyright © 2004 O'Reilly Media, Inc. All rights reserved. © Русский перевод, дизайн. «СП ЭКОМ», 2006 ISBN 0-596-00655-1 (англ.) ISBN 5-9570-0048-5
Оглавление Предисловие 13 Глава 1. Вездесущий PDF 18 1. Чтение PDF-документов с помощью Adobe Reader 18 2. Чтение PDF-документов в Mac OS X с помощью программы Preview 20 3. Чтение документов в формате PDF с помощью программы GSview от Ghostscript 22 4. Ускорение запуска программы Acrobat 23 5. Управление дополнениями к программе Acrobat в Windows с помощью профилей 26 6. Открытие PDF-файлов в Windows своим способом 27 7. Копирование данных с PDF-страниц 31 8. Конвертирование PDF-документов в формат Word 35 9. Просмотр одного PDF-документа в нескольких окнах 38 10. Ускорение чтения или демонстрации слайдов в программах Acrobat и Adobe Reader 43 11. Ускорение чтения или демонстрации слайдов в Mac OS X с помощью программы Preview 47 12. Распаковка PDF-вложений 48 13. Переход к следующему или предыдущему заголовку 49 14. Перемещение по PDF-документам и управление ими с помощью эскизов страниц 51 15. Закладки PDF-страниц в программе Adobe Reader 54
Глава 2. Управление коллекцией 54 16. Создание Windows-ярлыков для сетевых PDF-страниц с помощью Acrobat 58 17. Создание Windows-ярлыков к местным PDF-страницам ... 60 18. Превращение PDF-закладок в Windows-ярлыки 63 19. Генерирование ключевых слов документа 63 20. Индексирование и поиск местных PDF-коллекций в Windows 67 21. Создание порталов документов 77 22. Создание порталов коллекций 80 23. Идентификация связанных PDF-документов 82 Глава 3. Авторская разработка и публикация: хакинг вне PDF 86 24. Поддержание состояния вашего источника 86 25. Разработка дизайна документа 91 26. Создание диаграмм и графиков на основе необработанных данных 98 27. Станьте издателем 101 28. Печатайте дома, в офисе или в полиграфической сети Kinko's 104 29. Публикация POD и электронных книг 105 30. Продажа через Amazon 107 31. Продайте свою книгу, продайте свой труд 107 Глава 4. Создание PDF и других изданий 109 32. Создание интерактивного PDF-документа с помощью редактора Word 109 33. Создание экранного издания с помощью Word 113 34. Многоцелевой PDF-документ 115 35. Создание HTML-издания с помощью редактора Word 116 36. Создание портативного издания из HTML-документа .... 119 37. Конвертирование документов в формат PDF с помощью имеющихся средств 123
38. Acrobat Distiller и его профили 124 39. Печать PDF-документов в Windows с помощью Ghostscript и RedMon 127 40. Сохранение PDF-документов в Mac OS X 135 41. Совместимость PDF-документов 136 42. Конфигурирование Distiller и Ghostscript 138 43. Встраиваемые и неполные шрифты 142 44. Совместное использование PDF-принтера с помощью программы Samba 147 45. Вывод изображений и опции преобразования в растровый формат 150 46. Вывод SVG-графики 153 47. Печать в интернете 156 48. Создание PDF-альбома цифровых фотографий 159 49. Печать на факсимильных аппаратах в Windows 161 50. Конвертирование входящих факсов в PDF-формат в Linux 163 Глава 5. Разбиение и объединение документов в формате PDF (без помощи Acrobat) 165 51. Управление PDF-файлами 165 52. Шифрование и расшифровка документов в формате PDF (без помощи Acrobat) 169 53. Добавление операции шифрования документов формата PDF в контекстное меню Windows 174 54. Добавление вложений в PDF-документ (без помощи Acrobat) 174 55. Добавление таблиц к документу 177 56. Добавление операции вложения в PDF-документ в контекстное меню Windows 180 57. Создание предметного указателя из ключевых слов 181 58. Преобразование художественных работ в растровый формат с помощью программ Illustrator или Photoshop 184
59. Обрезка страниц для большего удобства просмотра 187 60. Уменьшение размера документов перед отправкой по электронной почте 190 61. Копирование свойств из одного PDF-документа в другой 193 62. Окончательная шлифовка PDF-издания 193 63. Добавление и редактирование PDF-закладок 196 64. Добавление и настройка PDF-метаданных 197 65. Добавление навигационной панели в веб-стиле к PDF-странице 201 66. Защита PDF-документа от копирования 204 67. Поддержка чтения PDF-документов в сети 206 68. Загрузка документа в формате PDF вместо его чтения 208 69. HTML-гиперссылки к PDF-страницам 211 70. Создание HTML-оглавления на основе PDF-закладок ... 212 71. Веб-обложки для документов в формате PDF 214 72. Совместное использование PDF-комментариев в сети (без помощи Acrobat) 217 73. Определение популярности темы 219 Глава 6. Сбор данных с помощью сетевых PDF-форм 221 74. Динамические документы в формате PDF 221 75. Сопровождение заполненных PDF-форм 227 76. Распространение PDF-форм 230 77. Заполнение PDF-форм 235 78. Объединение PDF-формы и ее данных 239 79. Управление с помощью pdftk 243 80. Декодирование и управление документом в формате PDF на текстовом уровне 245 81. Редактирование PDF-кода 247 82. Объединение pdftk с gVim для редактирования документов в формате PDF 249
83. Изменение PDF-гиперссылок 253 84. Изменение PDF-текста во время сеанса 259 85. Использование HTML для создания документов в формате PDF 266 86. Использование Perl для создания документов в формате PDF 267 87. Использование РНР для создания документов в формате PDF 270 88. Использование Java для создания документов в формате PDF 272 89. Компоновка страниц и управление документом в формате PDF 273 90. Наложение PDF-страниц 276 91. Генерирование документов в формате PDF из XML и CSS 279 92. Создание документов в формате PDF с помощью XSL-FO и FOP 282 Глава 7. Создание сценариев и программирование Adobe Acrobat 287 93. Изменение или конвертирование пакетов документов 287 94. Создание сценариев для Acrobat в Windows с помощью Visual Basic 294 95. Создание сценариев для Acrobat в Windows с помощью Perl 297 96. Настройка Adobe Acrobat с помощью JavaScript 302 97. Средства разработки дополнений к программе Acrobat ... 305 98. Изучение документации и примеров Acrobat SDK 308 99. Использование дополнений к программе Acrobat для расширения PDF-документов 311 100. PostScript и PDF-игры 312 Указатель 315
10
Об авторе Сид Стюард работает с издателями, делая с PDF-файлами то, что им нужно. Иногда решением является просто сценарий, в другой раз не- необходимо выполнить преобразование всего документа. Он мечтатель, идеалист и во многом отличается от других. Все это помогает ему нахо- находить хорошие решения интересных проблем. Его героями являются Бджэйрн Строустрап и Берн Джайлз. Помощники Следующие люди поделились своими материалами и сделали экс- экспертную оценку этой книги: • Саймон Ст. Лоурент (http://simonstl.com/) — редактор из O'Reilly Media, Inc. До этого он был разработчиком сетей, сетевым адми- администратором, автором компьютерных книг и специалистом по XML. Он живет в Драйдене, Нью-Йорк. Им написаны книги: «XML: A Primer, XML Elements of Style, Building XML Applications, Cookies» и «Sharing Bandwidth». • Майкл Фитцджеральд является администратором доступа к систе- системе в компании Wy'east Communication (http://www.wyeast.net), за- занимающейся консультациями, обучением и программированием на XML. Он автор книг: «Learning XSLT» (O'Reilly), «XSL Essentials» (John Wiley) и «Building B2B Applications with XML: A Resourse Guide» (John Wiley). Майк является создателем Ох (http://www.wyeast.net/ox.html), Java-инструмента с открытым ко- кодом для генерирования краткой, синтаксически связанной доку- документации в командной строке. Он являлся членом технического комитета RELAX NG в OASIS B001-2003 гг.). Уроженец штата Орегон, Майк живет теперь со своей семьей в Маплетоне, штат Юта. Вы можете найти его технический сетевой журнал на веб- вебстранице http://www.oreillynet.com/weblogs/author/1365. • К. К. Сэмпл III ведет сетевой журнал 3650 and a 12-inch (http://3650andal2inch. blogspot.com), обсуждающий использование 12" PowerBook G4 и Nokia 3650. Он кандидат на докторскую степень в английском языке в университете Fordham, специализирующийся на американской и британской литературе XX века, а также миро- мировой литературе, изучении библии и теории критики. Он работает в
отделе учебных технологий и академических вычислений в качестве технического супервизора для Fordham Graduate Center's North Hall Labs в Территауне, Нью-Йорк. Его первым компьютером был Atari 400, а его первым Макинтошем — PowerBook 5300CS. Уроженец Джэксона, Миссисипи, он в настоящее время живет в Бронксвилле, Нью-Йорк со своей невестой Кристин Ландгреб и попугаем Ми- Мишей, которому исполнилось два года. • Дарен Никкерсон — многолетний член сообщества HylaFAX и ос- основатель его сетевого портала http://www.hylafax.org. Он работает руководителем отдела продаж и инженером поддержки в iFAX Solutions, поставляя HylaFAX-решения для факсимильной связи предпринимателям всего мира. • Росс Прессер управляет небольшой Windows-сетью полиграфиче- полиграфической компании и разрабатывает внутренние приложения на не- нескольких разновидностях Visual Basic. В течение нескольких часов ему позволяют расслабиться, и он жадно читает все виды тексто- текстовой информации и слушает музыку Джимми Баффетта. Он и его жена живут в южном Нью-Джерси («часть штата, в которой за- загрязнений меньше, а больше налогов»). Благодарности Я хотел бы поблагодарить свое семейство и друзей за их поддержку и терпение, а особенно мою жену Линду за то, что она смогла приспосо- приспособиться к моему образу жизни. Специальная благодарность Крису Ди- бону за предложение написать эту книгу и за знакомство с Раэлом Дорнфестом. Большое спасибо Тиму О'Рейли и прекрасным людям из O'Reilly Media, кто задумал и затем работал со мной, чтобы создать превосход- превосходную книгу «Взлом PDF», которую вы держите в руках. В частности, я очень благодарен Раэлу Дорнфесту за его руководство и Саймону Ст. Лоуренту за то, что он взял мою рукопись и превратил ее в книгу. Специальная благодарность Эрику Тамму (http://www.erictamm.com) за то, что он позволил мне использовать его книгу «Brian Eno: His Music and the Vertical Color of Sound» (Da Capo Press) в моих примерах. Посе- Посетите сайт http://erictamm.com/tammeno.html, чтобы загрузить эту книгу, или купите ее в книжном магазине. Спасибо Скотту Тапаю за анализ кода и перепроверку технических деталей. Благодарю также РафаЛевьена, Эдда Дамбилла, Скотта Тапая, Марша Стюарда, Стэна Шоптога, Пола Моррисона и Майка Шермана (http://www.svwh.net) за их идеи, рецензии и вдумчивую обратную связь. Большое спасибо и глубокая благодарность тем, кто стоит за созда- созданием C++, STL, GCC, GCJ и Debian.
Предисловие Многие думают о формате Portable Document Format (PDF — формат переносимого документа) от Adobe, как частном формате для поставки неизменного контента, который читатели могут распечатать или удоб- удобно просмотреть на экране. Возможно, многие так с ним и работают, но вы можете сделать с документами в формате PDF множество других ве- вещей с помощью или без помощи программ от Adobe. Формат PDF прошел длинный путь с момента своего появления в начале 90-х годов. Когда фирма Adobe начала предлагать свою про- программу Acrobat Reader бесплатно, формат PDF распространился в сети как альтернатива HTML. Формат PDF заменил или дополнил файлы на языке PostScript от Adobe как формат для обмена готовыми к печати макетами и развил возможности форм, которые через какое-то время сделали PDF более интерактивным форматом. Хотя большинство людей все еще думает об Acrobat, когда слышат о PDF, этот формат стал стандартом и для других приложений. Adobe предоставляет описание формата PDF, поэтому разработчики могут создать свои собственные средства для создания и использования PDF-документов. Программное обеспечение от Ghostscript, например, является инструментарием с открытым кодом для работы с PostScript и PDF. OpenOffice.org дает пользователям возможность создавать PDF- файлы с помощью своих приложений, а фирма Apple интегрировала PDF с Mac OS X, включая свою собственную программу для просмот- просмотра PDF-документов и средства для осуществления вывода в формате PDF в любом приложении. Семейство программ Adobe Acrobat наряду с Acrobat Reader включа- включает разнообразные инструментальные средства для создания и редак- редактирования PDF-документов, но существуют и другие полезные сред- средства и программы для работы с PDF, многие из которых рассмотрены в этой книге.
Почему мы говорим о взломе PDF? Термин хакинг имеет плохую репутацию в прессе. Его применяют, когда кто-то проникает в компьютерные системы или наносит ущерб, используя компьютеры как орудие. Тем не менее, среди людей, кото- которые пишут коды, этот термин означает быстрое и грубое решение про- проблемы или остроумный способ сделать что-то. И термин хакер приме- применяется в качестве комплимента тому, кто творчески использует свои технические знания, чтобы добиться цели. Эта серия книг является по- попыткой реабилитации значения этого слова. Она описывает способы, которыми выполняется взлом, и пытается передать этику хакерского творчества непосвященным. Наблюдение за тем, как другие подходят к решению проблемы, часто является самым быстрым путем к освоению новой технологии. Использование формата PDF традиционно выглядело как симпатич- симпатичная и не поддающаяся взлому технология. Большинство людей работает с PDF, используя средства, предлагаемые единственным продавцом — Adobe, и PDF-документы часто распространяются в предположении, что их не могут (или не будут) изменять. Практически инструменты для работы с PDF предлагают большую гибкость и поддерживают широкое разнообразие способов чтения, совместного использования, управления и создания PDF-файлов. Даже если вы просто читаете такой документ, существует много способов усовершенствовать этот процесс. Создатели PDF-файлов могут сделать намного больше, чем просто «осуществлять вывод в формате PDF», они могут генерировать файлы с заказным кон- контентом или создавать формы для двухсторонней связи. Книга показывает богатые возможности PDF-документов и помога- помогает использовать их новыми способами. Как пользоваться этой книгой Вы можете читать эту книгу от начала до конца, если хотите, но каж- каждый метод взлома является самостоятельным, так что можно просмат- просматривать их отдельно и переходить к разделам, которые наиболее инте- интересны. Если есть информация, о которой вы должны знать, перекрестная ссылка приведет вас к нужному методу взлома. Если вы ищете что-то определенное, вам поможет предметный указатель. Замечание о программном обеспечении Хотя PDF все еще ассоциируется с семейством инструментальных средств Adobe Acrobat, вам не всегда нужен Acrobat, чтобы выполнить определенную работу. И даже при том, что многие из методов взлома относятся к коммерческим средствам (Acrobat 5, Acrobat 6 Standard или
Acrobat 6 Professional) или связаны со определенной операционной си- системой, книга пытается оставаться, насколько возможно, не завися- зависящей от среды. Используется ли Windows, Mac OS X или Linux, должен существовать способ сделать большую часть из того, что здесь описано. Некоторые методы взлома предназначены для определенной операци- операционной системы, о чем говорится дополнительно. Использование примеров кода Книга должна помочь вам в работе. Используйте код из этой книги в своих программах и документации (весь код доступен для загрузки на http://examples.oreilly.com/pdfhks/; большинство методов взлома пред- предполагают, что файлы примеров находятся в рабочем каталоге). Не тре- требуется получение разрешения на использование кода, если не воспро- воспроизводится его существенная часть. Например, написание программы, использующей несколько фрагментов кода из этой книги, не требует разрешения на их использование. Однако продажа или распростране- распространение CD-ROM с примерами из этой книги разрешения требует. Ответ на вопрос, цитируя эту книгу или используя пример из нее, не требует разрешения, но включение существенного количества примеров из книги в документацию программы требует. Мы будем признательны за ссылку при использовании кода. Ссылка обычно включает заголовок, автора, издателя и ISBN. На- Например: «"PDF Hacks" by Sid Steward. Copyright 2004 O'Reilly Media, Inc, 0-596-00655-1». Если вы чувствуете, что использование вами примеров кода выходит за пределы разрешения, данного здесь, не стесняйтесь входить с нами в контакт по адресу: permissions@oreilly.com. Как построена эта книга Эта книга разделена на семь глав, каждая из которых кратко описа- описана ниже: Глава 1. Всепроникающий PDF. Глава описывает различные инструментальные средства для чтения PDF-файлов и обучает, как сделать их более удобными в использо- использовании, а также способы получения информации из Acrobat и других приложений. Глава 2. Управление коллекцией. Работа с отдельными PDF-файлами ведет к созданию коллекции файлов. В этой главе рассматриваются средства и методы работы с
группами документов, создания структур управления многочислен- многочисленными документами для представления их пользователям. Глава 3. Авторская разработка и публикация: хакинг вне PDF. Большинство PDF-документов созданы в других форматах, а затем преобразованы в формат PDF. Документы в формате PDF использу- используются также в большом количестве других процессов, от печати до распространения электронных книг. Эта глава исследует методы со- создания источников PDF-контента и рассматривает возможности PDF-файлов вне контекста обычного просмотра и печати. Глава 4. Создание PDF и других изданий. Существует множество различных способов создания PDF-файлов и способов дополнения PDF-документов информацией в различных форматах. Эта глава рассматривает разнообразие средств и методов, которые вы можете использовать для создания собственных PDF- документов. Глава 5. Управление PDF-файлами. В этой главе показано, как выполнять разбиение PDF-файлов, ши- шифрование документов, присоединение данных, сокращение разме- размеров файлов, создавать индексы и работать с закладками. Глава 6. Динамические PDF-документы. PDF-файлы не должны быть статическими представлениями од- однажды созданных документов. Эта глава показывает, как сделать PDF-документы более активными, используя возможности форм, и учит использованию различных инструментальных средств для гене- генерирования PDF-документов из ваших данных. Глава 7. Создание сценариев и программирование Acrobat. Семейство приложений Adobe Acrobat является основой создания и об- обработки PDF-документов. Здесь описываются методы автоматизации некоторых задач и расширения приложений различными способами. Контактная информация Мы тщательно проверили информацию, содержащуюся в этой кни- книге, но вы можете найти какое-то несоответствие (или даже ошибки!). Как читатель этой книги вы можете помочь нам улучшить следующие издания, установив с нами обратную связь. Пожалуйста, сообщите нам о любых ошибках, погрешностях, дефектах и опечатках, которые най- найдете в этой книге.
Также сообщите нам, что мы можем предпринять, чтобы сделать эту книгу более полезной для вас. Мы отнесемся к вашим комментариям со всей серьезностью и постараемся использовать разумные предложе- предложения в будущих изданиях. Вы можете написать нам по адресу: O'Reilly Media, Inc. 1005 Gravenstein Hwy N. Sebastopol, CA 95472 (800) 998-9938 (в США или Канаде) G07) 829-0515 (международный/местный) G07) 829-0104 (факс) Чтобы задать технические вопросы или прокомментировать книгу, пошлите сообщение по электронной почте: bookquestions @oreilly. com Сайт O'Reilly предлагает архив файлов примеров для книги «Взлом PDF», список опечаток, возможность написания читательских рецен- рецензий и т. д. Вы можете найти эту страницу здесь: http://www. oreilly. com/catalog/pdfhks/ Вы можете также найти информацию об этой книге на сайте: http://www.pdfhacks.com Для получения дополнительной информации об этой и других кни- книгах посетите сайт O'Reilly: http://www. oreilly. com Нужен метод взлома? Для получения информации о других книгах этой серии или интер- интерактивной помощи в осуществлении взлома посетите сайт O'Reilly: http://hacks, oreilly. com
ГЛАВА 1 Вездесущий PDF Советы №1-14 Большинство людей сталкиваются с документами в формате PDF при необходимости что-то прочитать или распечатать. Adobe Reader и Adobe Acrobat являются самыми известными средствами для работы с PDF-документами, а другие программы имеют свои отличительные особенности. Сначала мы изучим самые популярные программы для чтения PDF-документов, а затем обсудим, как усовершенствовать свой опыт их чтения. Чтение PDF-документов с помощью Adobe Reader (Используйте Acrobat Reader от Adobe, переименованный в Adobe Reader в последней версии, для чтения PDF-файлов.) Многие сайты, использующие PDF-файлы, помещают рядом с ни- ними ярлык Get Adobe Reader (Загрузить Adobe Reader). Установлена ли на вашем компьютере Windows, Mac OS X, Mac OS 7.5.3 или более по- поздняя версия, Linux, Solaris, AIX, HP-UX, OS/2, Symbian OS, Palm OS или Pocket PC, у Adobe имеется программа чтения для любой платфор- платформы. (Эти программы имеют различные номера версий и возможности, но все они обеспечивают чтение PDF-файлов.) Чтобы скачать бесплатную версию программы, посетите веб-стра- веб-страницу http://www.adobe.com/products/acrobat/readstep2.html, где необходи- необходимо выбрать язык, платформу, скорость подключения и вариант загруз- загрузки. В результате на вашем компьютере будет установлена программа Adobe Reader или Acrobat Reader, при этом Adobe Reader встраивается в веб-браузер, если последний разрешает это. Если вам нужна старая версия Acrobat Reader, посетите веб-страницу http://www. adobe, com/products/acrobat/ к reader_archive.html.
После завершения установки программы щелкните на ссылке к PDF- документам, чтобы просматривать их непосредственно в окне браузера. Кроме того, можно открыть PDF-файл командой File\Open (Файл\ Открыть) или двойным щелчком на значке файла. На рисунке 1-1 показан документ, открытый с помощью Acrobat Reader, встроенного в веб-бра- веб-браузер, а на рисунке 1-2 — тот же самый документ в окне Acrobat Reader, вы- выполняющегося как отдельное приложение. Рис. 1-1. Просмотр PDF-документа с помощью программы Acrobat Reader, встроенной в браузер Как и в любом приложении, здесь можно выполнить прокрутку все- всего документа. Программа обеспечивает опции изменения масштаба изображения (лупа и окно процентного изменения масштаба изобра- изображения на панели инструментов), опции печати (принтер), параметры поиска (бинокль) и опции навигации (стрелки на панели инструмен- инструментов). Кнопка Show\Hide Navigation Pane (Показать\Скрыть навигаци- навигационную панель) слева от стрелок дает возможность видеть закладки, ес- если они предусмотрены создателем документа. В отличие от коммерческих приложений Acrobat Reader не позволяет создавать или изменять PDF-документы.
После установки программы Adobe Reader ее нужно настроить для обеспечения наилучших условий чтения. В Adobe Reader 5 или 6 с по- помощью команды меню Edit\Preferences (Правка\Параметры настрой- настройки) откройте диалоговое окно Preferences. Выбрав, например, в этом окне раздел Page Display (Отображение страницы) в Adobe Reader 6 или Display (Отображение) в Adobe Reader 5, установите заданное по умол- умолчанию размещение страницы в режим Single Page (Отдельная страни- страница), а значение по умолчанию для размера окна таким, чтобы оно соот- соответствовало странице (Fit Page) в Adobe Reader 6 или окну (Fit in Window) в Adobe Reader 5. Рис. 1-2. Просмотр PDF-документа в программе Acrobat Reader, запущенной как отдельное приложение Чтение PDF-документов в Mac OS X с помощью программы Preview (При использовании компьютера Macintosh с установленной системой OS X про- просмотр PDF-документов возможен с помощью приложения Preview без загрузки Acrobat Reader.) Последняя операционная система Apple, Mac OS X, с самого начала использует формат PDF. Значки и приложения имеют формат PDF, визуализация привязана к модели данных, используемой этим форма-
том, а любое приложение, которое позволяет выводить информацию, осуществляет его в виде PDF-файлов. Поэтому приложение Preview от Apple, работающее с различными типами файлов, также поддерживает этот формат. Приложение Preview установлено на компьютерах Macintosh в ката- каталоге Macintosh HD:Applications:Preview. Оно читает разнообразные гра- графические форматы, например JPEG, TIFF, GIF, и формат PDF. От- Открывается PDF-документ в программе Preview командой меню File\Open (Файл\Открыть) или двойным щелчком кнопкой мыши на значке файла. Открытый в программе Preview PDF-документ показан на рисунке 1-3. Рис. 1-3. Просмотр PDF-документа в приложении Preview из Mac OS X
Полный интерфейс Preview намного проще, чем интерфейс Acrobat Reader, хотя опции являются удобными и ясными. Preview создает эс- эскизы страниц, что удобно для быстрого перемещения по документу, и поддерживает функциональные возможности создания PDF-докумен- PDF-документов, встроенные в Mac OS X [Совет № 40]. Кроме того, команда меню File\Export (Файл\Экспорт) дает возмож- возможность сохранять просматриваемые PDF-документы или графику в раз- различных форматах. Эта опция очень удобна, если нужно конвертировать JPEG-файл в PDF-файл или PDF-файл в TIFF-файл. (Стоит также от- отметить, что снимки экрана, сделанные в Mac OS X с помощью нажатия комбинации клавиш Command+Shift+З или Command+Shift+4, сохра- сохраняются на рабочем столе в формате PDF. Эти PDF-файлы содержат то- точечные рисунки, как будто они были созданы как TIFF-файлы и экс- экспортированы в формат PDF с помощью программы Preview.) Чтение документов в формате PDF с помощью программы GSview от Ghostscript (Программа от Ghostscript для работы с PostScript и PDF-документами поддержи- поддерживает различные средства просмотра, включая GSview.) Программа Ghostscript {http://www.cs.wisc.edu/-ghost/) — альтернати- альтернатива программам фирмы Adobe. В ее основе лежит PostScript-процессор, работающий и с PDF-файлами. PostScript является и предшественником формата PDF, и дополнением к нему. PostScript — язык программиро- программирования, описывающий печать страниц, а формат PDF является более описательным. Вы можете выполнять конвертирование из PostScript в PDF и обратно. Мно- Многие принтеры и системы типографского набора обраба- обрабатывают PostScript, тогда как PDF обычно используется для обмена данными между компьютерами. Хотя обычно Ghostscript выполняется из командной строки или ин- интегрируется с другими процессами, он может использоваться в различ- различных средствах просмотра. Ghostview и GV поддерживают Unix и VMS, MacGSview — средство просмотра для Macintosh, a GSview — для Windows, OS/2 и Linux. Прежде чем использовать Gsview, необходимо установить Ghostscript [Совет № 39]. Программа GSview может работать с PostScript, Encapsulated PostScript (EPS) и, конечно же, с PDF, как по- показано на рисунке 1-4. Команды панели инструментов GSview позволяют перемещаться по файлу, изменять размер окна и производить поиск. При просмотре ме-
ню обнаруживается много утилитных функций, ориентированных на PostScript. Программа GSView является полезным инструментом при работе с PostScript и EPS-файлами, и с форматом PDF. Она также вы- выдает достаточно подробные сообщения об ошибках при обработке форматов PDF и PostScript. Рис. 1-4. Просмотр PDF-документа с помощью GSview Ускорение запуска программы Acrobat (Исключите дополнения к программе, которые вы не используете.) И Adobe Acrobat, и Adobe Reader поддерживают модульные приклад- прикладные дополнения к программе (plug-ins), которые загружаются при запус- запуске программы. Можно ускорить запуск программы и сократить ее ме- меню, загружая только необходимые модули. Самый простой метод — удержание нажатой клавиши Shift при за- запуске Acrobat; это препятствует загрузке всех дополнений к програм- программе. Другие решения состоят в том, чтобы переместить нежелатель- нежелательные дополнения в такой каталог, где загрузчик запуска не сможет их найти, или создать сменные профили [Совет № 5], которые переключа-
ются с помощью шлюза пакетного файла. Это последнее решение ста- становится действительно полезным при объединении с контекстным меню [Совет № 6]. Исключение дополнений к программе зависит от того, как будут вести себя PDF-документы. Если документ работает со сбоями, попробуйте просмотреть его с пол- полным комплектом установленных дополнений к про- программе Adobe. Отключение дополнений к программе Программа Acrobat (или Adobe Reader) загружает свои дополнения только однажды, при запуске приложения. В Windows она сканирует папку plug_ins5 которая обычно находится в каталоге: C:\Program Files\Adobe\Acrobat 6.0\Acrobat\plug_ins\ или: C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\ В Windows сменные файлы имеют расширение *.api, но в действи- действительности они являются библиотеками DLL [Совет № 97]. В Macintosh дополнения к программе хранятся в пакете Acrobat. Щелкните правой кнопкой мыши на значке программы Acrobat и выберите в контекстном меню Show Package Contents (Показать содержимое пакета). Откроется окно с папкой Contents (Содержи- (Содержимое). В ней находится папка Plug-ins (Дополнения к программе), ко- которая содержит Macintosh-версию дополнений с именами типа Checkers.acroplugin. Создайте папку под названием plugjns.unplugged в каталоге, где на- находится plugjns (или Plug-ins), чтобы они были элементами одного уровня. Чтобы воспрепятствовать загрузке дополнения к программе, просто переместите его из папкиplug_ins в папку plug_ins.unplugged. Ес- Если дополнение к программе расположено в папке preflight, переместите ее целиком. Вы можете спросить: «Но откуда я знаю, что делают сменные фай- файлы?» Продолжайте читать дальше. Что делает каждое дополнение к программе? Программы Acrobat и Adobe Reader версий 5 и 6 содержат описание установленных дополнений в справочном файле, открывающемся ко- командой Help\About Adobe Plug-ins (Справка\О дополнениях к Adobe),
а на компьютерах Macintosh: Acrobat\About Adobe Plug-ins. Описание дополнений находится слева (см. рисунок 1-5). Выделите одно из них, и справа отобразится имя сменного файла, краткое описание и другая полезная информация о дополнении к программе. Рис. 1-5. Окно About Adobe Plug-Ins содержит описание дополнений к Acrobat Пройдите весь список и запишите имена файлов дополнений, которые вам не требуются. Закройте Acrobat и используйте диспет- диспетчер файлов, чтобы переместить эти файлы (или папки) из plug_ins в plug_ins.unplugged. Откройте Acrobat и проверьте новую конфигу- конфигурацию. Дополнения к программе Acrobat 5, которые используются доста- достаточно редко: Accessibility Checker, Catalog, Database Connectivity, Highlight Server, Infusium, Movie Player, MSAA, Reflow, SaveAsRTF, Spelling и Web-Hosted Service. Дополнения, которые не следует отклю- отключать — Comments, Forms, ECMAScript (JavaScript) и Weblink.
Управление дополнениями к программе Acrobat в Windows с помощью профилей (Если Acrobat используется для нескольких целей, создайте несколько профилей.) Если программа Acrobat используется для различных задач, то, веро- вероятно, потребуются и различные дополнения к ней. При использовании сторонних или заказных дополнений к программе [Совет № 97] может возникнуть необходимость различать коммерческое применение Acrobat от экранного чтения с его помощью. В том же каталоге, где находится папка plugjns [Совет № 4], создайте по одной папке для каждого профиля, называя их примерно так: plug_ins.profile_name. Например, коммерческий профиль может иметь имя plugjns.production. Скопируйте необходимые дополнения к про- программе в каждую из папок профилей. Можно скопировать дополнение к программе в одну или более папок. Папка plugjns будет профилем, заданным по умолчанию. Скопируйте следующий код в текстовый файл с именем C:\switch- board.bat. Отредактируйте путь к файлу Acrobat.exe, чтобы он соответ- соответствовал вашей конфигурации. Этот пакетный файл использует два па- параметра: имя желательного профиля и имя PDF-файла. Следуя нашему предыдущему примеру, запустите Acrobat с коммерческим профилем, вызывая C:\switchboard.bat production. :: switchboard.bat, версия 1.0 :: посетите: http://www.pdfhacks.com/switchboard/ :: переключает каталог Acrobat plugjns согласно первому параметру; :: вторым параметр является имя PDF-файла, который требуется открыть; :: второй параметр заключен в кавычки :: каталог с Acrobat.exe и plug_ins @echo off echo Acrobat Plug-In Switchboard Activated ecno *** ~~~~~~~~*«»~~»»''>'»~~~~~~~~ echo Do not close this command session; echo it will close automatically after Acrobat is closed. cd /D "c:\program files\adobe\acrobat 6.0\acrobat\" if exist plug_ins.on_hold goto BUSY if not exist "plug_ins.%l" goto NOSUCHNUMBER :: выполнение переключения rename plugjns plugJns.on_hold rename "plugJns.%1" plugjns Acrobat.exe %2 :: обратное переключение rename plugjns "plugJns.%1" rename plugJns.on_hold plugjns goto DONE :BUSY
@echo off echo NOTE- echo Acrobat is already running with a switched plug_ins directory. Acrobat.exe %2 goto DONE :NOSUCHNUMBER @echo off echo ERROR- echo The argument you passed to switchboard.bat does not match echo a custom plugjns directory, at least not where I am looking. Acrobat.exe %2 :D0NE Теперь создайте ярлык для switchboard.bat, щелкнув правой кнопкой мыши на этом файле и выбрав в контекстном меню Create Shortcut (Создать ярлык). Щелкните правой кнопкой мыши на новом ярлыке, выберите в контекстном меню Properties\Shortcut (Свойства\Ярлык) и добавьте имя профиля после switchboard.bat, например, С:\ switch- switchboard.bat production. Замените его значок на значок Acrobat, выбрав ко- команду Change Icon\Browse (Заменить значок\Просмотреть), запустив Acrobat.exe и дважды щелкнув на значке. Нажмите ОК, чтобы закрыть диалоговое окно Shortcut Properties (Свойства ярлыка). Результат дол- должен быть похож на рисунок 1-6. Дважды щелкните кнопкой мыши на новом ярлыке и убедитесь, что он работает правильно. Поскольку вы будете добавлять профили, ско- скопируйте этот ярлык и затем отредактируйте связанный с ним файл, введя имя нового профиля. Скопируйте эти ярлыки на Рабочий стол или в меню Start (Пуск) для свободного доступа. Если коммерческий ярлык называется Acrobat Production и располо- расположен в каталоге С:\, можно использовать его для открытия PDF-доку- PDF-документа из командной строки, вводя: "C:\Acrobat Production.lnk" C:\mydoc.pdf Об интеграции этих профилей в Windows File Explorer см. в разделе «Открытие PDF-файлов в Windows своим способом» [Совет № 6]. Открытие PDF-файлов в Windows своим способом (Открывайте профили Acrobat с помощью контекстного меню. Заставьте браузе- браузеры Internet Explorer или Mozilla выполнять ваши пожелания.) Чтобы открыть в Windows PDF-документ в заданном по умолчанию средстве просмотра, необходимо дважды щелкнуть кнопкой мыши на его значке. Но что делать, если имеется несколько различных профилей Acrobat, как описано в разделе «Управление дополнениями к программе Acrobat в Windows с помощью профилей» [Совет № 5]? Или, возможно, требу- требуется быстро открывать PDF-документ в веб-браузере [Совет № 9]? Добавь-
те опции открытия файлов к контекстному меню, которое появляется при щелчке правой кнопкой мыши на PDF-файле. Можно сконфигури- сконфигурировать Windows так, чтобы использовать одну из этих опций при двойном щелчке на PDF-файле. Чтобы заставить веб-браузеры открывать PDF- документы вашим способом, потребуется приложить больше усилий. Рис. 1-6. Создание ярлыка для switchboard.bat и передача ему имени профиля Windows XP и 2000 предлагают удобный способ откры- открытия PDF-файла, используя альтернативное приложе- приложение. Щелкните правой кнопкой мыши на PDF-файле и выберите в контекстном меню Open With (Открыть с помощью). Откроется подменю с разнообразием аль- альтернатив. Ваши варианты могут, например, включать программы Illustrator и Photoshop.
Добавление опции «Открыть с помощью профиля Acrobat...» к контекстному меню PDF-файла. В разделе «Управление дополнениями к программе Acrobat в Windows с помощью профилей» [Совет № 5] была использована пакетная программа для переключения между профилями Acrobat. Вы можете добавить профили к контекстному меню PDF-файла. В следующих шагах заме- замените имя вашего профиля именем production. В Windows XP и 2000: 1. В меню Windows File Explorer командой Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Выделите тип файла Adobe Acrobat Document (PDF) и щелкните на кнопке Advanced (Расширенные). 2. Нажмите кнопку New (Создать) и в диалоговом окне New Action (Новое действие) введите имя нового действия: Acrobat: production. 3. Откройте приложение, щелкнув на кнопке Browse (Просмот- (Просмотреть) и выбрав файл cmd.exe, который находится в каталогах ти- типа: C:\windows\system32\ или C:\winnt\system32\ 4. Добавьте эти параметры после cmd.exe, изменяя пути, как, на- например, показано в следующей записи: С: \windows \system32\cmd. ехе/С с: \switchboard. bat production "%1" 5. Нажмите три раза ОК, сохраняя произведенные изменения и за- закрывая диалоговые окна. В Windows 98: 1. В меню Windows File Explorer командой Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Выделите тип файла Adobe Acrobat Document (PDF) и щелкните на кнопке Edit (Правка). 2. Нажмите кнопку New (Создать) и в диалоговом окне New Action (Новое действие) введите имя нового действия: Acrobat: production. 3. Откройте приложение, щелкнув на кнопке Browse (Просмотр) и выберите файл command.com, который находится в каталоге C:\windows\. 4. Добавьте эти параметры после command.com, изменяя пути, как, например, в следующей записи: С: \windows \command. сот/С с: \switchboard. bat production "%1" 5. Нажмите три раза ОК, сохраняя произведенные изменения и за- закрывая диалоговые окна.
Добавление опции «Открыть в браузере» к контекстному меню PDF-файла Эта процедура добавляет к контекстному меню PDF-файла опцию «Открыть в браузере», но ее можно использовать также для открытия PDF-документа любой программой, поддерживающей этот формат. Просмотр PDF-документа в веб-браузере позволяет вам создавать многочисленные окна [Совет № 9] для одного и того же документа, что иногда очень удобно. Для открытия PDF-документа в веб-браузере требуется программа Adobe Acrobat или Adobe Reader [Совет № 1]. В Windows XP, 2000 и 98: 1. В меню Windows File Explorer командой Tools\Folder Options (Cep- вис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Выделите тип файла — PDF и щелкните на кнопке Advanced (Расширенные) (в Windows ХР и 2000) или Edit (Правка) (в Windows 98). 2. Нажмите кнопку New (Создать) и в диалоговом окне New Action (Новое действие) введите имя нового действия: Open in Browser. 3. Откройте приложение, щелкнув на кнопке Browse (Просмотр) и выбрав браузер. Энтузиасты Explorer выбирают файл iexplore.exe из каталога C:\Program Files\Internet Explorer\ а энтузиасты Mozilla — файл mozilla.exe из каталога C:\Program Files\mozilla.org\Mozilla\. 4. Добавьте "%1" в конце, чтобы получить выражение: "C:\Program Files\Internet Explorer\iexplore.exe " "%1" 5. Нажмите три раза ОК, сохраняя произведенные изменения и за- закрывая диалоговые окна. Если вы хотите использовать приложение типа Illustrator или Photoshop, то оно, вероятно, имеет свой собственный вход в диалоговое окно File Explorer (команда меню Tools\Folder Options\File Type [Сер- вис\Свойства папки\Тип файлов]). Если это так, то ис- используйте его родное действие Open action (Открыть действие) как модель для нового PDF-действия Open action. Действие, которое будет выполнять Windows при двойном щелчке на PDF-документе, можно задать, открыв командой меню Tools\Folder Options (Сервис\Свойства папки) диалоговое окно Folder Options и вы- выбрав вкладку File Types (Типы файлов). Выделите тип файла — PDF и щелкните на кнопке Advanced (Дополнительно). В диалоговом окне Edit File Type (Изменить тип файла) выберите действие, а затем — Set Default (Установить по умолчанию).
Открытие сетевых документов в формате PDF с помощью Adobe Reader при наличии полной программы Acrobat Предыдущие команды дают возможность определить заданные по умолчанию приложения, которые использует Windows при двойном щелчке на PDF-файле. Это значение по умолчанию не затрагивает браузер до тех пор, пока вы не перейдете на PDF-гиперссылку. Ино- Иногда, например, может потребоваться, чтобы сетевые PDF-докумен- PDF-документы автоматически открывались в программе Adobe Reader вместо Adobe Acrobat. Для этого нужно внести изменения в системный реестр Windows. По- После установки Adobe Acrobat или Adobe Reader оба браузера — Explorer и Mozilla — консультируются с ключом реестра HKEY_CLASSES_ROOT\ Software\Adobe\icrobat\Exe, чтобы найти путь к средству просмотра PDF- документов. При замене значения по умолчанию для этого ключа значе- значением C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe, например, браузер откроет сетевые PDF-документы с помощью программы Reader вместо Acrobat. Если при открытии сетевого PDF-документа программы Acrobat или Adobe Reader были уже запущены, браузер будет использовать это средство просмотра вместо заданного в ключе регистрации. Копирование данных с PDF-страниц (Данные, извлеченные из PDF-файлов, используйте в собственных документах или электронных таблицах.) Копирование данных из одного электронного документа в другой должно быть предсказуемым, как, например, процесс, изображен- изображенный на рисунке 1-7. Попытка скопировать данные из PDF-документа, однако, может оказаться неудачной. Наилучшим решением для поль- пользователей Acrobat 6 и Adobe Reader в Windows является использова- использование Acrobat 5. Программа Adobe Acrobat 5 содержит превосходное дополнение для выделения текста/таблиц — TAPS. Adobe Acrobat 6 его не имеет. По- Поскольку дополнения к программе Acrobat являются модульными, мож- можно скопировать TAPS-папку (под названием Table) из папки Acrobat 5 plugjns [Совет № 4] и вставить ее в папку Acrobat 6 plugjns. Вот так-то! У вас нет Acrobat 5? Лицензия TAPS разрешает его свободное распрост- распространение. Посетите сайт http://www.pdfltacks.com/TAPS/, ознакомьтесь с лицензией и загрузите копию. У вас нет и Acrobat 6? Используйте Adobe Reader вместо этой программы. Дополнение TAPS работает и в Adobe Acrobat и в Adobe Reader.
Рис. 1-7. TAPS прекрасно копирует форматированный текст и таблицы, используя Acrobat или Reader. Adobe Reader 5 и 6 В Adobe Reader имеется простой инструмент Text Select (Выделение текста), который хорошо работает с отдельными строками текста. Что- Чтобы выделить нужный фрагмент текста, удерживайте нажатыми клави- клавиши Alt (Версия 6) или Ctrl (Версия 5) и вытягивайте прямоугольник вы- выделения. Многострочные параграфы, скопированные с помощью этого инструмента, не сохраняют свой формат, и будучи вставленной в программу Word каждая строка становится отдельным параграфом. Поэтому лучше использовать дополнение TAPS, которое точно ко- копирует параграфы и таблицы. Скопируйте полную папку Table из ката- каталога дополнений к программе Adobe Acrobat 5 (например, C:\Program Files\Adobe\Acrobat 5.0\Acrobat\plug_ins\Table) в каталог дополнений к программе Adobe Reader (например, C:\Program Files\Adobe\Acrobat 6.0\ Reader\plug_ins). Перезапустите программу Reader. Если у вас нет Acrobat 5, посетите сайт http://www.pdfliacks.com/TAPS/ и скачайте файл архива Acrobat _5_TAPS.zip. Разархивируйте его, а за- затем поместите папку TAPS в каталог plugjns программы Reader. Пере- Перезапустите программу. Теперь у вас есть инструмент выделения таб- таблиц/форматированного текста, как показано на рисунке 1-8.
Рис. 1-8. TAPS добавляет инструмент выделения таблиц/форматированного текста в меню кнопки Select Text Следующий раздел содержит советы по использованию TAPS. Adobe Acrobat 5 Программа Adobe Acrobat 5 содержит такой же инструмент Text Select (Выделение текста), как и Adobe Reader. Используйте его для ко- копирования небольших фрагментов неформатированного текста, как было описано выше. Для того чтобы копировать форматированный текст, например па- параграфы, столбцы и таблицы, используйте инструмент Table\Formatted Text Select (Таблица\Форматированный текст). Он сохраняет формат параграфа и стиль текста. Проверьте его параметры настройки коман- командой меню Edit\Preferences\Table\Formatted Text (Правка\Параметры настройки\Таблица\Форматированный текст) и убедитесь, что они со- соответствуют вашим целям. Выберите инструмент TAPS, затем растяните прямоугольник вокруг текста, который хотите скопировать. Отпустите кнопку мыши, и пря- прямоугольник выделения превратится в зону изменяемого размера. Есть два типа зон: Table (Таблица) (синяя) и Text (Текст) (зеленая). Если ав- автоматическое определение инструмента создает неправильный тип зо- зоны, щелкните правой кнопкой мыши на ней и в контекстном меню вы- выберите нужный тип. Скопируйте выбранный текст или таблицу в буфер обмена или по- поместите в целевую программу. Adobe Acrobat 6 С выделением текста в Adobe Acrobat 6 что-то пошло не так, как на- надо: фирма Adobe опустила инструмент выделения таблиц/форматиро- таблиц/форматированного текста и добавила инструмент Select Table (Выделение табли- таблицы). Этот инструмент работает медленно и плохо во многих документах формата PDF.
Решение состоит в том, чтобы получить копию дополнения TAPS и ус- установить ее в Adobe Acrobat 6. Предыдущий раздел «Adobe Reader 5 и 6» объясняет, как найти и установить TAPS, а раздел «Adobe Acrobat 5» — как использовать ее. Владелец PDF-документа может запретить копирова- копирование текста документа. В таких случаях инструменты вы- выделения текста будут заблокированы. См. раздел «Ши- «Шифрование и расшифровка PDF-документов (без помощи Adobe Acrobat)» [Совет № 52], где обсуждаются вопросы PDF-безопасности. Выделение текста на отсканированных страницах Если страницы вашего документа — растровые изображения, а не текст, попробуйте использовать инструмент Paper Capture OCR. Он конвертирует изображение страницы в оперативный текст, хотя каче- качество преобразования зависит от четкости растрового изображения. Проверить, является ли страница растровым изображением, можно, активизировав инструмент Text Select (Выделение текста) и затем вы- выделив весь текст командой Edit\Select All (Правка\Выделить все). Если страница имеет какой-либо текст, инструмент выделит его. Если ниче- ничего не выделено, но страница содержит текст, то это, вероятно, растро- растровое изображение. Иногда текст страницы создается с помощью векторной графики. Этот вид текста не является оперативным текстом (поэтому вы не мо- можете копировать его) и не поддается оптическому распознаванию символов. Пользователи Adobe Acrobat 6 могут копировать PDF-документ, используя команду меню Start Capture\Paper Capture\Document (На- (Начало сбора данных\Сбор данных с бумаги\Документ). В отличие от Acrobat 5, Acrobat 6 не имеет никакого встроенного предела количест- количества страниц, для которого можно применять оптическое распознава- распознавание символов. Пользователи Adobe Acrobat 5 (в Windows) должны загрузить дополне- дополнение Paper Capture от Adobe. Откройте командой меню Tools\Download Paper Capture Plug-in (Сервис\3агрузить дополнение Paper Capture) веб- вебстраницу с командами и ссылкой к странице загрузки. Или загрузите его непосредственно с веб-страницы http://www.adobe.com/support/down- loads/detail.jsp?ftpID=1907. Это дополнение к программе выполняет оп- оптическое распознавание символов только с 50 страниц PDF-документа за один раз.
Конвертирование PDF-документов в формат Word (Автоматическое помещение данных из буфера обмена в новый документ Word.) Документы в формате PDF не столь изящны, как кажутся. Если они имеют тэги [Совет № 34], то не имеют никаких параграфов, таблиц или столбцов. Проблема возникает при создании нового документа с ис- использованием материала старого. В идеальном случае вы использовали бы исходный файл старого документа или, возможно, его HTML-вер- HTML-версию. Однако это не всегда реально. Иногда для работы есть только PDF-документ. Сохранить как... DOC, RTF, HTML Adobe Acrobat 6 предоставляет возможность конвертировать PDF- документ в различные форматы с помощью диалогового окна Save As... (Сохранить как...). Эти фильтры работают лучше всего, когда PDF-до- PDF-документ содержит тэги. Попробуйте, чтобы увидеть, соответствует ли это вашим потребностям. Adobe Reader позволяет выполнить конвер- конвертирование PDF-документа в текст с помощью команды File\Save As Text (Файл\Сохранить как текст). Если PDF-документ не имеет тэгов, Adobe Acrobat использует логиче- логический механизм, чтобы собирать символы в слова, а слова в параграфы. Он пробует обнаруживать и создавать таблицы. Лучше всего он работает на документах без форматирования. Таблицы и отформатированные страницы, как правило, не сохраняются. Взаимодействие с человеком Полностью автоматическое преобразование формата PDF в структу- структурированный формат типа .doc для Word невозможно, т. к. это очень большая задача. Один из подходов — разбить задачу на части, чтобы появилась возможность частичной автоматизации. Инструмент TAPS [Совет № 7] работает хорошо, потому что использует полуавтоматизацию — вы указываете ему, где находится таблица, и он создает ее из имеющих- имеющихся данных. Этот подход может масштабироваться для преобразования полных документов. Загрузка буфера обмена в новый документ с помощью AutoPasteLoop Опция Copy\Paste (Копировать\Вставить) прекрасно работает для фрагментов текста, но ее использование усложняется при обработке нескольких страниц данных. AutoPasteLoop (Цикл автоматической
вставки) — это макрокоманда программы Word, которая проверяет буфер обмена на наличие новых данных, а затем вставляет их в но- новый документ. Вместо нескольких операций копирования/вставки вы можете только копировать. Программа Word автоматически вы- выполняет вставку. Скотт Тапай перенес AutoPasteLoop в программу OpenOffice. Загрузите код с сайта http://www.pdfhacks.com/ autopaste/ Создайте новую макрокоманду Word под названием AutoPasteLoop в Normal.dot и запрограммируйте ее подобно следующему фрагменту: 'AutoPasteLoop, версия 1.0 'Посетите: http://www.pdfhacks.com/autopaste/ 'Запустите AutoPasteLoop из MS Word и переключитесь в Adobe Reader или 'Acrobat.Скопируйте материал, который вам нужен, и AutoPasteLoop будет 'автоматически вставлять его в целевой документ Word. По окончании 'работы переключитесь в MS Word — AutoPasteLoop остановится. Option Explicit 'объявление Win32-(})yHKUvm API, которые нам нужны Declare Function Sleep Lib "kernel32" (ByVal insdf As Long) As Long Declare Function GetForegroundWindow Lib "user32" () As Long Declare Function GetOpenClipboardWindow Lib "user32" () As Long Declare Function GetClipboardOwner Lib "user32" () As Long Sub AutoPasteLoop() 'HWND приложения вставляем в (MS Word) Dim AppHwnd As Long 'предполагаем, что мы выполняем это из целевого приложения. AppHwnd = GetForegroundWindow() 'следим, переключается ли пользователь 'из целевого приложения (MS Word). Dim SwitchedApp As Boolean SwitchedApp = False 'останавливаем выполнение цикла Dim KeepLooping As Boolean KeepLooping = True 'HWND нашего целевого документа; GetClipboardOwner возвращает 'HWND из приложения, которое последний раз использовало буфер обмена; 'изменение содержимого буфера обмена (Cut) делает нас "владельцем". 'обратите внимание, что "владение" буфером обмена не подразумевает 'его блокировки
Dim DocHwnd As Long Selection.TypeText Text:="abc" Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend: =wdExtend Selection.Cut DocHwnd = GetClipboardOwner() Do While KeepLooping Sleep 200 'milliseconds; 100 msec == 1/10 sec 'если пользователь переключается из целевого 'приложения, а затем обратно, цикл останавливается Dim ActiveHwnd As Long ActiveHwnd = GetForegroundWindow() If ActiveHwnd = AppHwnd Then If SwitchedApp Then KeepLooping = False Else SwitchedApp = True End If 'если владелец буфера обмена изменился, значит кто-то еще 'поместил что-то в него; если ресурс буфера обмена не 'заблокирован (GetOpenClipboardwindow), то поместить его содержимое 'в наш документ; использовать команду Сору для изменения владельца 'на DocHwnd If CetClipboardOwner() <> DocHwnd And GetOpenClipboardWindow() = 0 Then Selection. Paste Selection.MoveLeft Unit:=wdCharacter, Count: =1, Extend: =wdExtend Selection. Copy Selection. Collapse wdCollapseEnd End If Loop End Sub Выполнение AutoPasteLoop Создайте новый документ Word. Командой меню Tools\Macros\ Macros (Сервис\Макрос\Макросы) откройте диалоговое окно Macros. Выберите имя макрокоманды AutoPasteLoop и щелкните на кнопке Run (Выполнить). Во время выполнения цикла Word недоступен. Ос- Остановите цикл, переключаясь к другому приложению, а затем верни- вернитесь в Word. Запустите цикл. Переключитесь в Adobe Acrobat (или Adobe Reader) и используйте его команды, чтобы выбрать и скопировать необхо- необходимые столбцы, таблицы, параграфы и изображения. Переключи- Переключитесь снова в Word — все скопированное должно быть вставлено в новый документ. Запустите AutoPasteLoop для продолжения копи- копирования документа.
Взлом AutoPasteLoop Добавьте фильтры содержимого или собственную логику к макроко- макрокоманде AutoPasteLoop. Используйте знание входных документов, чтобы с помощью цикла создавать документы, требующие минимальной дальнейшей обработки. Макрокоманда AutoPasteLoop работает не только с документами в формате PDF, но и с любой программой, которая может копировать контент в буфер обмена. Просмотр одного PDF-документа в нескольких окнах (Не прекращая чтения, размещайте на Рабочем столе в качестве ссылок извле- извлеченные страницы) И Adobe Reader, и Adobe Acrobat ограничивают нас линейным пред- представлением документов. Например, страница 17 документа содержит таблицу, которая нужна при чтении страницы 19, a Acrobat не позволя- позволяет такой просмотр. Предлагаем способы открытия одного PDF-доку- PDF-документа в нескольких окнах, как показано на рисунке 1-9. Эти уловки ра- работают и с Adobe Acrobat, и с бесплатной программой Adobe Reader. Рис. 1-9. Использование веб-браузера для открытия одного PDF-документа в нескольких окнах
Чтение PDF-документов с помощью веб-браузера Одно из решений состоит в том, чтобы читать PDF-документы в веб- браузере. Когда вы открываете новое окно браузера (или вкладку Mozilla), оно дублирует PDF-представление, давая вам два представле- представления одного и того же документа. В Internet Explorer это работает по умолчанию. Браузер Mozilla тре- требует небольшого конфигурирования. В Mozilla командой меню Edit\Preferences (Правка\Параметры настройки) откройте диалоговое окно Navigator (Навигатор). Справа найдите раздел Display On (Отоб- (Отображение включено) и в раскрывающемся списке выберите Display on New Window (Отображать в новом окне), Display on New Tab (Отобра- (Отображать на новой вкладке) или Last Page Visited (Последняя посещенная страница), как показано на рисунке 1-10. Нажмите ОК. Необходимо пе- перезапустить Mozilla, чтобы эти изменения вступили в силу. Рис. 1-10. Конфигурирование браузера Mozilla для отображения документа во вновь открытых окнах и вкладках Перетащите в браузер PDF-документ, чтобы открыть его. Acrobat/Reader должен отобразить документ в браузере. Выберите
File\New\Window (Файл\Новый\Окно) или File\New\Tab (Файл\Но- вый\Вкладка) в меню браузера и получите два отображения документа. Во время просмотра PDF-файла в браузере комбина- комбинации «быстрых клавиш» браузера не работают, если Adobe Acrobat открыт. Вам придется создавать новые окна или вкладки, используя меню браузера. Если при попытке открытия PDF-документа в браузере он открыва- открывается в Acrobat/Reader, проверьте параметры настройки (только для Windows): Acrobat/Reader 6 Командой меню Edit\Preferences (Правка\Параметры настройки) откройте диалоговое окно Preferences и выберите из списка пункт Internet. В опциях веб-браузера проверьте установку значения Display PDF in browser (Отображать PDF в браузере). Acrobat/Reader 5 Командой меню Edit\Preferences\General (Правка\Параметры наст- ройки\Общие) откройте диалоговое окно Options (Опции). В опциях веб-браузера проверьте установку значения Display PDF in browser (Отображать PDF в браузере). Если вы используете Adobe Acrobat, то знаете, что некоторые его функции в браузере недоступны. Программа Acrobat не позволяет сохра- сохранять изменения в PDF-файле, пока он отображается в браузере. Отклю- Отключите этот просмотр, чтобы разблокировать файл перед сохранением. Существует JavaScript-дополнение к программе Acrobat/Reader, ко- которое дает возможность вызова «отображения в браузере» из программ Acrobat или Reader. Изучите также добавление опции «Открыть с по- помощью браузера» [Совет № 6] к контекстному меню PDF-документа. Открытие нового отображения PDF-документа из программ Adobe Acrobat или Adobe Reader Небольшой сценарий на JavaScript добавляет к Acrobat/Reader пункт меню, который открывает PDF-документ в окне браузера, давая два отображения одного и того же документа. Чтобы использовать этот ме- метод взлома с Adobe Acrobat, требуется отключить возможность сбора сетевых данных, исключив дополнение к программе [Совет № 4] Web2PDF (WebPDF.api). Конфигурирование Mozilla. Если Mozilla — ваш браузер по умолча- умолчанию, и вы используете Windows, прочитайте этот раздел для внесения возможных изменений в его конфигурацию.
Когда использование Java заблокировано, Mozilla не в состоянии отображать PDF-документ в окне браузера и пробует использовать для его открытия внешнюю программу. Выберите в меню Edit (Правка) пункт Preferences (Параметры настройки), затем — Advanced (Допол- (Дополнительно), установите переключатель в положение Enable Java (Допус- (Допустить Java) и нажмите ОК. Это общая проблема браузера Mozilla, и она не является специфической только для данного метода взлома. Для использования этого метода взлома с помощью Acrobat 5 придет- придется обмануть браузер Mozilla, чтобы вместо DDE (Динамический обмен данными) он воспринимал запросы Acrobat. Mozilla активирует DDE при открытии и дезактивирует при закрытии. Откройте Mozilla и измените Windows-обработчик http. Это даст понять браузеру Mozilla, что он боль- больше не является заданным по умолчанию. Понимая это, Mozilla не будет удалять входы системного реестра с динамическим обменом данными. 1. Откройте браузер Mozilla. 2. В меню Windows File Explorer командой меню Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Выберите URL: тип файла HyperText Transfer Protocol (Прото- (Протокол передачи гипертекста) и щелкните на кнопке Advanced (Рас- (Расширенные) (в Windows XP и 2000) или на кнопке Edit (Правка) (в Windows 98). 3. Дважды щелкните на Open action (Открыть действие), чтобы отре- отредактировать его параметры настройки. 4. Добавьте —nostomp к концу входа Application Used to Perform Action (Приложение, используемое для выполнения входа): ...\MOZILLA.EXE-ml "%1"-nostomp 5. Нажмите три раза ОК, чтобы сохранить произведенные измене- изменения и закрыть диалоговые окна. 6. Закройте и снова откройте браузер Mozilla. Он, вероятно, выдаст сообщение, что больше не является заданным по умолчанию. Сбросьте флажок и нажмите No (Нет), чтобы это сообщение боль- больше не повторялось. Если вы нажмете Yes (Да) или когда-либо за- замените заданный по умолчанию браузер, все предыдущие измене- изменения будут записаны сверху. Параметр -nostomp в действительности не является параметром бра- браузера Mozilla. Просто, добавляя этот текст, вы обманываете браузер, и он считает, что больше не является заданным по умолчанию. Код Скопируйте один из следующих сценариев в файл, названный open_new_view.js, и поместите его в каталог JavaScripts для Acrobat
или Adobe Reader. Выберите блок кода, который удовлетворяет за- заданному по умолчанию браузеру. В разделе «Настройка Acrobat с ис- использованием JavaScript» [Совет № 96] показано, где находится каталог JavaScripts на вашей платформе. Перезапустите Acrobat/Reader, и файл open_new_view.js добавит новый элемент к меню View (Вид). Сценарий в примере 1-1 предназначен для пользователей Mozilla и от- открывает PDF-документ на текущей странице. Сценарий в примере 1-2 — для пользователей Internet Explorer и открывает PDF-документ на пер- первой странице. Пример 1-1. open_new_view.mozjs II open_new_view.moz.js ver. 1.0 (для пользователей Mozilla) // app.addMenuItem( { cName: "-", // разделитель меню cParent: "View", // добавьте в конец меню View сЕхес: "void@);" }); // app.addMenuItem( { cName: "Open New View &3", // комбинация клавиш: ALT+V+3 cParent: "View", cExec: "this.getURL( this.URL+ '#page='+ (this.pageNum+1), false );", cEnable: "event.rc= (event.target != null);" } ); Пример 1-2. open_new_view.ie.js II open_new_view.ie.js ver 1.0 (для пользователей Internet Explorer) // app.addMenuItem( { cName: "-", // разделитель меню cParent: "View", // добавьте в конец меню View сЕхес: "void(o);" } ); // app.addMenuItem( { cName: "Open New View &3", // комбинация клавиш: ALT+V+3 cParent: "View", cExec: "this.getURL( this.URL, false );", cEnable: "event.rc= (event.target != null);" } ); Эти JavaScripts-сценарии можно загрузить с веб-страницы http://www.pdfhacks.com/open_ new_view/. Выполнение кода После перезапуска Adobe Acrobat откройте PDF-документ. В меню View (Вид) выберите пункт Open New View (Открыть новое отображе- отображение). Заданный по умолчанию браузер должен открыть PDF-документ, давая два отображения одного и того же документа.
Ускорение чтения или демонстрации слайдов в программах Acrobat и Adobe Reader (Настройка Acrobat или Adobe Reader для листания документа в предварительно ус- установленном темпе и поддержания заданного темпа чтения или показа слайдов.) Если вам приходится часто и много читать с экрана, подумайте о до- добавлении этой функции к программам Acrobat/Reader. Она позволяет переворачивать страницы PDF-документа в корректируемом темпе. Adobe Acrobat и Reader уже имеют эту особенность для демонстрации слайдов, но она работает только при представлении PDF-документов в полноэкранном режиме Full Screen (Весь экран). В Adobe Acrobat или Adobe Reader 6.0 также попробуйте функцию Automatically Scroll (Автоматическая про- прокрутка) из меню View (Вид). Она плавно листает стра- страницы на экране. Полноэкранная демонстрация слайдов в Acrobat/Reader Если у вас есть альбом PDF-фотографий [Совет № 48] или презента- презентация из слайдов, то можно сконфигурировать Acrobat/Reader для ав- автоматического перемещения по страницам в установленном темпе. Выберите в меню Edit (Правка) пункт Preferences (Параметры наст- настройки), затем — General (Общие) и установите флажок Full Screen (Весь экран) (для Acrobat/Reader 6 в Windows) или в меню Edit (Правка) выберите пункт Preferences (Параметры настройки) и уста- установите флажок Full Screen (Весь экран) (для Acrobat/Reader 5 в Windows), или в меню Edit (Правка) выберите пункт Preferences (Па- (Параметры настройки), а затем опцию Full Screen (Весь экран) (для Acrobat/Reader 6 в Macintosh). Установите опции перемещения стра- страницы, выполнения цикла и навигации, как показано на рисунке 1-11, и нажмите ОК. Откройте PDF-документ, выберите в меню Window (Окно) пункт Full Screen View (Полноэкранное представление) (для Acrobat/Reader 6 в Windows или Macintosh) или в меню View (Вид) пункт Full Screen (Полный экран) (для Acrobat/Reader 5), чтобы на- начать демонстрацию слайдов. Для выхода из режима Full Screen (Весь экран) нажмите комбинацию клавиш Ctrl+L (в Windows) или Command+L (в Мае). Опцию демонстрации слайдов можно использовать для экранного чтения. Однако режим Full Screen (Весь экран) скрывает закладки до- документа и меню приложения, а для корректировки синхронизации не- необходимо выполнить множество шагов.
Перелистывание страниц с помощью JavaScript Следующий JavaScript-сценарий для Acrobat и Reader обеспечивает более гибкое перелистывание страниц. Вы можете выполнять его вне режима Full Screen (Весь экран), а его временная синхронизация про- проще для корректировки. Посетите веб-страницу http://www.pdfhacks.com/pagejturner/vi загру- загрузите JavaScript-сценарий из примера 1-3. Разархивируйте его, а затем скопируйте в каталог JavaScripts программы Acrobat или Reader. В раз- разделе «Настройка Acrobat с помощью JavaScript» [Совет № 96] объясняется, где находится этот каталог на вашей платформе. Перезапустите Acrobat/Reader, и сценарий pagejturner.js добавит новые элементы к меню View (Вид). Рис. 1-11. Конфигурирование полноэкранного режима в Acrobat/Reader для показа слайдов Пример 1-3. JavaScript-сценарий для переворачивания страницы II page_turner.js, версия 1.0 // посетите: http://www.pdfhacks.com/page_turner/ var pt_wait= 3000; // три секунды; настройте по вашему вкусу
Пример 1-3. JavaScript-сценарий для переворачивания страницы var pt_step= 1000; // настройка скорости в шагах в секунду var pt_timeout= 0; var pt_our_doc= 0; var pt_our_path= 0; function PT_Stop() { if( pt_timeout!= 0 ) { // остановка переворачивания страниц app.clearlnterval( pt_timeout); pt_timeout= 0; pt_our_doc= 0; pt_our_path= 0; } } function PT_TumPage() { if( this!= pt_our_doc || this.path!= pt_our_path) { // состояние Acrobat изменилось; прекратить переворачивать страницы PT_Stop(); } else if( 0< this.pageNum && this.pageNum== this.numPages-1) { app.execMenuItem("FirstPage"); // возврат к началу } else { // это работает лучше, чем this.pageNum++/ когда // используется режим просмотра 'continuous facing pages' app.execMenuItem("NextPage"); } } function PT_Start( wait) { if( pt_timeout== 0 ) { // запуск переворачивания страниц pt_our_path= this.path; pt_our_doq= this; pt_timeout= app.setlnterval( 'PT_TumPage()', wait); //// // добавление элементов меню View в Acrobat/Reader app.addMenuItem( { cName: "-", // разделитель меню cParent: "View", // добавляем в конец к меню View сЕхес: "void(O);" }); app.addMenuItem( {
Пример 1-3. JavaScript-сценарий для переворачивания страницы cName: "Start Page Turner &4", cParent: "View", cExec: "PT_Start( pt_wait);", // // "event" - это объект, переданный нам для выполнения; // в этом контексте event.target является активным документом; // event.rc является кодом возврата: успех <==> показ элемента меню cEnable: "event.rc= ( event.target!= null && pt_timeout== 0 );" }); app.addMenuItem( { cName: "Slower", cParent: "View", cExec: "PT_Stop(); pt_wait+= pt_step; PT_Start( pt_wait);", cEnable: "event.rc= ( event.target!= null && pt_timeout!= 0 );" }); app.addMenu!tem( { cName: "Faster", cParent: "View", cExec: "if(pt_step< pt_wait){PT_Stop();pt_wait-= pt_step;PT_Start(pt_wait); Y. cEnable: "event.rc= (event.target != null && pt_timeout!= 0 && pt_step< pt_wait);" }); app.addMenuItem( { cName: "Stop Page Turner", cParent: "View", cExec: "PT_Stop();", cEnable: "event.rc= ( event.target != null && pt_timeout!= 0 );" }); Выполнение кода После перезапуска Acrobat откройте PDF-документ. Выберите в ме- меню View (Вид) пункт Start Page Turner (Начать переворачивание стра- страниц) для смены PDF-страниц в темпе, установленном в переменной сценария pt_wait. Скорректируйте этот темп командами View\Faster (Вид\Быстрее) или View\Slower (Вид\Медленнее). При выполнении сценария используйте клавиши Page Down (Страница вниз) и Page Up (Страница вверх) для быстрого перемещения по документу. Остано- Остановить сценарий можно командой меню View\Stop Page Turner (Вид\Ос- тановить переворачивание страниц). После начала переворачивания страниц и установки его скорости активизируйте режим Full Screen (Весь экран) в Acrobat/Reader для максимального отображения страницы, выбрав Window\ Full Screen View (Окно\Полноэкранное представление) (в Acrobat/Reader 6) или View\Full Screen (Вид\Весь экран) (в Acrobat/Reader 5). Клавиши Page Down и Page Up по-прежнему могут использоваться для быстрого пере-
мещения по PDF-документу. Для выхода из режима Full Screen нажми- нажмите комбинацию клавиш Ctrl+L (в Windows) или Command+L (в Мае). Ускорение чтения или демонстрации слайдов в Mac OS X с помощью программы Preview (Благодаря возможностям программы Preview, превратите свой Macintosh в удобное устройство для чтения электронных книг.) Вероятно, для вас не является новостью, что открывать изображения различных PDF-форматов в программе Preview можно командой Applications\Preview (Приложениях Preview). Но вы также можете пе- переключаться в режим Full Screen (Весь экран) командой меню View\Full Screen (Вид\Весь экран) и просматривать эти изображения и страницы безо всякой суеты, отвлекающей от их восприятия. Так же, как режим iDVD Full Screen превращает Macintosh в неболь- небольшой кинотеатр, так и режим Full Screen в программе Preview превраща- превращает 23-дюймовый дисплей Apple или, более вероятно, 12-дюймовый эк- экран вашего компьютера iBook в довольно хорошую электронную книгу, как это показано на рисунке 1-12. Рис. 1-12. Режим Full Screen в программе Preview Перелистывайте страницу за страницей щелчком кнопки мыши или нажатием клавиши пробела. Клавиши Page Up, Page Down и клавиши курсора позволяют перемещаться по документу, нажатие клавиши
Home переносит в начало документа, а нажатие клавиши End — к кон- концу документа. Если вы переключитесь к другому приложению, используя основ- основной Application Switcher (Переключатель приложений) (комбинация клавиш Command+Tab), а затем переключитесь в Preview, то снова окажетесь в полноэкранном режиме. Нажмите клавишу Esc, чтобы вернуться к нормальному представлению. Это особенно удобно для владельцев компьютеров iBook и PowerBook, т. к. возможность использования Macintosh как электрон- электронной книги поможет в доступе к изданиям Александрийской библиоте- библиотеки или Project Gutenberg (http://www.gutenberg.net), не требуя дополни- дополнительной загрузки. Если PDF-документ отформатирован (что вероятнее всего) для стандартного размещения страницы, поворот его влево или вправо ко- командами меню View\Rotate Left (Вид\Вращать влево) или View\ Rotate Right (Вид\Вращать вправо) превратит ваш портативный компьютер в подобие настоящей книги с клавиатурой. Убедитесь, что сохранили закладки в тех местах книги, где вы читаете, поскольку программа Preview не имеет возможности сортировки закладок. Я предлагаю ис- использовать программу Sticky, открыв командой меню Applications\Stickies (Приложения^юМеБ) список Current Read (Текущее чтение) документов в формате PDF со связанными номерами страниц. К. К. Сэмпл III Распаковка PDF-вложений (Сохраняйте вложения на диске для их дальнейшего использования.) Авторы иногда дополняют свои документы дополнительными элек- электронными ресурсами. Например, документ, содержащий большие таблицы данных, может обеспечить читателя соответствующей элек- электронной таблицей Excel. Возможность вложения PDF-файлов — ме- механизм для упаковки любого электронного файла в PDF-формат. Как будет показано в разделе «Добавление вложений в PDF-документ (без помощи Acrobat)» [Совет № 54], эти вложения могут быть связаны со всем документом или с его отдельными страницами. Вы можете рас- распаковать PDF-вложения на свой диск, используя Adobe Acrobat, Adobe Reader или инструмент pdftk [Совет № 79]. После распаковки вло- вложения его можно просматривать и редактировать независимо от PDF- документа.
Распаковка вложения с помощью программ Adobe Acrobat или Adobe Reader В Acrobat/Reader 6 можно обратиться к PDF-вложениям с помо- помощью команды меню Document\File Attachment (Документ\Вложение к файлу). Выделите нужное вложение и командой Export (Экспорт) со- сохраните его на диске. В Adobe Acrobat 5 можно обратиться к вложениям для страницы до- документа, используя вкладку Comments (Комментарии). Откройте эту вкладку командой меню Window\Comments (Окно\Комментарии). Выделите вложения, которые требуется распаковать, щелкните на кнопке Comments (Комментарии) и выберите из раскрывающегося ме- меню Export Selected (Экспортировать выбранное). Для просмотра и до- доступа к вложениям документа в Acrobat 5 используйте команду File\Document Properties\Embedded Data Objects (ФашДСвойства до- кумента\Внедренные объекты данных). Adobe Reader 5 и более ранние версии не имеют возможности распа- распаковки вложения. Распаковка вложений с помощью pdftk Программа pdftk просто распаковывает все PDF-вложения в теку- текущий каталог. Вызовите программу следующим образом: pdftk mydoc.pd/unpack_files Если PDF-документ зашифрован, необходимо ввести пароль: pdftk mydoc.pdf input_pw bazpass unpack_files Распаковка PDF-вложений не удаляет их из PDF-документа. Вы мо- можете позже при необходимости снова их распаковать. Усовершенствование метода В Windows можно обойтись без командной строки [Совет № 56], и для распаковки PDF-документа с помощью программы pdftk достаточно щелкнуть правой кнопкой мыши на его значке. Переход к следующему или предыдущему заголовку (Используйте закладки для перемещения по разделам Adobe Acrobat в Windows.) PDF-закладки облегчают передвижение по документу, но они также и раздражают. Когда я щелкаю на закладке в Acrobat (см. рисунок 1-13), до- документ теряет управление. Клавиши курсора или клавиши Page Up и Page Down не работают, пока не щелкнешь на странице документа. Это
требует двух щелчков, а щелкать два раза, чтобы посетить отмеченную страницу, надоедает. Поэтому я придумал решение, позволяющее управлять закладками без щелчков кнопкой мыши. После установки этого дополнения к про- программе Adobe Acrobat можно перепрыгивать от одной отмеченной страницы к другой, удерживая клавишу Shift и нажимая клавиши со стрелками -^ и <- . Посетите веб-страницу http://www.pdfhacks.com/jumpsection/YL загрузи- загрузите файл jumpsection-l.O.zip. Разархивируйте его, а затем поместите файл jumpsection.api в каталог дополнений к программе Adobe Acrobat. Этот ка- каталог расположен: C:\Program Files\Adobe\Acrobat 5.0\Acrobat\plug_ins\. Перезапустите Acrobat, откройте отмеченный PDF-документ, и по- попробуйте это решение. Удерживая клавишу Shift, нажимайте клавиши со стрелками -^ и <г-, чтобы перейти вперед и назад. Рис. 1-13. Решение, не требующее щелчков кнопкой мыши при работе с закладками В разделе «Средства для разработки дополнений к программе Acrobat» [Совет № 97] описано использование программы jumpsection как пример
настройки Acrobat с помощью дополнений. Программа jumpsection не работает с бесплатным Adobe Reader. Перемещение по PDF-документам и управление ими с помощью эскизов страниц (Область окна эскизов Acrobat имеет полезные и неожиданные возможности для перемещения по документам.) На первый взгляд окно Acrobat Pages (в Acrobat 6) или Thumbnails (в Acrobat 5) представляет симпатичное, но ненужное отображение PDF-файлов. Фактически же это — не пассивное представление, а интерактивный мольберт с возможностями, недоступными в другом месте. Настройка вида эскиза При увеличении этого окна все больше эскизов становятся видимы- видимыми и организовываются в строки и столбцы. Кнопка Options (Опции) (в Adobe Acrobat 6) или Thumbnail (Эскиз) (в Adobe Acrobat 5) открыва- открывает меню, где можно изменить размер эскиза. Acrobat 6 дает возмож- возможность увеличения или уменьшения эскизов так, как вам необходимо. Acrobat 5 позволяет выбирать между маленькими и большими размера- размерами эскизов. Если эскизы Acrobat 6 кажутся зернистыми при их увеличении, вы- выберите опцию Remove Embedded Thumbnails (Удалить встроенные эс- эскизы) в меню Options (Опции). Это позволит программе отображать страницы «на лету», как показано на рисунке 1-14. Если эскизы отображаются слишком медленно, выберите опцию Embed All Page Thumbnails (Удалить встроенные эскизы страниц) из меню Options (Опции) (или Thumbnail [Эскиз]). Acrobat будет хранить эскизы в PDF-файле. Вы можете в любой момент отменить это, выбрав Remove Embedded Thumbnails. Отображение текущей PDF-страницы представлено красным бло- блоком в области окна эскизов. Размеры этого блока можно изменять для изменения размеров PDF-страницы. Щелкните по любому эскизу, чтобы рассмотреть страницу. Печать, изменение, перемещение или копирование выбранных страниц Большинство команд Adobe Acrobat оперируют одной страницей или непрерывным диапазоном страниц. В области окна эскизов вы мо- можете выбрать те страницы, которые хотите распечатать или изменить.
Рис. 1-14. Большие эскизы отображают больше деталей Перетащите прямоугольник, чтобы выбрать группу страниц. Удер- Удерживайте нажатой клавишу Ctrl (Shift у Macintosh) при щелчке по от- отдельным страницам, чтобы добавить их к вашей группе страниц или удалить. Когда выбор страниц закончен, щелкните правой кнопкой мыши на одной из них, чтобы открыть контекстное меню возможных операций со страницей. Чтобы выделить все страницы в окне эскизов, выбери- выберите сначала одну страницу, а затем щелкните Select All (Выделить все). Для перемещения выбранных страниц к новому местоположению в пределах документа перетащите их. Во время перетаскивания между эскизами страниц появится курсор. Отпустите страницы, вставляя их туда, где находится курсор. Чтобы копировать выбранные страницы в другое место в пределах того же документа, перетащите их в желательное место, удерживая на- нажатой клавишу Ctrl. Acrobat скопирует страницы, вместо того чтобы перемещать их.
Чтобы скопировать выделенные страницы в другой документ, от- откройте целевой документ так, чтобы оба документа были видимы в Acrobat (команда Window\Cascade [Окно\Каскад]). Перетащите выбранные страницы в окно эскизов целевого документа. Устано- Установите курсор в нужное место и отпустите кнопку мыши, как показано на рисунке 1-15. Рис. 1-15. Копирование выделенных страниц в целевой документ Перемещение выбранных страниц в другой документ производится при нажатой клавише Ctrl. Acrobat удалит выбранные страницы из исходного документа и доба- добавит их к целевому документу.
ГЛАВА 2 Управление коллекцией Советы №15-23 При постоянной работе с PDF-файлами их коллекция разрастается и обнаружить в ней нужные вещи становится трудно. Следующие ме- методы взлома познакомят вас со способами работы с группами докумен- документов, добавления функций и создания структур управления многочис- многочисленными документами. Закладки PDF-страниц в программе Adobe Reader (Создайте и ведите список PDF-страниц для получения быстрого доступа к ним.) Веб-браузеры дают возможность делать закладки для HTML-стра- HTML-страниц, почему же Adobe Reader не позволяет отмечать PDF-страницы? Предлагаем JavaScript-сценарий, дополняющий программу Adobe Reader и позволяющий создавать закладки к определенным PDF-стра- PDF-страницам. Он работает в Windows, Mac и Linux. Закладки, созданные JavaScript-сценарием, — это не PDF-закладки, которые сохраняются вместе с докумен- документом. Они подобны закладкам веб-браузера и позволяют быстро возвращаться к определенной PDF-странице. JavaScript-сценарий для создания закладок в Acrobat и Adobe Reader Посетите веб-страницу http://www.pdfhacks.com/bookmark_page/iA за- загрузите JavaScript-сценарий из примера 2—1. Разархивируйте его, а за- затем скопируйте в папку JavaScripts программы Acrobat или Reader. В разделе «Настройка Acrobat с использованием JavaScript» [Совет № 96] объясняется, где находится эта папка на вашей платформе. Перезапус- Перезапустите Acrobat/Reader и сценарий bookmark_page.js добавит новые эле- элементы в меню View (Вид).
Пример 2-1. Добавление возможности создания закладок к Acrobat и Adobe Reader II bookmark_page.js, ver. 1.0 // посетите: http://www.pdfhacks.com/bookmark_page/ // используйте этот разделитель для преобразования // массива в последовательную форму var bp_delim= '%#%#'; function SaveData( data ) { // данные являются массивом массивов, что необходимо // для его преобразования в последовательную форму и сохранения // в постоянной глобальной строке var ds= "; for( ii= 0; ii< data.length; ++ii) { for(jj=0;jj<3;++jj) { if(ii!=O||jj!=O) ds+= bp_delim; ds+= data[ii][jj]; } } global.pdf_hacksjs_bookmarks= ds; global.setPersistent( "pdf_hacksjs_bookmarks", true ); } function CetData() { // изменение SaveData; возвращение массива массивов if( global.pdf_hacks js_bookmarks== null) { return new Array@); > var flat= global.pdf_hacks js_bookmarks.split( bp_delim ); var data= new Array(); for( ii= 0; ii< flat.length;) { var record= new Array(); for( jj= 0; jj< 3 && ii< flat.length; ++ii, ++jj) { record.push( flat[ii]); > if( record.length== 3 ) { data.push( record); } } return data; } function AddBookmark() { // выполнение запроса имени пользователя и объединение его с // существующей PDF-страницей для создания записи; сохранение этой записи varlabel= app.response( "Bookmark Name:", "Bookmark Name", false ); if( label! null) { var record= new ArrayC);
Пример 2-1. Добавление возможности создания закладок к Acrobat и Adobe Reader record[0]= label; record[l]=this.path; record [2]= this.pageNum; data= GetData(); data.push( record); SaveData( data ); } } function ShowBookmarks() { // показ всплывающего меню; работает только если // PDF-файл находится в средстве просмотра; var data= GetData(); var items= "; for( ii= 0; ii< data.length; ++ii) { if(ii!=0) items+=','; items+= ""+ ii+':'+ data[ii] [0]+ ""; > // создание команды, а затем выполнение ее с eval() var command= 'app.popUpMenu( '+ items+');'; var selection= eval( command ); if( selection-- null) { return; // выход > // пользователь сделал выбор; анализ индекса и использование его // для доступа к записи о закладке var index= 0; // toString() конвертирует объект String в буквенную строку // eval() конвертирует буквенную строку в число index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if( index< data.length ) { try{ // документ должен быть 'раскрыт' для получения любого доступа // к его свойствам, поэтому мы используем вызовы FirstPage NextPage // app.openDoc( data [index] [1]); app.execMenuItem( "FirstPage" ); for( ii= 0; ii< data[index][2]; ++ii) { app.execMenuItem( "NextPage" ); } } catch( ее) { var response= app. alert ("Error trying to open the requested document. \nShould I remove this bookmark?", 2, 2); if( response== 4 && index< data.length ) { data, splice (index, 1); SaveData( data ); } }
Пример 2-1. Добавление возможности создания закладок к Acrobat и Adobe Reader } function DropBookmark() { // создана после ShowBookmarks() var data= GetData(); var items= "; for( ii= 0; ii< data.length; ++ii) { if(ii!=0) items+=','; items+= ""+ ii+':'+ data[ii] [0]+ ""; > var command= 'app.popUpMenu('+ items+');'; var selection= eval( command ); if( selection^ null) { return; // выход > var index= 0; index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if(index< data.length) { data.splice( index, 1); SaveData( data ); } function ClearBookmarks() { if( app. alert ("Are you sure you want to erase all bookmarks? ",2,2 )== 4) { SaveData( new Array@)); > app.addMenuItem( { cName: "-", // разделитель меню cParent: "View", // добавьте в конец меню View сЕхес: "void(O);" }); app.addMenuItem( { cName: "Bookmark This Page &5", cParent: "View", cExec: "AddBookmark();", cEnable: "event.rc= (event.target != null);" } ); app.addMenuItem( { cName: "Go To Bookmark &6", cParent: "View", cExec: "ShowBookmarks();", cEnable: "event.rc= (event.target != null);" } ); app.addMenuItem( { cName: "Remove a Bookmark", cParent: "View", cExec: "DropBookmark();", cEnable: "event.rc= (event.target != null);" } ); app.addMenu!tem( {
Пример 2-1. Добавление возможности создания закладок к Acrobat и Adobe Reader cName: "Clear Bookmarks", cParent: "View", cExec: "ClearBookmarks();", cEnabte: "event.rc= true;" } ); Выполнение кода Когда найдена PDF-страница, которую требуется отметить, коман- командой меню View\Bookmark This Page (Вид\Создать закладку для этой страницы) или комбинацией клавиш Alt+V+5 для Windows откройте диалоговое окно, введите имя закладки и нажмите ОК. Созданные закладки сохраняются при последующих сеансах Acrobat/Reader, т. к. данные хранятся в глобаль- глобальной переменной JavaScript. Acrobat/Reader хранит по- постоянные данные в текстовом файле globjs в каталоге JavaScripts. Чтобы активизировать закладку, PDF-документ должен быть открыт в средстве просмотра. Это происходит из-за особенности всплываю- всплывающего JavaScript-меню в Acrobat. Выберите в меню View (Вид) пункт Go То Bookmark (Перейти к закладке) или используйте комбинацию кла- клавиш Alt+V+б для Windows. Появится всплывающий список с заголов- заголовками закладок. Выберите заголовок, и PDF-документ откроется в средстве просмотра на отмеченной странице. Удалить закладку можно, выбрав в меню View (Вид) пункт Remove a Bookmark (Удалить закладку), а затем — нужную закладку во всплыва- всплывающем списке. Всплывающий список закладок появляется как плава- плавающее окно рядом с меню View (Вид). Для выбора за- закладки PDF-файл должен быть открыт. Создание Windows-ярлыков для сетевых PDF-страниц с помощью Acrobat (Быстрый возврат к выбранной странице сетевого PDF-документа и управление ярлыками избранных страниц.) Веб-браузеры не дают возможность отмечать сетевые PDF-страни- PDF-страницы так, как HTML веб-страницы. Несомненно, можно сделать заклад- закладку к PDF-документу, но если этот документ содержит 300 страниц, за-
кладка не очень поможет. Проблема в том, что браузер не знает, какую именно PDF-страницу вы просматриваете. Это могут сделать програм- программы Acrobat или Adobe Reader. Решение состоит в том, чтобы програм- программа Acrobat/Reader создала для вас ярлык. Это небольшое дополнение к программе Acrobat создает интернет-ярлыки для определенных стра- страниц в папке Избранное, как показано на рисунке 2-1. Рис. 2-1. Создание ярлыков, позволяющих управлять избранными PDF-страницами Наше дополнение Shortcuts не работает с программой Adobe Reader. Посетите сайт http://www.pdfhacks.com/ shortcuts/'и узнайте о поддержке Adobe Reader. Посетите веб-страницу http://www.pdfhacks.com/shortcuts/ и загрузите архив shortcuts-l.O.zip. Разархивируйте его, а затем скопируйте файл shortcuts.api в папку plug_ins программы Acrobat. Эта папка обычно рас- расположена в каталоге: C:\Program Files\Adobe\Acrobat5.0\Acrobat\plug_ins\. Перезапустите Acrobat. Дополнение Shortcuts добавит подменю PDF Hacks\Shortcuts к меню Acrobat Plug-Ins. Оно также добавляет кнопку Create Shortcut to This Page (Создать ярлык этой страницы) к навигаци- навигационной панели инструментов.
При просмотре сетевого PDF-документа щелкните на этой кнопке, и интернет-ярлык появится в вашей личной папке Избранное. Этот ярлык немедленно станет видимым в меню Favorites (Избранное) в Internet Explorer. Вы можете организовывать ярлыки в подпапки, пере- переименовывать или перемещать их. При активации одного из этих ярлы- ярлыков заданный по умолчанию браузер откроется с URL, соответствую- соответствующим отмеченной PDF-странице. Конвертировать ярлыки из папки Избранное в закладки Mozilla можно, используя мастер Import/Export Wizard (Мастер импорта/экспорта), который запускается ко- командой меню File\Import and Export (Файл\Импорт и экспорт). Исследуйте один из этих URL ярлыков, и вы увидите нашу уловку для открытия нужной страницы сетевого PDF-документа — добавле- добавление в конец URL PDF-документа определенной информации. Напри- Например, http://www.pdfhacks.com/eno/BE. Pdf#page=44переносит читателя к странице 44. В разделе «HTML — гиперссылки к PDF-страницам» [Совет № 69] подробно объясняется эта методика. Если браузер будет не в состоянии обновить отображе- отображение после активизации PDF-ярлыка, попробуйте один из следующих советов. В Internet Explorer сконфигурируйте браузер так, чтобы ярлыки открывались в новых окнах. Для этого командой меню Tools\Internet Options\Advanced (Сервис\Опции интернет\Цополнительно) откройте диалоговое окно и сбросьте флажок Reuse windows for launching shortcuts (Повторно использовать окна для запуска ярлыков). В Mozilla щелкните на кнопке Reload (Перезагрузить) или выберите команду View\Reload (Вид\ Перезагру- Перезагрузить) после того, как активизируете ярлык. Дополнение Shortcuts работает и с локальными PDF-файлами, но оно требует некоторого дополнительного конфигурирования. Создание Windows-ярлыков к местным PDF-страницам (Организуйте данные своей PDF-коллекции.) PDF-файлы могут содержать очень много информации, но Adobe Acrobat не обеспечивает удобного способа перехода к индивидуаль- индивидуальной PDF-странице, находящейся вне программы Acrobat. Это услож-
няет организацию коллекции. Чтобы решить эту проблему, я разра- разработал дополнение к программе Acrobat, которое создает Windows-яр- Windows-ярлыки, открывающие определенные PDF-страницы. Однако оно ра- работает только после того, как вы добавите некоторые специальные DDE-сообщения к PDF-опции Open action (Открытие действия). Ис- Используйте это дополнение, чтобы создавать Windows-ярлыки к PDF- страницам, разделам или главам, наиболее полезным для вас. Дайте имена этим ярлыкам и организуйте их в папки так же, как и ярлыки интернета. Пользователи Adobe Reader должны использовать метод, описанный в разделе «Закладки PDF-страниц в программе Adobe Reader» [Совет №15]. Сконфигурируйте оболочку, чтобы открыть PDF-документ на заданной странице Сначала нужно сделать так, чтобы Acrobat открывал PDF-файлы на специфической странице, используя ее номер. Windows-оболочка от- отвечает за открытие программы Acrobat при двойном щелчке кнопкой мыши на PDF-файле или ярлыке. Вы можете просмотреть и отредак- отредактировать эту ассоциацию в Windows Explorer File Manager (Менеджер файлов Windows-проводника). В меню Windows File Explorer командой меню Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Выделите тип файла Adobe Acrobat Document (PDF) и щелкните на кнопке Advanced (Дополнительно) (в Windows XP и 2000) или на кнопке Edit (Правка) (в Windows 98). Дважды щелкните Open action (Открыть действие), чтобы изменить его конфигурацию. В диалоговом окне Edit Action (Редактировать действие) для файлов типа Adobe Document Acrobat установите переключатель Use DDE (Использовать динамический обмен данными), а затем добавьте/изме- добавьте/измените поля DDE: DDE Message [DocOpen( ^/ol'^tDocGoToC^/olV/oa^O)] Application acrovlew DDE Application Not Running Topic control Это DDE-сообщение предписывает Acrobat открыть PDF-файл, указанный в первом параметре (%1), а затем перейти к странице, ука- указанной во втором параметре (%2). Если параметр %2 не задан, Acrobat открывает PDF с первой страницы (нулевая страница).
Иногда поле Application (Приложение) содержит другое имя. Для DDE-сообщения это должно быть имя acroview. После выполнения операции окно Open action (Открыть действие) для PDF должно выглядеть, как на рисунке 2-2. Щелкните два раза ОК и Close (Закрыть), чтобы сохранить внесенные изменения и закрыть ди- диалоговые окна. Рис. 2-2. Добавление команды Acrobat к опции PDF Open action с использованием DDE Если PDF-файлы открываются из командной строки, то необходимо указать полный путь к ним, даже если PDF- файл находится в текущем каталоге. Так, например, вместо того чтобы вводить AcroRd32 mydoc.pdf, нужно ввести AcroRd32 С: \myfolder\mydoc.pdf. Дополнение Shortcuts к программе Acrobat Следуйте указаниям раздела «Создание Windows-ярлыков к сетевым PDF-страницам с помощью Acrobat» [Совет №16], чтобы инсталлировать и использовать дополнение Shortcuts к программе Acrobat. Интернет- ярлыки немного отличаются от ярлыков для локальных файлов, но ве- ведут себя одинаково.
Усовершенствование метода Acrobat и Adobe Reader распознают более 30 DDE-сообщений, которые зарегистрированы в справочнике Acrobat Interapplication Communication Reference (Справочник по связи между приложениями и Acrobat), постав- поставляемом с Acrobat SDK [Совет № 98]. Имя файла — IACReference.pdf. Ис- Используйте DDE-сообщения для программирования своих собственных команд контекстного меню Acrobat. Кроме этого, изучите документ PDF Open Parameters (Открытые па- параметры PDF) от Adobe, который находится на веб-странице http://part- ners. adobe, com/asn/acrobat/sdk/public/docs/ PDFOpenParams.pdf. Превращение PDF-закладок в Windows-ярлыки (Обратная задача.) Мы научились создавать ярлыки к отдельным PDF-страницам [Совет № 17]. Теперь создадим полное дерево ярлыков, каждый из ко- которых представляет PDF-закладку, как показано на рисунке 2-3. Орга- Организуйте их в папки и используйте Windows File Explorer для управле- управления PDF-коллекцией. Это работает как с локальными, так и с сетевыми PDF-файлами. Установите дополнение Shortcuts [Совет № 16], а затем сконфигури- сконфигурируйте свой компьютер для работы с локальными ярлыками [Совет № 17]. Откройте выбранный PDF-документ и нажмите кнопку или выберите команду меню Plug-Ins\PDF Hacks\Shortcuts\Create Shortcuts to All Document Bookmarks (Дополнения к nporpaMMe\PDF Взлом\Ярлыки\ Создать ярлыки ко всем закладкам документа). Набор ярлыков по- появится в папке Favorites (Избранное). Создайте для них новую папку и переместите ее в удобное место. Генерирование ключевых слов документа (Дополните стратегию поиска документа ключевыми словами.) Ключевые слова могут играть важную роль в стратегии поиска, давая вам понимание темы документа. Заголовки документа, перечисленные в оглавлении, показывают схему его разделов. Ключевые слова отно- относятся к полному тексту документа, они заполняют промежутки между формальными разделами и их фактической обработкой. Этот метод взлома позволяет найти ключевые слова PDF-документа, используя программу kw_catcher.
Рис. 2-3. Конвертирование PDF-закладок в ярлыки Рабочего стола, которые можно затем упорядочить с помощью Проводника Как работает генератор ключевых слов kw_catcher Автоматическое обнаружение ключевых слов — сложная проблема. Чтобы упростить ее, мы собираемся ввести несколько ограничений. Во-первых, рассматриваемый документ имеет 50 страниц или больше. Во-вторых, заголовок документа известен, и мы не собираемся искать общую тему документа, которая соответствует его заголовку. Мы по- попробуем обнаружить подтемы, которые имеются всюду в документе. Игнорируемые слова, фон и сигнал. Игнорируемые слова (stopwords) — слова, которые наиболее часто появляются в почти любом документе, такие как the, of, and, to (и, на, в) и т. д. Эти слова не помогут нам иден- идентифицировать разделы, потому что используются во всех разделах. Сло- Слова, которые используются с одинаковой частотой в документе, называ- называют фоном. Игнорируемые слова — лучший пример фона. В любом документе к фону добавляется множество других слов.
Мы попробуем найти сигнал документа, который является набором слов, определяющих тему. Автоматически отделить сигнал от фона до- довольно сложно. Введем ограничение, что заголовок документа или общая тема изве- известны. Основная тема проходит через весь документ. Например, слово PDF так часто встречается в этой книге, что напоминает фон. Идентификация местных тем. Частота слова — это количество раз, которое оно появляется в документе. Сама по себе она не поможет нам, потому что фоновые и сигнальные слова могут встречаться с лю- любой частотой. Вместо этого рассмотрим частоту слова в данном окне страниц и сравним ее с общей частотой слова в документе. Например, слово «ча- «частота» встречается в этой книге десять раз, и в девяти из этих случаев находится в пределах нескольких страниц. Это отличает его от посто- постоянного фона документа, поэтому оно может быть ключевым словом. Это центральная идея, лежащая в основе работы программы kw_catcher. Она использует несколько других методов, чтобы гаранти- гарантировать правильный выбор ключевого слова. Программа kw_catcher яв- является бесплатным программным обеспечением. Установка и использование утилиты pdftotext Прежде чем анализировать текст PDF-файла на наличие ключевых слов, его необходимо конвертировать в файл открытого текста. Модуль Xpdf (http://www.foolabs.com/xpdf/) включает утилиту команд- командной строки pdftotext, преобразующую PDF-документ в файл открытого текста. Xpdf— свободно распространяемое программное обеспечение. Пользователи Windows могут загрузить архив xpdf-3.00-win32.zip с веб-страницы http://www.foolabs.com/xpdf/download.html. Разархивируй- те его и скопируйте файл pdftotext.exe в папку: C:\Windows\system32\. Пользователи Macintosh OS X могут загрузить инсталлятор pdftotext с веб-страницы http://www.carsten-bluem.de/downloads/pdftotext_en/. Запустите утилиту pdftotext из командной строки следующим образом: pdftotext input.pdf output txt Программа kw_catcher отмечает конец каждой страницы любого фай- файла открытого текста, использующего символ прогона страницы (ОхОС). Установка и использование программы kw.catcher Посетите веб-страницу http://www.pdfhacks.com/kwjindex/ и загрузи- загрузите архив kw_index-1.0.zip. Этот архив содержит Windows-программы и
исходный код на языке C++. Разархивируйте его и поместите файлы kw_catcher.exe и page_refs.exe в папку C:\Windows\system32\ Или ском- скомпилируйте исходный код для использования на вашей платформе. Выполните kw_catcher из командной строки: kw_catcher <window size> <report style> <text input filename> где параметры задаются следующим образом: <window size> Количество последовательных страниц, используемых для идентифи- идентификации пиков частоты слова. Если большинство появлений слова зани- занимает окно этого размера, то это — ключевое слово. Большое окно допу- допускает больше фона, тогда как маленькое окно теряет сигнал. Попробуйте начать с размера 12 и затем скорректировать это значение. <report style> Представление данных. keywords_only Создать основной список ключевых слов. frequency Упорядочить ключевые слова по числу их появлений в документе. reading_order Выводить каждое ключевое слово только один раз в порядке его по- появления в первоначальном тексте. reading_order_repeat Выводить ключевые слова так, как они появляются в первоначаль- первоначальном тексте. <text input filename> Имя файла для ввода открытого текста. Как правило, этот ввод вы- выполнятся с помощью утилиты pdftotext. Если все правильно, вы получите результаты, подобные показанным на рисунке 2-4. Например, создание списка ключевых слов под названием mydoc.kw.txt из файла mydoc.pdfQyjiQT выглядеть примерно так: pdftotext mydoc.pdf mydoc.txt kw_catcher 12 keywords_only mydoc.txt > mydoc.kw.txt
Рис. 2-4. Отчет о частоте слов, упорядоченный по количеству использования их в документе См. раздел «Создание традиционного предметного указателя из клю- ключевых слов» [Совет № 57], где имеется пример использования этих клю- ключевых слов. Индексирование и поиск местных PDF-коллекций в Windows (Научите Windows XP или 2000 поиску полного текста документа в формате PDF наряду с другими или используйте Adobe Reader.) Поиск — это суть использования архива документов. Поиск может най- найти даже такие вещи, которые вы, возможно, и не думали просматривать. Проблема состоит в том, что функция поиска по умолчанию в Windows не знает, как читать PDF-файлы. Предлагаем несколько решений. Поиск PDF-документов с помощью Adobe Reader Свободно распространяемая программа Adobe Reader 6.0 обеспечи- обеспечивает самое простое решение. Она предоставляет возможность выпол- выполнять поиск полной PDF-коллекции командой меню Edit\Search
(Правка\Поиск). Результаты поиска включают ссылки к индивидуаль- индивидуальным PDF-страницам и отрывки текста, соответствующие вашему за- запросу, как показано на рисунке 2-5. Опция Fast Find (Быстрый поиск), установленная по умолчанию, кэширует результаты поиска, поэтому последующие поиски идут намного быстрее. Просмотрите или изме- измените параметры поиска программы Adobe Reader, открыв командой меню Edit (Правка) диалоговое окно Preferences (Параметры настрой- настройки) и выбрав в списке пункт Search (Поиск). Недостатком Adobe Reader является поиск документов только в фор- формате PDF. Рис. 2-5. Результаты поиска коллекций в Adobe Reader дают ссылки непосредст- непосредственно к документам Индексирование и поиск документов в формате PDF с помощью Windows XP и 2000 С помощью общего интерфейса можно выполнять поиск среди всех типов файлов. Более новые версии Windows дают возможность расши-
рить встроенную функцию поиска и включить в нее PDF-документы. Все, что нужно сделать в Windows 2000: установить свободно распрост- распространяемый фильтр PDF IFilter от Adobe. В Windows XP также потребует- потребуется произвести несколько дополнительных настроек. В обоих случаях можно использовать Windows Indexing Service (Служба индексации Windows) для ускорения поиска. Программа Windows Indexing Service достаточно мощная, требует конфигурирования. Следующий раздел представляет Windows Indexing Service. Затем мы обсудим установку и улаживание конфликтов с PDF Adobe IFilter. Windows Indexing Service: установка, конфигурирование и документация Для выполнения поиска на компьютере не требуется Indexing Service (Служба индексации), но она может быть полезна. С ее помощью запро- запросы выполняются намного быстрее, и можно использовать функции рас- расширенного поиска: логические операторы (И, ИЛИ и НЕ), поиск мета- метаданных (например, @DocTitle Contains "pdf") и сравнение с образцом. Программа всегда выполняется в фоновом режиме, используя ресурсы для индексирования новых или модифицированных документов. Неболь- Небольшое конфигурирование гарантирует улучшение ее работы. Имеется ли у вас Indexing Service (Служба индексации)? Если нет, то как ее установить? На оба вопроса в Windows отвечает окно Components Wizard (Мастер компонентов). В Windows XP или 2000 от- откройте этот мастер командой меню Start\Settings\Control Panel\Add or Remove Programs (Пуск\Настройки\Панель управления\Добавить или удалить программы) и щелкните на кнопке Add/Remove Windows Components (Добавить/Удалить компоненты Windows) слева. Найдите компонент Indexing Service и выделите его (см. рисунок 2-6). Нажмите кнопку Next (Дальше) для продолжения работы мастера. Получите доступ к конфигурированию Indexing Service (Служба индек- индексации) и документации к ней из окна Computer Management (Управление компьютером), показанного на рисунке 2-7. Щелкните правой кнопкой мыши на значке My Computer (Мой компьютер) и выберите Manage (Уп- (Управление). В левой области окна разверните каталоги Services (Службы), Applications (Приложения), а затем Indexing Service (Служба индексации). Для остановки или запуска Indexing Service щелкните правой кноп- кнопкой мыши по ее узлу и выберите Stop (Остановка) или Start (Пуск) из контекстного меню. В узле Indexing Service находится каталог System (Система). Сконфигу- Сконфигурируйте его так, чтобы индексировались только нужные подкаталоги. Что- Чтобы правильно произвести конфигурацию Indexing Service, необходимо оз- ознакомиться с документацией, которую можно открыть командой меню
Help\Help Topics\Indexing Service (Справка\Темы справки\Служба индек- индексации). В этом документе описан также расширенный язык запросов. Рис. 2-6. Добавление компонента Indexing Service в Windows XP и Windows 2000 Настроить Indexing Service (Служба индексации) можно также с помощью входов системного реестра, расположен- расположенных в ключе HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Control\ContentIndex. Они описаны на веб- вебстранице http://msdn.microsoft.com/ library/ default.asp?url= /library/en-us/indexsrv/html/ixrefreg_192r.asp. Поиск неиндексированных каталогов можно производить и коман- командой меню Start\Search\For Files or Folders (Пуск\Поиск\Файлы или пап- папки), так что нет необходимости в индексировании всего компьютера. Перед установкой программы PDF IFilter создайте специальный каталог для тестирования и поместите в него несколько PDF-доку- PDF-документов. Отключите индексацию на всех других каталогах, дважды щелкая кнопкой мыши на них и выбирая в контекстном меню пункт Include in Index. No (Включить в индекс? Нет). Это упростит тестиро- тестирование, т. к. индексация большого количества документов может за- занять много времени.
Рис. 2-7. Окно Computer Management, в котором конфигурируется Indexing Service Загрузите тест индексации PDF-документов с сайта http://www.pdfhacks.com/ifllter/. Во время тестирова- тестирования выполните поиск в этом PDF-документе слова guidelines (рекомендации). Подготовка к установке PDF IFilter 5.0 В Windows XP и 2000 имеются два вида поиска: индексированный и неиндексированный. Индексированный поиск производится с помо- помощью Indexing Service (Служба индексации). Неиндексированный по- поиск применяет метод «в лоб», сканируя все файлы на наличие запра- запрашиваемого текста (см. рисунок 2-8). В обоих случаях система использует фильтры, чтобы обрабатывать многочисленные типы файлов. Фильт- Фильтры связаны с системой интерфейсом IFilter API. Программа PDF IFilter от Adobe находится в свободном доступе. По- Посетите веб-страницу http://www.adobe.com/support/salesdocsl/1043a.htm и загрузите файл ifilter50.exe. На веб-странице Adobe сказано, что эта программа работает только на серверах, но фактически она работает и в Windows XP Home Edition. Программа PDF IFilter, установленная в Windows 2000, работает для индексированного и неиндексированного поиска документов в фор- формате PDF.
Рис. 2-8. Неиндексированный поиск При использовании Windows XP Home Edition с PDF IFilter (версия 5.0), возможно, придется отключить его для неиндексированного поис- поиска PDF-документов, т. к. он может оставлять дескрипторы открытых файлов, вызывающие различные проблемы. Посетите веб-страницу http://www.pdfhacks.com/ifilter/ и загрузите файл PDFFilt_ FileHandle LeakFix.reg. Он используется в командах установки этого метода взлома системного реестра, гарантирующего, что только Indexing Service (Служ- (Служба индексации) использует PDF IFilter. Этот метод позволяет обрабаты- обрабатывать PDF-документы подобно файлам открытого текста во время неин- неиндексированного поиска. Отменить этот метод взлома системного реестра можно с помощью файла PDFFiltJFileHandleLeakFix.uninstall.reg. Неиндексированный поиск PDF-документов в Windows ХР с помощью PDF IFilter может оставлять дескрипто- дескрипторы открытых файлов. Если вы выполняете неиндексированный поиск в папке PDF-доку- PDF-документов, а затем обнаруживаете, что не можете переместить или удалить эти документы, то вы имеете дескрипторы открытых файлов. Переза- Перезагрузите Windows, чтобы закрыть их. Загрузите программу Process Explorer с сайта http://www.sysinternals.com и запустите файл explorer.exe, показывающий эти дескрипторы. Ис-
пользуйте наш метод взлома системного реестра PDFFilt_FileHandle LeakFix.reg, как будет описано ниже. Установка и настройка Adobe PDF IFilter 5.0 В Windows XP инсталляция PDF IFilter может потребовать выполне- выполнения нескольких взломов системного реестра. Сначала мы установим программу, а затем будем устранять конфликты. 1. Откройте диалоговое окно Computer Management (Управление компьютером), щелкнув правой кнопкой мыши на значке My Computer (Мой компьютер) и выбрав в контекстном меню Manage (Управление). Откройте в левой части окна каталог Services and Applications (Службы и приложения), щелкните пра- правой кнопкой мыши на значке Indexing Service (Служба индекса- индексации) и выберите в контекстном меню Stop (Остановить). 2. Запустите установку Adobe PDF IFilter. 3. Пользователи Windows XP Home Edition должны запустить файл PDFFilt_FileHandleLeakFix.reg, дважды щелкнув по нему и выбрав Yes (Да), чтобы подтвердить установку. (Если вы хо- хотите отменить взлом системного реестра, выполните файл PDFFilt_FileHandleLeakFix.uninstall.reg.) 4. Запустите Indexing Service (Служба индексации) снова: откройте в левой части окна каталог Services and Applications (Службы и приложения), щелкните правой кнопкой мыши на значке Indexing Service и выберите в контекстном меню Start (Пуск). 5. Просканируйте тестовый каталог: выберите узел Directories (Ка- (Каталоги), щелкните правой кнопкой мыши на каталоге и выбери- выберите в контекстном меню All Tasks\Rescan\Full (Все задачи\По- вторное сканирование\Полное). 6. Дождитесь завершения сканирования. Следите за выполнением Indexing Service (Служба ин- индексации), выбрав пункты Services and Applications\ Indexing Service (Службы и приложения\Служба индек- индексации) в диалоговом окне Computer Management (Уп- (Управление компьютером). Наблюдайте за правой облас- областью окна. Индексирование каталога будет завершено, когда значение Docs to Index (Документы для индекси- индексирования) станет равным нулю. Если PDF-документ открыт в Acrobat, он не будет ин- индексирован. Убедитесь, что тестовый документ закрыт.
Чтобы протестировать индекс, не пользуйтесь командой Start\Search (Пуск\Поиск). Вместо этого в окне Computer Management (Управле- (Управление компьютером) выберите узел Query Catalog (Запрос каталога), на- находящийся в вашем тестовом каталоге. Выполните несколько запро- запросов, которые работали бы только с полным текстом PDF-документов. Не используйте заголовки документа или названия. Это работает? Если так, то все в порядке! Если вы не получите никаких результатов (см. рисунок 2-9), то изучите следующий раздел, поясняющий общий подход для Windows XP. Рис. 2-9. Отрицательный результат индексированного поиска PDF IFilter не работает при использовании Indexing Service (Служ- (Служба индексации) Windows XP. PDF IFilter и Indexing Service не видят друг друга в Windows XP. Если запросы индексированных PDF-до- PDF-документов возвращают пустые результаты, попробуйте проделать следующее: 1. Откройте диалоговое окно Computer Management (Управле- (Управление компьютером), щелкнув правой кнопкой мыши на знач- значке My Computer (Мой компьютер) и выбрав в контекстном меню Manage (Управление). Откройте в левой части окна ка- каталог Services and Applications (Службы и приложения), щелкните правой кнопкой мыши на значке Indexing Service (Служба индексации) и выберите в контекстном меню Stop (Остановить).
2. Командой Start\Run (Пуск\Выполнить) откройте Registry Editor (Редактор системного реестра), введя в поле regedit. На- Нажмите ОК. 3. Выберите ключ HKEY_CLASSES_ROOT, а затем найдите файл pdffilt.dll в данных системного реестра: командой меню Edit\Find (Правка\Искать) откройте диалоговое окно, в поле Find what: (Искать [что]) введите pdffilt.dll, выберите опции Look at: Data (Искать в: Данные) и Find Next (Искать дальше). 4. Найдите ключ InprocServer32, который ссылается на файл pdf- pdffilt.dll и определяет его ThreadingModel. Дважды щелкните кноп- кнопкой мыши на ThreadingModel и измените значение с Apartment на Both. 5. Выберите ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\ContentIndex и дважды щелкните кнопкой мыши на ключе DLLsToRegister, чтобы отредактировать его. 6. В списке DLLs удалите следующую строку: C:\Program Files\Adobe\PDFIFilter5.0\PDFFilt.dll 7. Нажмите ОК, а затем закройте редактор системного реестра. 8. Запустите Indexing Service (Служба индексации) снова: открой- откройте в левой части окна каталог Services and Applications (Службы и приложения), щелкните правой кнопкой мыши на значке Indexing Service и выберите в контекстном меню Start (Пуск). 9. Повторно просканируйте тестовый каталог: выберите узел Directories (Каталоги), щелкните правой кнопкой мыши на ката- каталоге и выберите в контекстном меню All Tasks\Rescan\ Full (Все задачи\Повторное сканирование\Полное). 10. Дождитесь завершения повторного сканирования. Тестовый запрос теперь должен работать, как показано на рисунке 2-10. Этот подход описан на веб-странице сайта Adobe http://www. adobe. com/support/techdocs/ЗЗЗае. htm. Использование последовательности действий Start\Search\For Files and Folders (Пуск\Поиск\Файлов и папок) При поиске PDF-документов с помощью команды меню Start\Search\For Files and Folders (Пуск\Поиск\Файлы и папки) ищите All Files and Folders (Все файлы и папки), а не Documents (До- (Документы), т. к. режим поиска документов пропускает документы в формате PDF. Если вы индексировали определенную папку вместо полного диска, то эту папку (или одну из ее подпапок) нужно указать в поле Look In
(Искать в) при использовании последовательности действий Start\Search\For Files and Folders. В противном случае индекс не будет приниматься во внимание. Вместо этого будет выполнен неиндексиро- ванный поиск даже в пределах индексированной папки. Укажите в по- поле Look In определенную папку, выбрав ее в раскрывающемся списке Browse (Просмотреть), как показано на рисунке 2-11. Рис. 2-10. Успешный индексированный поиск PDF-документа При поиске в пределах индексированной папки можно использовать ус- условия расширенного поиска (например, @DocTitle Contains "earning"). Для получения дополнительной информации просмотрите сетевую докумен- документацию к Indexing Service (Служба индексации), упоминавшуюся ранее. Поиск PDF-документов с использованием служебных программ Windows 98 и Windows NT Использование поисковых средств старших версий Windows для по- поиска PDF-документов могут быть полезны, даже если это не относится
к полному тексту вашего документа. Если PDF-документы не зашиф- зашифрованы, то их метаданные (Title [Заголовок], Author [Автор] и т. д.) и закладки выглядят для средства поиска как открытый текст, как и заго- заголовки PDF-ярлыков [Совет № 17]. Рис. 2-11. Результаты традиционной последовательности действий Start\Search\For Files and Folders при поиске в индексированных папках Создание порталов документов (Используйте HTML-интерфейс для перемещения по документам в формате PDF. Предоставьте читателям возможность поиска полного текста документа и свяжите результаты поиска с конкретными PDF-страницами.) Входной HTML-портал в PDF-документе должен описывать его и связывать читателей непосредственно с интересующими их разделами. Этот метод взлома использует информацию, содержащуюся в PDF-до- PDF-документе, для создания его портальной страницы (см. рисунок 2-12). С по- помощью языка РНР этот процесс можно автоматизировать, чтобы пор- порталы создавались по требованию. Дополнительная функция поиска позволяет просматривать полныйо текст PDF-документа. Посетите сайт http://www.pdfhacks.com/eno/YL посмотрите пример. В разделе «Создание HTML-оглавления из PDF-закладок» [Совет № 70] обсуждается вопрос извлечения из документа в формате PDF информа- информации с помощью программы pdftk [Совет № 79]. Здесь же мы автоматизиру- автоматизируем этот процесс с помощью языка РНР, помещая информацию о доку-
менте в удобную динамическую веб-страницу. Передайте сценарию путь к PDF-документу, и он создаст HTML-портал. Если документ не имеет никаких закладок или метаданных (Title [Заголовок], Author [Автор] и т. д.), то портал будет выглядеть довольно скудным, но даже в этом слу- случае читатели смогут найти необходимое. Рис. 2-12. Автоматический HTML-портал связывает читателей непосредст- непосредственно с разделами PDF-документа. Средства разработки Нам понадобятся программы pdftk [Совет № 79] и pdfportal (http://www.pdfhacks.com/pdfportal/). Программа pdftk извлекает из доку- документов в формате PDF информацию типа метаданных и закладок, а программа pdfportal содержит набор PHP-сценариев, использующих ее для создания HTML-страниц, связанных с гиперссылками. Для установки программы pdfportal посетите веб-страницу http://www.pdfhacks.com/pdfportal/ и загрузите архив pdfportal-1.0.zip.
Распакуйте его и скопируйте файлы в такое место на сервере, поддер- поддерживающем РНР, где он сможет читать и выполнять их. Отредактируй- Отредактируйте файл pdfportalxonfig.php в соответствии с местоположением програм- программы pdftk на сервере. Чтобы использовать функции поиска программы pdfportal, необхо- необходимо иметь программу pdftotext [Совет № 19], конвертирующую PDF-до- PDF-документ в открытый текст. Отредактируйте файл pdfportalxonfig.php в со- соответствии с местоположением программы pdftotext на сервере. Если не удается установить программы pdftk или pdftotext на сервере, используйте pdftk и pdftotext на своем компьютере для создания необходимых файлов данных, а затем загрузите их на сервер. Просмотрите файл pdfportalxonfig.php для получения подробной ин- информации. Пользователи Windows без доступа к поддерживающему язык РНР серверу сети могут загрузить и установить программу IndigoPerl с сайта http://www.indigostar.com. Программа IndigoPerl — это Apache-инстал- Apache-инсталлятор для Windows, поддерживающий Perl и РНР. Открытие портала Предположим, вы скопировали файлы pdfportal по адресу http://localhost/pdfportal/ и получили адрес PDF-документа http://local- host/collection/mydoc.pdf. Чтобы просмотреть его, используя портал, пе- передайте путь к нему в файл pdjfile.php, например: http://localhost/pdfportal/pdjfile.php?pdf=/collection/mydoc.pdf Файл pdjfile.php вызывает программу pdftk, и создает адрес http://local- host/collection/my doc.pdf.info, если он еще не существует. Файл pdjfile.php использует этот информационный файл открытого текста для создания HTML-страницы. Информационный файл — это результат выполнения операции dump_data программы pdftk [Совет № 64]. Поиск полного текста документа в формате PDF Откройте портал PDF-документа. Если файл pdffile.php найдет про- программу pdftotext на компьютере (см. pdfportalxonfig.php), то он исполь- использует ее для конвертирования документа формата PDF в файл открыто- открытого текста и активизирует свой интерфейс поиска. Файл открытого текста сохраняется в том же каталоге, что и PDF-файл.
Во время поиска ^wipdffile.php сканирует файл открытого текста, чтобы обнаружить страницы PDF-документа, содержащие параметры поиска. Результаты выводятся в порядке чтения (см. рисунок 2-13). Если PDF-доку- PDF-документ имеет закладки, то они используются для упорядочения результатов. Щелкните на ссылке, и документ откроется на соответствующей странице. Рис. 2-13. Закладки документа, упорядочивающие результаты поиска Создание порталов коллекций (Автоматически преобразуйте каталоги, содержащие PDF-документы, в дружественные HTML-порталы.) Можно создать порталы, позволяющие читателям управлять полны- полными каталогами PDF-документов. Эти порталы каталогов просматривают названия, имена авторов и даты модификации документов аналогично
описанным в разделе «Создание порталов документов» [Совет № 21] и предлагают гиперссылки к каждому порталу PDF-документов. Напи- Написанные на РНР, эти порталы, показанные на рисунке 2-14, легко адапти- адаптировать к конкретным требованиям. Рис. 2-14. Порталы коллекций предоставляют PDF-информацию читателю Средства разработки Вам понадобятся программы pdftk [Совет № 79] и pdfportal. Чтобы устано- установить программу pdfportal, посетите веб-страницу http://www.pdfhacks.com/ pdfportal/'и загрузите архивpdfportal-1.0.zip. Распакуйте его и скопируйте файлы в такое место на сервере, поддерживающем РНР, где он сможет чи- читать и выполнять их. Отредактируйте файл pdfportal.config.php в соответст- соответствии с местоположением программы pdftk на своем компьютере. Windows-пользователи без доступа к серверу сети, поддерживающе- поддерживающему РНР, могут загрузить и установить программу IndigoPerl с сайта http://www.indigostar.com. Программа IndigoPerl — это Apache-инсталля- Apache-инсталлятор для Windows, поддерживающий Perl и РНР. Выполнение программы pdfdir.php Предположим, файлы pdfportal находятся по адресу http://localhost/ pdfportal/, и имеется каталог под названием http://localhost/collection/. Что-
бы просматривать его, используя портал, передайте путь к нему програм- программе pdfdir.php, например, следующей записью: http://localhost/pdfportal/pdfdir.php ?dir ^/collection/ Программа pdfdir.php вызывает операцию dump_data из pdftk, чтобы создать информационные файлы для каждого PDF-документа в этом каталоге, которые затем используются для формирования информа- информативной результирующей HTML-страницы. Как отмечалось ранее, ин- информационный файл — это результат выполнения операции dump_data программы pdftk [Совет № 64]. Чтобы открыть портал документа [Совет № 21], щелкните на его заго- заголовке. Для перемещения по каталогам используйте дерево гиперссы- гиперссылок в верхней части страницы. Усовершенствование метода Структуру портала легко расширить, добавив, например, возможность загрузки PDF-документов в текущий каталог или перемещения пользо- пользователями PDF-документов из одного каталога в другой. Идентификация связанных PDF-документов (Анализируйте частоту слов для определения связи между PDF-документами.) Организация большой коллекции по категориям требует непосред- непосредственного знакомства с каждым документом. Осуществить это практи- практически невозможно. Предлагаем два основных Bourne shell-сценария, которые опре- определяют степень подобия двух PDF-документов. С их помощью можно категоризировать PDF-документы, идентифицировать не- неправильно зарегистрированные документы или предложить свя- связанный материал своим читателям. Их логика доступна для любого языка сценариев. Чтобы установить язык Bourne shell в Windows, см. раздел «Средства для разработки дополнений к программе Acrobat» [Совет № 97]. Эти сценарии используют следующие опции командной строки: pdftotext [Совет № 19], sed (Windows-пользователи могут посетить веб- вебстраницу http://gnuwin32.sf.net/packages/sed.htm), sort, uniq, cat и we (Windows-пользователи могут посетить веб-страницу http://gnuwin32.sf.net/ packages/textutils.htm). Эти средства доступны для большинства платформ. Вот краткое описание их функций:
pdftotext Конвертирует PDF-документы в открытый текст. sed Фильтрует текст и выполняет замены. sort Сортирует строки текстовых файлов. uniq Удаляет двойные строки из сортированного файла. cat Связывает файлы. we Выводит количество байт, слов и строк файла. Первый сценарий, wordlist.sh, из PDF-файла создает текстовый файл, содержащий сортированный список слов, которые не менее чем дважды встречаются в этом документе. Сохраните этот сценарий на диске как wordlist.sh, а затем, в случае необходимости, примените к не- нему команду chmod 700: #!/bin/sh pdftotext $1 - | \ sed's//\n/g'|\ sed's/[AA-Za-z]//g'|\ sed'/*$/d'|\ sed 'y/ABCDEFGHDKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' | \ sort | \ uniq -d > $1.words.txt Сначала документ в формате PDF конвертируется в текст. Затем каждое слово помещается в отдельную строку. Любые неалфавитные символы удаляются, так что you'll, например, становится youll; удаля- удаляются все пустые строки, все символы переводятся в нижний регистр; слова сортируются, и создается список слов, которые появляются не менее чем дважды. Выходной файл имеет то же имя, что и входной, но добавляется расширение .words.txt. Если вы вызываете wordlist.sh следующим образом: wordlist.sh mydocl.pdf то он создает текстовый файл mydocl.pdf.words.txt. Например, список слов для документа Brian Eno: His Music and the Vertical Color of Sound {http://www.pdfhacks.com/eno/) содержит: anything anyway anywhere apart
aperiodic aphorisms ар olio apparatus apparent apparently appeal appear Второй сценарий, percent_overlap.sh, сравнивает два списка слов и сообщает, какой процент слов используется совместно. Если срав- сравнить документ сам с собой, то его перекрытие будет равно 100 %. Процент перекрытия рассчитывается с использованием длины более короткого списка слов, поэтому, если взять фрагмен документа и сравнить его с полным документом, то сценарий также сообщит о 100%-ом перекрытии. Для двух любых полностью несвязанных документов перекрытие может достигать 35 %, т. к. документы, написанные на одном языке, используют много одинаковых слов. Два несвязанных романа могут иметь значительное перекрытие. Два несвязанных технических доку- документа такого перекрытия иметь не будут. Обратите внимание на то, что в этом Bourne shell-сце- shell-сценарии мы используем символы Q, а не апострофы ('). Символ обратной галочки находится на клавише с тильдой (~). Сохраните этот сценарий на диске как percent_overlap.sh, а затем, в случае необходимости, примените к нему команду chmod 700: #!/bin/sh num_words_l=vcat $1 | we -Г num_words_2=*cat $2 j we -Г num_common_words=4sort $1 $2 | uniq -d | we -Г if [ $num_words_l -It $num_words_2 ] then echo $(( 100 * $num_common_words/$num_words_l)) else echo $(( 100 * $num_common_words/$num_words_2 )) fi Запустите сценарий percentjoverlap.sh на выполнение следующей ко- командой, и он возвратит значение перекрытия между двумя документа- документами как единственное число (в этом примере перекрытие равно 38 %): $ percent_overlap.sh mydocl.pdf.words.txt mydoc2.pdf.words.txt 38
Если применить этот сценарий к нескольким документам, то по- появятся разнообразные значения взаимосвязи. Например, таблица 2-1 показывает полные перекрытия между различными документами мое- моего компьютера. Табл. 2-1. Результаты сравнения различных документов с помощью сценария percent_overlap.sh ISilllllliiilliliSiiBil IliS 111 ШШ ШШ. ШШ lie 11 A=PDF Reference, 1.4 100 98 65 36 48 50 35 B=PDF Reference, 1.5 98 100 67 37 51 52 34 C=PostScript Reference, Third Edition 65 67 100 38 47 49 36 D=The ANSI C++ Specification 36 37 38 100 38 40 25 E=Corporate Annual Report #1 48 51 47 38 100 62 49 F=Corporate Annual Report #2 50 52 49 40 62 100 52 G=Brian Eno Book by Eric Tamm 35 34 36 25 49 | 52 100
ГЛАВА 3 Авторская разработка и публикация: хакинг вне PDF Советы № 24-31 В следующих главах рассматриваются вопросы, связанные с PDF- публикацией, а описанные методы взлома сделают эту работу более простой и, возможно, более выгодной. Поддержание состояния вашего источника (Лелейте и обслуживайте исходный документ.) Формат PDF стал очень удобным файловым форматом. Если в момент своего создания он представлял собой «немую электронную бумагу», то те- теперь формат PDF используется как интеллектуальный файловый формат многих программных продуктов фирмы Adobe. Под интеллектуальным подразумевается точное сохранение структуры документа. Например, можно создать художественные работы в программе Adobe Illustrator, а за- затем сохранить их как PDF-файл, без всякой потери информации, коман- командой меню File\Save As\Save As Type:PDF (Файл\Сохранить как\Сохранить как тип: PDF). Откройте этот PDF-файл в программе Illustrator и продол- продолжите редактирование; оно осуществляется точно так же, как и в родном AI- формате. Интеллектуальные PDF-документы красивы и умны. Но такие PDF-документы не подходят для общего сетевого распро- распространения. Они содержат данные прикладной программы и намного больше, чем их оптимизированные производные. Некоторые програм- программы содержат опцию создания немого PDF. В программе Illustrator, на- например, можно отключить возможности редактирования при сохране- сохранении файла командой меню File\Save As\Save As Type:PDF или упростить PDF-файл с помощью ограничения размера [Совет № 60] перед выпуском его для широкого распространения. Между интеллектуальным и немым существует разумный документ в формате PDF, который сохраняет структуру оригинала [Совет № 34]. Про- Программы просмотра и фильтры используют эту информацию для извлече-
ния текста и таблиц из PDF-документа. Такие умные PDF-документы мо- может создавать макрокоманда PDFMaker, которая поставляется с Adobe Acrobat и интегрируется с Microsoft Word [Совет № 32]. Интеллектуальные, разумные и немые PDF-документы имеют свои преимущества, но у всех у них высокое качество представления. Интеллектуальные PDF-документы могут создавать только не- несколько приложений. Adobe Acrobat может создать немой или ум- умный PDF-документ, но не настолько, чтобы заменить исходный до- документ. При использовании популярных текстовых процессоров типа Microsoft Word, Sun StarOffice/OpenOffice или Corel WordPerfect PDF-формат не может заменить родной формат фай- файлов программы. При внесении исправлений в PDF-документ не забудьте также от- откорректировать исходный файл. Идеально, если бы все изменения вносились сначала в исходный документ, а затем обновлялась бы PDF- версия. Но это зависит от применяемой технологии создания и может быть непрактичным. Поэтому периодически редактируйте исходный документ. Немой (или даже разумный) PDF-документ не является полноценной за- заменой. Хороший исходный документ вознаградит и HTML, и пор- портативными, и полнофункциональными PDF-версиями. Обрабо- Обработайте его, чтобы создать производный материал или применить новые стили. Как будет показано далее, интеллектуальный исход- исходный документ — это чистый контент, который сослужит вам хоро- хорошую службу. Тем не менее, немой PDF-документ отлично подходит для своей цели: создания и распространения качественных электронных документов. Авторская разработка интеллектуального первоисточника Интеллектуальный первоисточник обещает большие выгоды. Созда- Создание таких документов дисциплинирует. Хитрость состоит в отделении контента документа от его представления. Мы можем достичь этого, вводя стили, например, Heading 1 (Заголовок 1), Body Text (Основной текст) и List Number (Номер страницы). Стили отделяют контент и представление подобно этому: Контент —> Стиль —> Представление Например: "Глава 1: Работа Эно в перспективе" -» Heading 1 (Заголовок 1) -> Arial Narrow (Axial узкий), полужирный, 18 точек. При создании нового абзаца отметьте его стилем. В данном случае мы использовали стиль Заголовок 1. Он описывает, как должны выгля- выглядеть все такие абзацы. Если установлен стиль Заголовок 1 с полужир-
ным шрифтом Arial Narrow, все абзацы со стилем Заголовок 1 в доку- документе будут использовать этот шрифт. Без использования стилей изме- изменение шрифта для Заголовок 1 с Arial Narrow на Times Narrow потребу- потребует форматирования каждого заголовка вручную. Выгоды от использования стилей особенно заметны при быстром изменении шрифтов. Вы можете также: • создать динамическое оглавление; • создать полнофункциональную PDF-версию документа [Совет № 32]; • создать HTML-версию [Совет № 35]; • создать портативную версию [Совет № 36]; • генерировать производные документы [Совет № 55]. Как? Стили добавляют контенту интеллект. При создании полно- полнофункционального PDF-документа абзац стиля Заголовок 1 становится закладкой уровня 1. При создании HTML-версии абзац этого стиля от- отмечается тэгом <hl>. Стили придают контенту определенное значе- значение, поэтому фильтры могут интерпретировать их соответствующим образом. Стили в Microsoft Word 2002, Word 2000 и Word:Mac v. X При создании нового документа в редакторе Word наследуется сово- совокупность стилей от шаблона документа. Если вы не определяли шаблон, то используется шаблон normal.dot. Как получить доступ к этим стилям? В Word 2002 командой меню Format\Styles and Formatting (Фор- мат\Стили и форматирование) откройте область окна задач. Если список стилей выглядит слишком коротким, нажмите стрелку вниз поля Show (Показать) и выберите Show All Styles (Показать: все стили). Список дол- должен включать множество стилей абзацев, символов, списков и таблиц. Наверху, как показано на рисунке 3-1, отображается текущий стиль. Изме- Измените его, просто щелкая на одном из стилей, содержащихся в списке. В Word 2000 или Word:Mac командой меню Format\Style (Фор- маДСтиль) откройте диалоговое окно, содержащее список доступных стилей параграфов и символов, и выберите List: All Styles (Список: все стили), чтобы увидеть все имеющиеся стили. Вы можете также исполь- использовать диалоговое окно, показанное на рисунке 3-2, чтобы изменить те- текущий стиль. Это громоздкий способ применения стилей. Другой способ просмотра и изменения стиля параграфа в Word 2000 и Word: Mac — это использование Style Area (Область стиля) (см. рисунок 3-3). В Word 2000 выберите Tools\Options\View (Сервис\Параметры\Вид). В Word:Mac выберите Word\Preferences\View (\УоМ\Параметры наст- ройки\ Вид). Установите значение Style Area Width (Ширина области стиля), в нижней части диалогового окна, равным 2,5 см и нажмите ОК. Затем выберите View\Normal (Вид\Обычный) или View\Outline
(Вид\Эскиз), и окно слева покажет вам стиль каждого абзаца. Дважды щелкните на имени стиля — откроется диалоговое окно Style (Стиль), предоставляя возможность изменить стиль абзаца. Рис. 3-1. Быстрое изменение стилей в окне задач Styles and Formatting Создание документа с использованием только стилей дисциплиниру- дисциплинирует. Word делает очень простым форматирования абзацев без использова- использования стилей, поэтому уменьшите искушение, закрыв панель форматиро- форматирования командой View\Toolbars\Formatting (Вид\Панели инструментов\ Форматирование) (см. рисунок 3-4). Теперь диалоговое окно Style (Стиль) открывается нажатием комбинации клавиш Ctrl+Shift+S (в Windows) или Command+Shift+S (в Мае). В большинстве случаев изменить форматирование абзаца можно, изменяя его стиль (например, от Normal [Обычный] к List Bullet [Спи- [Список]) или изменяя форматирование стиля (например, добавлением от- отступа ко всем абзацам Normal). Форматирование стиля производится в диалоговом окне Modify Style (Изменение стиля), которое открывается несколькими способами.
Из области окна задач Styles and Formatting (Стили и форматирова- форматирование), доступного в Word XP и Word 2003 и показанного на рисунке 3-5, можно открыть диалоговое окно Modify Style (Изменение стиля), вы- выбрав Modify (Изменить) в раскрывающемся меню текущего стиля. Или в любой версии Word выделите абзац, откройте диалоговое окно Style (Стиль), нажимая комбинацию клавиш Ctrl+Shift+S (в Windows) или Command+Shift-bS (в Мае), а затем выберите Modify. При использова- использовании Style Area (Область стиля) откройте диалоговое окно Style, дважды щелкнув кнопкой мыши на имени стиля абзаца, а затем выберите Modify, чтобы открыть диалоговое окно Modify Style (Изменение стиля). Рис. 3-2. Изменение стиля абзаца в диалоговом окне Style Избегайте использования вкладок, лишних пробелов или повторных переводов каретки (пустые абзацы) при форматировании документа, модифицируя отступы абзацев, чтобы удовлетворить свой вкус. Для таб- табличных данных используйте таблицы вместо применения клавиши Tab. Создание автоматического оглавления в Word Для автоматического создания оглавления документа с помощью стилей используйте команды меню Insert\Reference\Index and Tables\Table of Contents (Вставка\Ссылка\Оглавление и указатели\Ог- лавление) в Word 2002 или Insert\Index and Tables\Table of Contents (Вставка\Оглавление и указатели\Оглавление) в Word 2000/Word:Mac.
Рис. 3-3. Изменение стилей с помощью Style Area Рис. 3-4. Панель инструментов форматирования: опасный соблазн Разработка дизайна документа (Сделайте документ красивым и удобным для чтения.) Хотя главное для документа — его содержание, внешний вид также имеет большое значение. Здесь должны учитываться как практичес- практические, так и эстетические соображения. Дизайн документа должен соответствовать его контенту, дополнять его и помогать читателю понять вашу работу. Экспериментируйте и консультируйтесь у профессионалов. Как только вы разработаете ди- дизайн документа, последовательно претворяйте его в жизнь.
Рис. 3-5. Панель задач Styles and Formatting в Word 2003, которая обеспечивает легкий доступ к параметрам настройки стилей Рекомендуемая книга по этой теме: Маршалл Ли «Книгоиздание: редактирование, дизайн, производство» (W.W. Norton). Для получения подсказок о написании слов через дефис, пунктуации и печати посетите веб-страницу New York University Editing Workshop Syllabus (http://www.nyu.edu/ classes/copyXediting/sy llabus.html). Каждый жанр использует определенные стили. Некоторые реко- рекомендации строги (например, патентованные приложения), но боль- большинство дает простор для индивидуализации и создания бренда (сравните газеты «Wall Street Journal» и «USAToday»). Изучение работ определенного жанра позволяет получить представление о том, что ожидают читатели. Это поможет найти свой стиль, который станет ви- витриной ваших документов.
Шрифт Идентификация шрифта, который вы хотите использовать, пред- представляет определенную сложность. Если вы нашли его в книге, то про- проверьте выходные данные в конце книги. Если — в PDF-документе, про- проверьте свойства шрифта командой меню File\Document properties\ Fonts (ФашДСвойства документа\Шрифты). Идентифицировать шрифт можно на сайте: http://www.fonts, com/findfonts/ identifontframe.asp ?FONTNAME=identifont, или попробовать оптический механизм распознавания шрифта: http://www.myfonts.com/WhatTheFont/ На рынке существуют тысячи профессиональных шрифтов, так что может оказаться невозможным точно идентифицировать выбранный шрифт. Или он может оказаться слишком дорогим для бюджета. В этих случаях можно поискать ему замену. Ниже будет рассказано о некото- некоторых удобных и экономичных источниках шрифтов. Посмотреть некоторые используемые шрифты можно на веб-странице Best Sellers: http://www.myfonts.com/fonts/ bestsellers.html. Чтобы установить шрифты в Windows, откройте каталог C:\Windows\ Fonts\ или C:\WINNT\Fonts\ с помощью программы File Explorer. Ко- Командой меню File\Install New Font (Файл\Установить новый шрифт) откройте диалоговое окно. Выберите папку, где находятся новые шрифты, и их названия появятся в List of Fonts (Список шрифтов). Вы- Выделите шрифты, которые хотите установить, и нажмите ОК. Установка шрифтов Туре 1 или ОрепТуре в старых Windows-системах (NT, 98 или 95) или старых Macintosh-системах (до OS X) требует, чтобы сначала была установлена программа ATM Light от Adobe. Она свободно доступна на веб-странице http://www.adobe.com/products/atmlight/main.html Бесплатные шрифты Интернет наводнен бесплатными или дешевыми шрифтами. Обработ- Обработка хорошего шрифта требует интенсивной работы, а плохой шрифт мо- может создать ряд проблем. Лучше использовать профессиональные шриф- шрифты от известных разработчиков. Подумайте о покупке пакета шрифтов, чтобы создать свою коллекцию шрифтов с меньшими затратами. Одним из источников хороших бесплатных шрифтов является пакет Base 35, который поставляется с Ghostscript [Совет № 39]. Если вы уста-
навливали Ghostscript в каталог C:\gs\gs8.14\, то эти шрифты будут рас- распакованы в каталог C:\gsYonts\. Другое бесплатное профессиональное семейство шрифтов — Bitstream Vera (http://www.bitstream.com/categones/ products/fonts/vera/). Корпорация Microsoft сделала свои основные шрифты TrueType свобод- свободно распространяемыми. Их можно загрузить с сайта http://corefonts.sf.net. Почтенные шрифты Computer Modern свободно до- доступны на веб-странице http://www.ams.org/tex/typel- fonts.html. Однако они не работают с популярными тек- текстовыми процессорами типа Microsoft Word. Вместо них лучше приобрести шрифты European Modern (http://www.yandy. com/em.htm). Системные шрифты Компьютерные системы поставляются с множеством полезных шрифтов. Однако некоторые могут иметь лицензионные ограничения, препятствующие внедрению их в PDF-документ. Если при создании PDF-документа вы использовать такой шрифт, то программа Distiller сообщит об ошибке в своем журнале. Заменить такой шрифт можно, например, шрифтом Courier. Файлы шрифтов TrueType содержат встроенную ин- информацию о лицензионных ограничениях, файлы шрифтов Туре 1 не содержат ее. Не полагайтесь на со- сообщения программы Distiller, а прочитайте лицензию. Для уменьшения размера PDF-файла используйте обыч- обычные шрифты, которые не нужно внедрять. Шрифты Base 14 и некоторые системные шрифты доступны на большинст- большинстве компьютеров, так что их не нужно упаковывать в PDF- документ. См. раздел «Встраиваемые и неполные шрифты» [Совет № 43] для получения дополнительной информации. Стандартные шрифты Некоторые авторские программы поставляются со шрифтами. На- Например, компакт-диск с Adobe Illustrator 9.0.1 содержит 213 шрифтов, расположенных в каталоге Fonts & ATM\FONTS, а также иллюстрации и готовые фотографии. Файлы шрифтов имеют расширения имен *.ttf (TrueType или Open Type), *.pfa, *.pfb (Adobe Type 1) или *.0#XOpenType).
Пакеты шрифтов Разработчики обычно предлагают скидки при покупке коллекции шрифтов. Например, Adobe предлагает коллекцию Type Basic из 65 шрифтов за 99 долл. (http://www.adobe.com/type/). Посетите сайты http://fonts.com и http://www.myfonts.com, чтобы получить дополнитель- дополнительную информацию о различных пакетах шрифтов и компакт-дисках, имеющихся на рынке. Типографские советы Нет никаких универсальных и быстрых правил для разработки хоро- хорошего дизайна, поэтому внимательно прочитайте следующие советы. • При использовании двух семейств шрифтов в одном документе выберите одно семейство serif (с засечками), а другое семейство sans-serif (без засечек), как показано на рисунке 3-6. Избегайте ис- использовать больше двух семейств шрифтов в одном документе. Некоторые семейства включают много шрифтов, например, в семействе Helvetica их 35 (http://www.myfonts.com/fonts/linotype/ helvetica/). Рис. 3-6. Семейства шрифтов serif (слева) и sans-serif (справа) • Основной serif-текст более удобен для чтения на бумаге, основ- основной sans-serif-текст — для чтения на экране. Выберите шрифт, удобный для чтения длинных абзацев. Шрифт заголовков может быть более оригинальным. • Размер текста — это не высота любого определенного символа. Скорее, это свободное измерение горизонтального пространст- пространства, используемого строкой текста. Оно измеряется в точках и равно 72 точкам на дюйм. Типичный размер для основного текста — 9 или 10 точек. Для старшей аудитории тексты с 11 или с 12 точками лучше, потому что их легче читать. Используйте основной текст с 12 точками в широких столбцах так, чтобы отношение слово/строка остава- оставалось разумным. • Применяйте автоматический кернинг для стилей, особенно для стилей заголовков. Кернинг определяет пробелы между симво- символами (см. рисунок 3-7).
В редакторе Word добавьте автоматический кернинг к стилю. От- Откройте диалоговое окно Modify Style (Изменить стиль), выбери- выберите Format\Font\ Spacing (Формат\Шрифт\Интервал), установите флажок Kerning (Кернинг) и нажмите ОК. Рис. 3- 7. Установка автоматического кернинга • Установите ширину столбца и размер шрифта так, чтобы основ- основной текст составлял в среднем 10 — 14 слов на строку. Например, текст, использующий шрифт с 9 точками, хорошо выглядит в столбце шириной 4 дюйма. Тот же самый текст со шрифтом в 10 точек требует столбца шириной 4,5 дюйма. Длинные строки за- затрудняют чтение. • Когда требуется масштабировать абзац, чтобы вписаться в заданное вертикальное пространство, перед корректировкой размера шриф- шрифта скорректируйте интервал между его строками, как показано на рисунке 3-8. Например, 11-ти или 12-ти точечный интервал между строками хорошо выгладит со шрифтом в 9 точек. Интервал между строками в 13 точек хорошо выгладит со шрифтом в 10 точек. Откройте в Word диалоговое окно Paragraph (Абзац) для конкрет- конкретного стиля, выберите Line Spacing: to Exactly (Интервал между строками: точно) и введите желательный размер интервала меж- между строками. Рис. 3-8. Интервал между строками определяется от одной базовой линии до другой • При использовании узких столбцов (девять или меньше слов на строку), выравнивайте текст влево вместо выравнивания по ши- ширине, иначе слова могут разделяться слишком большими интер- интервалами, как показано на рисунке 3-9.
Рис. 3-9. Узкие колонки с выравниванием влево (слева) и по ширине (справа) • Используйте для акцентирования текста курсив или полужир- полужирный шрифт. При использовании легкого шрифта подчеркните текст, используя легкий курсив или обычный курсив, но не полу- полужирный. Если требуется стиль со всеми заглавными буквами, попробуйте найти шрифт, предназначенный для этой цели, как показано на рисунке 3-10. Рис. 3-10. Шрифты со всеми заглавными буквами, обеспечивающие хороший дизайн Обработка длинных URL Наличие URL в абзаце может привести к появлению неуклюже длин- длинных строк. Редактор Microsoft Word не разбивает URL более чем на две строки, так что предыдущая строка может выглядеть слишком корот- короткой. Вот некоторые советы для улучшения форматирования URL. Используйте сноски страниц. URL обычно ссылается на связанный материал и не способствует комментированию абзаца. Поэтому поме- поместите его в сноску страницы, где традиционно находятся ссылки. Это поможет читателям быстро находить URL. Вставьте пробелы нулевой ширины, отмечающие концы строк. Zero- Width Space (ZWS) — пробелы нулевой ширины, непечатаемый сим- символ, который показывает редактору Microsoft Word, где он может раз- разбивать URL. Естественное местоположение для ZWS — после каждой наклонной черты вправо, которая следует за именем домена. Стиль URL-текста немного отличается от основного, поэтому читатели не должны быть введены в заблуждение разбитыми более чем на две строки URL.
В Word 2002 вставьте ZWS, вводя 200b (Юникод ддя ZWS) в место- местоположении курсора, а затем нажимая комбинацию клавиш Alt-X. В Word 2000 можно заменить наклонные черты вправо наклонными чертами +ZWS, открыв командой меню Edit\Replace (Правка\3аме- нить) диалоговое окно Find and Replace (Найти и заменить). Выберите Find What: to / (Что найти: в /). Введите наклонную черту вправо в Replace With: (Заменить:), а затем добавьте в конце ZWS, удерживая клавишу Alt и вводя 8203 B00Ь в десятичном виде) с дополнительной цифровой клавиатуры. Для получения дополнительной информации о ZWS Word-макрокоман- Word-макрокомандах и подробной информации посетите веб-страницу http://word.mvps.org/ FAQs/Formatting/NoWidthSpace.htm. Если вы используете Macintosh, то, к сожалению, это намного более сложный процесс. Подробную ин- информацию можно получить на веб-странице http://word.mvps.org/FAQs/ WordMac/Unicode.htm. Создание диаграмм и графиков на основе необработанных данных (Создайте удобное представление данных перед их превращением в PDF-документ.) Вместо того чтобы пугать читателей таблицами необработанных данных, дайте им возможность увидеть цифры в виде диаграмм или графиков. Популярные текстовые процессоры могут создавать диа- диаграммы, кроме того, для создания графики можно использовать сво- свободно распространяемое программное обеспечение. Microsoft Word 2002, Word 2000 и WordiMac v. X Выберите и скопируйте табличные данные. В редакторе Word коман- командой меню Insert\Picture\Chart (Вставка\Рисунок\Диаграмма) откройте электронную таблицу. Первая строка и первый столбец таблицы заре- зарезервированы для заголовков строк и столбцов. Выберите верхнюю ле- левую ячейку и вставьте свои данные. Активируйте/дезактивируйте стро- строки и столбцы, дважды щелкая на строке таблицы и метках столбцов. При создании диаграммы Word вводит специальный режим Microsoft Graph. Выйдите из него, щелкая на странице документа вне диаграммы. Вернитесь в этот режим, дважды щелкая кнопкой мыши на диаграмме. В пределах режима можно редактировать таблицу дан- данных, изменять тип диаграммы командой Chart\Chart Type (Диаграм- ма\Тип диаграммы) или ее вид (чтобы изменить, например, цвет ком- компонента диаграммы или стиль, дважды щелкните на нем кнопкой мыши). Можно также изменить размеры или масштабировать диа- диаграмму, выделяя ее границы и перемещая их.
Corel WordPerfect Диаграммы программы WordPerfect ведут себя аналогично диаграм- диаграммам Word. В программе WordPerfect для быстрого создания диаграммы надо выделить табличные данные, щелкнуть правой кнопкой мыши и выбрать в контекстном меню Chart (Диаграмма). Щелкните правой кнопкой мыши и выберите в контекстном меню Gallery (Галерея) — WordPerfect откроет галерею диаграмм StarOffice и OpenOffice фирмы Sun Текстовый процессор фирмы Sun включает возможности построе- построения диаграмм, аналогичные Microsoft Word. Командой меню Insert\ Object\Chart (Вставка\ Объект\Диаграмма) запустите мастер создания диаграмм. Выберите табличные данные (шаг 1), тип диаграммы (шаги 2 и 3) и введите заголовок (шаг 4). Дважды щелкните на диаграмме, что- чтобы ввести режим редактирования диаграммы. Создание графиков с помощью программы gnuplot Создавать графики можно с помощью программы gnuplot. Автома- Автоматически создаются основные двух- или трехмерные графики из вход- входных данных, а для вывода точного стиля требуется программирование gnuplot. Графики можно предварительно просмотреть на экране, а за- затем выполнить их в PostScript, PNG или одном из многих других под- поддерживаемых форматов. Посетите сайт http://www.gnuplot.info для за- загрузки программы, документации и примеров. Программа gnuplot — бесплатное программное обеспечение. Исходные данные хранятся в текстовом файле в следующем виде: двумерные (из DEMO/1.DAT): -20.000000 -3.041676 -19.000000 -3.036427 -18.000000 -3.030596 или трехмерные (из DEMO/GLASS.DAT): 0.568000 0.000000 -0.911000 0.518894 0.231026 -0.911000 0.380066 0.422106 -0.911000 Запуск gnuplot открывает интерактивную оболочку. По умолчанию gnuplot выполняет графики на экране.
Рассмотрите основной двухмерный график DEMO/7.DAT следую- следующим образом: gnuplot> plot 'DEM0/1.DAT' Рассмотрите основной трехмерный график DEMO/GLASS.DAT^сле- DEMO/GLASS.DAT^следующим образом: gnuplot> splot DEMO/GLASS.DAT' Создайте PostScript-файл из своего графика, например: gnuplot> set term postscript enhanced color solid gnuplot> set output 'DEMO/1.ps' gnuplot> plot DEMO/1.DAT gnuplot> set output Выполните один из сценариев DEMO, которые работают с Windows- версией, например: gnuplot> cd 'DEMO' gnuplot> load iflTORLD.DEM' Программа gnuplot имеет хорошую интерактивную систему справки. Чтобы получить информацию о ключевом слове, введите help ключевое слово (например, help term). Вам может помочь и телеконференция по gnuplot — comp.graphics.apps.gnuplot. Отображение связей с помощью программы Graphviz Граф иллюстрирует отношения между узлами, соединяя их с помо- помощью ребер. Ориентированный граф использует односторонние ребра, обозначаемые стрелками-указателями, в отличие от неориентированно- неориентированного графа. Ориентированные графы используются для иллюстрации ие- иерархии или технологических процессов. Graphviz — это набор программных средств с открытым исходным кодом для создания графов из входных данных. Посетите веб-страни- веб-страницу http://www.research.att.com/sw/tools/graphviz/'для получения докумен- документации, загрузки программы и примеров. Предлагаемая программа из набора Graphviz называется dot. Вот пример, взятый из руководства пользователя программы dot. Пометьте узлы и опишите их отношения, используя текстовый файл: // example_graph.dot digraph G { main -> parse; main -> execute; main -> init;
main -> cleanup; parse -> execute; execute -> make_string; execute -> printf; init -> make_string; main -> printf; execute -> compare; } Передайте его программе dot и определите формат выходного файла. В примере задан PostScript, но можно использовать PNG, SVG или лю- любой другой формат: dot -Tps example_graph.dot -о example_graph.ps Рис. 3-11. Graphviz прекрасно иллюстрирует иерархические связи Graphviz создает также сложные красочные графы. Посетите веб- вебсайт Graphviz и посмотрите примеры. Станьте издателем (Купите ISBN для своей книги и станьте издателем.) Номер ISBN дает разрешение на издание книги. Покупая собствен- собственный ISBN, вы также получаете привилегии издателя. ISBN переводит- переводится как International Standard Book Number — стандартный международ- международный номер книги. Каждая изданная книга имеет уникальный ISBN,
подобный показанному на рисунке 3-12. ISBN должен быть напечатан на книге, поэтому его необходимо получить перед ее изданием. Рис. 3-12. Штриховой код номера ISBN Подумайте о названии для своего издательства, получите кредитную карточку и посетите сайт http://www.isbn.org, чтобы заказать ISBN-H/?e- фикс издателя. Он будет использоваться во всех ваших ISBN. Кроме того, необходимо купить блок из 10,100,1 000 или 10 000 номеров ISBN. В на- настоящее время 10 номеров ISBN стоят 244,95 долл., а 100 — 853,95 долл. Приблизительно через 10 дней после подачи заявления вы получите свои номера. Публикация книги требует координации многих во- вопросов. Исходите из того, что каждый шаг требует вдвое больше времени, чем ожидается, и тогда получите свою книгу вовремя. Вместе с номерами ISBN предоставляется информация об интерак- интерактивной учетной записи. Используйте ее, чтобы назначать ISBN своей книге. Помните: нельзя многократно использовать один ISBN. После назначения ISBN бесплатно зарегистрируйте книгу на сайте Books in Print {http://www.bowkerlink.com). ISBN печатается на внутренней странице с авторскими правами и штрих-кодом на обложке. Посетите веб-страницу http://www.isbn.org/ standards/home/isbn/us/major.asp для получения дополнительной инфор- информации об использовании ISBN. Можно создать штрих-код ISBN бесплатно, используя веб-страницу Lightning Source: http://www.lightning- source. com/LSISecure/PubResources/CoverSpecsEntry. asp. После сообщения им ISBN вы получите по электронной почте PDF-шаблон для обложки книги. Он предназначен для использования системой Lightning, но можно восполь- воспользоваться программами Illustrator, Acrobat или Photoshop, чтобы скопировать графический символ штрихового кода с PDF-шаблона и вставить его на обложку книги.
Теперь, когда вы стали издателем, можно говорить с дистрибью- дистрибьюторами о продаже книги. Lightning Source — оптовый дистрибьютор, который также печатает продукцию по заказу и публикует элек- электронные книги [Совет № 29]. Если вы решили самостоятельно печа- печатать свою книгу, ознакомьтесь с программой Advantage от Amazon [Совет № 30]. Платная публикация Если самостоятельная публикация книги создает слишком много проблем, используйте службу, которая издаст книгу за плату. Озна- Ознакомьтесь со списком таких служб на веб-странице https://www.lightning- source.com/ResourcesLinks.htm#AuthorServicesLinks. Одним из вариантов является программа iUniverse Select (http://www.mniverse.com). За 459 долл. iUniverse из электронного до- документа создает два издания: книгу в мягкой обложке и электронную книгу в формате PDF. Она регистрирует ISBN, создает дизайн об- обложки и регистрирует книгу в Amazon и Barnes & Noble. iUniverse платит 20%-ый авторский гонорар из денег, которые получает от ре- реализации (в отличие от розничной стоимости), минус плата за от- отгрузку и доставку книги. Учитывая эту формулу авторского гонорара, невозможно определить, сколько вы могли бы получить за каждую проданную книгу. Сделаем примерные расчеты. Если iUniverse предлагает розничную цену книги 25 долл., то продажа через Amazon приносит iUniverse 50% A2,50 долл.). Предположим, что доставка и стоимость погрузочно-разгрузочных ра- работ составляет 1,50 долл., после чего остается 11 долл. От этой суммы вы получаете 20%, или 2,20 долл. Но это только предположение. Для полу- получения более подробной информации по этому вопросу посетите веб- вебстраницу http://www.booksandtales.com/pod/rword.htm. Каждая книга имеет издателя, и каждый издатель имеет репутацию. Эта репутация помогает или препятствует продаже книги. Перед выбором платного издателя посмо- посмотрите на его продукцию и убедитесь, что он вам подходит. Проконсультируйтесь на телеконференциях (http://groups.google.com) для получения отзывов об этих службах. Проведите расширенный по- поиск на сайте Amazon, чтобы определить спрос на книги интересующе- интересующего издателя.
Печатайте дома, в офисе или в полиграфической сети Kinko's (Центры печати превосходят ваш лазерный принтер.) Самый короткий путь для переноса электронного документа на бу- бумагу — это лазерный принтер. Качество его печати отличное. В магази- магазине товаров для офисов имеется специальная бумага и устройства для переплета, помогающие превратить распечатку в публикацию. Когда требуется быстро печатать и переплетать много документов, может помочь типография. Она оборудована лазерными принтерами коммерческой производительности, копировальными устройствами, бумагорезальными машинами, сортировально-подборочными маши- машинами и переплетчиками. Типографии с копировальными услугами мо- могут иметь лучшее оборудование, больший выбор бумаги и более гра- грамотный штат. Здесь вам могут посоветовать, например, как перейти от крупномасштабного копирования к офсетной печати. Бумагорезательная машина — это мощная гильотина, которая чисто режет бумагу толщиной в несколько дюймов. Сортировалъно-подборочная машина — устрой- устройство для размещения страниц книги в надлежащем по- порядке. Переплет — объединение страниц книги в эк- экземпляр. Выбор бумаги Использование специальной или цветной бумаги повышает привле- привлекательность документа и выделяет его. Для различных целей использу- используются различные типы бумаги. Высокосортная бумага используется в офисных копировальных устройствах. Книжная бумага предназначена для офсетной печати. Если вы хотите использовать специальную бума- бумагу, посоветуйтесь с профессиональным печатником. Естественно, что типография предложит ту бумагу, которую она обычно использует. Толщина бумаги, или вес, измеряется по-разному для различных сортов бумаги. Так, 20-фунтовую высокосортную бумагу нельзя срав- сравнивать с 20-фунтовой книжной бумагой. Информацию о сортах бума- бумаги можно получить на веб-странице http://depts.washington.edu/bsc/ general_PDF's/Choosing_Paper.pdf. Копирование фотографий Фотографии трудно воспроизвести, используя обычное копироваль- копировальное устройство. Когда детали или цвет важны, группируйте художествен-
ные элементы на нескольких выбранных страницах. Используйте более дорогую цветную лазерную печать или цветное копирование только на этих страницах, а затем вставьте их в документ перед его переплетом. Переплет Переплет — это красивая обертка документа. Некоторые механизмы переплета типа пластмассовой гребенки позволяют страницам акку- аккуратно располагаться по отдельности. Клеевой переплет, например, этого не позволяет. Используйте текстовый процессор, чтобы добавить к страницам до- документа поля переплета. Они препятствуют потере текста страницы на сгибе. В редакторе Word командой меню File\Page Setup (ФашДПара- метры страницы) откройте диалоговое окно Page Setup, выберите вкладку Margins (Поля) и увеличьте значение Gutter (Промежуток между столбцами) до необходимого значения. Сеть Kinko's объединила хостинг сетевого документа с возможностью его печати, создав службу DocStore. Для получения дополнительной информации посетите вод- страницу http://wwwfedex.com/us/officeprint/commsols/solu- tions/docstore. html. Публикация POD и электронных книг (Сотрудничество с Lightning Source.) Служба Lightning Source работает с издателями (т. е. с вами [Совет № 27]), чтобы печатать и распространять как обычные, так и электронные книги. Ее средства POD (Print-on-demand — печать по требованию) создают печатную книгу при получении заказа, избавляя издателя от различных проблем и выполнения большого объема печати. Служба создания электронной книги снижает издержки производства. Распро- Распространение книги через службу Lightning Source помещает ее в каталоги Amazon, Barnes & Noble и других розничных продавцов во всем мире. Lightning Source — это филиал Ingram Industries, который связан с Ingram Book Group, поэтому Lightning Source имеет надежный фунда- фундамент и разветвленную сеть. Оптовые дистрибьюторы поставляют книги розничным продавцам, которые затем продают книги розничным покупателям. Издатели через оптовых дистрибьюторов передают свои книги в руки читателей.
Lightning Source — служба не для каждого. Она не предоставляет мно- многих услуг, которые можно получить от платного издателя. Lightning Source просто берет законченную книгу, печатает и распространяет ее. Вы ответственны за все остальное, т. е. регистрацию ISBN [Совет № 27], набор книги, соответствие спецификациям Lightning Source и создание дизайна обложки. Несоблюдение рекомендаций Lightning Source может вызвать проблемы и дополнительные расходы. С рекомендациями и шаблонами можно ознакомиться на веб-странице http://www.lightning- source.com/ResourcesBookDesigner.htm. Вначале вы должны получить учетную запись на сайте http://www.Hght- ningsource.com. После этого загрузите готовую к печати книгу и ее облож- обложку. Сетевая учетная запись дает также возможность заказа напечатанных книг, отслеживания заказов и чтения отчетов о продажах. Включение книги в систему требует установочной платы, которая зависит от объема книги. Для книги в 300 страниц установочная пла- плата может составлять 100 долл. Поддержка одной книги на серверах Lightning Source стоит 12 долл. в год. Спустя несколько дней после включения книги в систему вы полу- получите напечатанное подтверждение для изучения и подписи. Урегули- Урегулируйте проблемы, если они возникли, и ваша книга готова к печати. При использовании службы распространения Lightning Source рознич- розничным продавцам может потребоваться около двух недель, чтобы доста- доставить ее к своим каталогам. Тем временем вы можете заказать книги не- непосредственно у Lightning Source. Как издатель, вы определяете розничную цену своей книги, затем про- продаете ее дистрибьютору по оптовой цене. Давая службе Lightning Source 55%-ую скидку, вы оставляете для них возможность использования при- привлекательной скидки для розничных продавцов. Lightning Source берет с вас плату за печать, а не за отгрузку и транспортировку. Цена печати кни- книги в 300 страниц составляет приблизительно 5 долл. за книгу. Для получения дополнительной информации по скид- скидкам посетите веб-страницу: http://julieduffy.com/writing/ econo_discount.htm. Так, если бы мы определили для нашей гипотетической книги в 300 страниц розничную цену 25 долл., каждая ее продажа через Lightning Source составляла бы 45% A1,25 долл.) минус 5 долл. за печать, итого получается 6,25 долл. Через Lightning Source можно продавать и электронные версии кни- книги. Для этих изданий нет никаких затрат на печать.
Продажа через Amazon (Сотрудничайте с сайтом Amazon и позвольте ему осуществлять сделки.) Вы написали, отредактировали и набрали ваш контент, зарегистри- зарегистрировали ISBN и напечатали книгу. Теперь ее нужно продать. Если вы проживаете в Северной Америке и имеете всемирные дистрибутивные права, можно сотрудничать с программой Advantage Amazon. В этом случае Amazon добавляет заголовок книги к своему каталогу и помещает несколько экземпляров книги на свой склад. Когда клиенты по- покупают книгу, Amazon обрабатывает и отправляет их заказы. Взамен вы предоставляете Amazon 55%-ую скидку от установленной вами розничной цены. Amazon также взымает с вас ежегодный членский взнос в 29,95 долл. Поэтому, при передаче Amazon книги с розничной ценой, например, в 25$, каждая ее продажа через эту систему даст вам 45% или 11,25 долл. Через нее можно также продавать созданные вами музыкальные ком- компакт-диски или VHS/DVD-записи, но не электронные книги. Для получе- получения дополнительной информации о присоединении к программе Advantage Amazon см. веб-страницу http://www.amazon.com/exec/obidos/subst/part- ners/direct/advantage/home.html О перспективах программы Advantage Amazon можно узнать на веб-странице http://julieduffy.com/writing/ amazon_a.htm. Продайте свою книгу, продайте свой труд (Что вы продаете, и кто собирается это покупать?) Самая сложная задача — убедить людей купить вашу книгу. Хорошо, если книга является частью большой стратегии продажи вашего труда. Когда люди начинают видеть в вас источник достоверной информации или развлекательных материалов, они будут покупать вашу книгу, по- посещать семинары, заплатят за консультацию, посетят ваш сайт, будут читать ваш сетевой журнал и рассказывать о вас друзьям. Возможно, они сделают только что-то из перечисленного, но это поможет осуще- осуществить вашу стратегию. Вот некоторые идеи развития карьеры с помощью публикаций. Нацеливайтесь на рыночную нишу Общие темы охвачены сотнями популярных книг. Новой книге по Photoshop, например, придется конкурировать с 800 другими книгами
об этой программе, доступными в настоящее время. Стремитесь запол- заполнить рыночную нишу. Например, поиск в Amazon показывает, что только несколько книг описывают создание сценариев для программы Photoshop. Человек, который интересуется этими вопросами, конечно же, прочитает бросающимися в глаза заголовки. Как профессионал, вы, вероятно, имеете специализацию. Имеет смысл подчеркнуть это, используя специализированную, ориентиро- ориентированную на заполнение ниши публикацию. Вам проще будет написать такую книгу, и она будет заметна на рынке. Исследуйте актуальные темы Напишите о зарождающейся технологии или тенденции, или о не- недавнем событии. Такие публикации могут больше походить на сообще- сообщения, чем на книги, но покупатели оценят вашу своевременность. Служба, создающая печатный PDF-документ из сетевого журнала LiveJournal, имеется на сайте http://www.LJBook.com. Дополните свою консультацию Если вы — консультант, то можете издать книгу, обсуждающую разно- разнообразные проблемы, с которыми приходится сталкиваться в своей деятель- деятельности. Подумайте о ней как о продукте, дополняющем практику. Статус консультанта увеличит книжные продажи, а статус автора поможет расши- расширить практику. Например, разработчики сайта http://www.irwebreport.com используют комбинацию бесплатных сетевых статей, платных сообщений и консультативных услуг для расширения своей области деятельности. Отслеживайте продажи всех своих продуктов для опре- определения рентабельности стратегии продаж. При про- проверке новой стратегии (например, размещении объяв- объявления в одном журнале вместо другого) сравнивайте результаты со своими записями. Освещение семинаров Если ваша специальность — семинары, издайте книгу и продавайте ее студентам, поклонникам и таким же, как и вы специалистам. Книга дополнит семинары. Издавайте книгу как часть большой стратегии продажи своего труда.
ГЛАВА 4 Создание PDF и других изданий Советы № 32-50 Существует много способов создания PDF-файлов: от простого вы- вывода в формате PDF и макрокоманд до средств разработки, встроен- встроенных в различные приложения. Приняв решение о подготовке исход- исходного документа, выберите способ получения именно того, что вы ожидаете. Способы создания PDF-документов обладают различной степенью сложности. Некоторые приложения, в т. ч. от Adobe, позволяют не- непосредственно сохранять файлы в формате PDF. Это не требует серьезного взлома и поэтому здесь не рассмат- рассматривается, но стоит проверить, доступен ли этот простой способ создания PDF-документа в конкретном прило- приложении (например, выбрав команду меню File\Save As\Save As Type: PDF [Файл\Сохранить как\Сохранить как тип: PDF] в Adobe Illustrator). Создание интерактивного PDF-документа с помощью редактора Word (Интерактивные PDF-документы используют информацию источника для создания возможностей навигации типа закладок и гиперссылок.) Заголовки документа можно превратить в схему PDF-закладок, а ссылки — в оперативные ссылки документа в формате PDF. Добавле- Добавление этих функций (см. рисунок 4-1), гарантирует удобство при чтении. При создании интерактивного PDF-документа из исходного необ- необходимо использовать инструментальных PDF-средства, которые по- понимают стили вашего документа [Совет № 24]. Такие средства обычно интегрируются с текстовым процессором.
В Mac OS X вы можете выполнить команду Save As PDF (Сохранить как PDF) [Совет № 40] из любого приложе- приложения. Это быстрый способ получения PDF-документа, но он не создает такие навигационные возможности, как методы, описанные ниже. Рис. 4-1. Автоматическое добавление функций навигации к PDF-документу Microsoft Word и макрокоманда PDFMaker из Adobe Acrobat При инсталляции Adobe Acrobat можно установить макрокоман- макрокоманду PDFMaker для Word, которая добавляет к его меню пункт Adobe PDF (в Acrobat 6) или Acrobat (в Acrobat 5), а также панель инстру- инструментов с кнопками управления. Выберите команду Adobe PDF\Convert to Adobe PDF (Преобразовать в формат PDF для Adobe) или нажмите на панели инструментов кнопку с логотипом Adobe, чтобы создать PDF-документ. На компьютерах Macintosh программа Acrobat устанавливает только панель инструментов без дополнительных меню. В Windows сконфигурируйте PDFMaker командой меню редактора Word Adobe PDF\Change Conversion Settings (Изменить параметры на-
стройки конвертирования). Раскрывающийся список параметров на- настройки конвертирования позволяет выбрать профиль программы Distiller [Совет № 38] таким, как при выводе PDF-документа. Другие вкладки позволяют добавить шифрование, ссылки, метаданные, за- закладки. Опция, которую лучше отключить: Enable Accessibility and Reflow with Tagged PDF (Разрешить доступность и переформатирование тэги- рованных PDF-документов) в Acrobat 6 или Reflow with Tagged PDF (Переформатирование тэгированных PDF-документов) в Acrobat 5. Она позволяет PDF-документу вести себя подобно HTML-документу, но может удваивать размер файла PDF-документа. Лучший вариант — распространять HTML-версию [Совет № 35] совместно с PDF-версией документа. При создании PDF-документа с помощью PDF-Maker и пользовательским размером страницы ссылки могут не совпадать с указываемым местом на странице. Что- Чтобы избежать этого, воспользуйтесь стандартным разме- размером страницы с большими полями. Создайте PDF-до- PDF-документ, а затем обрежьте его [Совет № 59] до нужного размера в программе Acrobat. С решениями, предлагаемыми Adobe для устранения несовпадения ссылок в PDF-документе, можно озна- ознакомиться на веб-странице http://www.adobe.com/sup- port/techdocs/19702.htm. Microsoft Word и GhostWord в Windows GhostWord — это интерфейс Ghostscript, который интегрируется с текстовым редактором Word и добавляет к его панели инструментов кнопку, запускающую интерфейс GhostWord GUI, показанный на рисунке 4-2. С помощью GUI (Графический интерфейс пользователя) активный документ Word можно конвертировать в полнофункцио- полнофункциональный PDF-документ. GUI может работать и вне редактора Word. GhostWord может также выполняться из командной строки. GhostWord может добавлять закладки, ссылки, метаданные и пара- параметры настройки документа в формате PDF, а также управлять его Ghostscript-параметрами настройки. Откройте командой Optimize PDF for: (Оптимизировать PDF-документ для:) список Document (Документ) и выберите закодированный Ghostscript-профиль или по- получите доступ к Ghostscript-параметрам настройки из вкладки Converter Settings (Параметры настройки конвертирования). Сохра- Сохраните эти параметры в файле конфигурации для последующего ис- использования.
Рис. 4-2. Управление параметрами настройки PDF-функций и параметрами создания PDF-документов из GhostWord GUI GhostWord распространяется бесплатно с веб-страницы http://www.et. dtu. dk/software/ghostword/ GhostWord наряду с макрокомандами Gs4Word, PDF Tweaker и extendedPDF требует Ghostscript — бесплат- бесплатной программы, которая работает аналогично Adobe Distiller. Об установке Ghostscript см. раздел «Печать PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39]. Microsoft Word и Gs4Word в Windows Gs4Word — макрокоманда Word для связи с Ghostscript. Она добав- добавляет к Word пункт меню PDF и кнопку к панели инструментов. Макро- Макрокоманда создает закладки, метаданные и определяет вид PDF-доку- PDF-документа. С помощью команды меню PDF\Configure\PDF File\Output Medium (Конфигурирование\РОР-файл\Среда вывода) откройте диа- диалоговое окно конфигурирования и установите желаемый профиль.
Домашняя страница Gs4Word (http://www.schmitz-huebsch.net/gs4word/) представлена на немецком языке, но можно сконфигурировать интер- интерфейс программы для использования английского языка. StarOffice, OpenOffice и extendedPDF от Sun Последние версии OpenOffice могут создавать PDF-документы не- непосредственно из исходного документа с помощью команды File\Export (Файл\Экспорт). Однако в выходном документе отсутству- отсутствуют интерактивные функции. Чтобы создавать PDF-документы с за- закладками, метаданными и гиперсвязями, необходимо использовать макрокоманду extendedPDF в комбинации с программами Ghostscript или Distiller. Для получения дополнительной информации о макрокоманде extendedPDF посетите веб-страницу http://www.jdisoftware.co.uk/pages/ epdf-home.php. Corel WordPerfect и PDF Tweaker Новые версии Corel WordPerfect позволяют командой меню File\Publish To\PDF (ФашДИздать b\PDF) добавить интерактивные функции к PDF-документу. Можно использовать макрокоманду PDF Tweaker для программы WordPerfect, которая также добавляет ссылки и закладки к исходному документу. Кроме макрокоманды PDF Tweaker, нужно иметь программы Acrobat Distiller или Ghostscript, т. к. она фактически не создает PDF-документ, а только добавляет про- программу pdfmarks к заданию на вывод. Для получения дополнительной информации о PDF Tweaker посе- посетите веб-страницу http://www.wpuniverse.com/vb/showthread.php? threa- did=6136. Создание экранного издания с помощью Word (Изменение параметров настройки для создания страницы с двумя колонками, ориентированной на экранное отображение.) Большинство документов сконфигурировано, чтобы выводить стра- страницы с вертикальной книжной ориентацией. Все же компьютерные экраны имеют горизонтальную ориентацию. Приспособьте экранное отображение к печатному виду, размещая документ в две колонки на альбомно-ориентированных страницах, как показано на рисунке 4-3. К сожалению, PDFMaker из программы Acrobat не может создавать точ- точные закладки и гиперссылки в таком документе.
Рис. 4-3. Альбомная ориентация удобнее для экранного чтения Microsoft Word 2002 Командой меню File\Page Setup\ (Файл\Параметры станицы) от- откройте диалоговое окно Page Setup и выберите вкладку Margins (Поля). Установите значение Apply To: (Применить к:) — Whole Document (Весь документ), значение поля Multiple Pages: (Несколько страниц) — 2 Pages per Sheet (Две страницы на лист), а значение Orientation (Ори- (Ориентация) — Landscape (Альбомная). Установите поля страницы: Тор: 0.75 inch Bottom: 0.75 inch Outside: 0.50 inch Inside: 0.50 inch На вкладке Paper (Бумага) установите значение Paper Size: (Размер бумаги) в Letter (8.5 х 11 дюймов). На вкладке Layout (Расположение) установите значения Header (Верхний колонтитул) и Footer (Нижний колонтитул) равными 0,40 дюйма. Нажмите ОК, чтобы сохранить но- новые параметры настройки страницы. Предварительный просмотр документа позволяет видеть только од- одну половину сдвоенной страницы. Выведите документ в формате PDF и посмотрите результат.
Microsoft Word 2000 Командой меню File\Page Setup\ (Файл\Параметры станицы) открой- откройте диалоговое окно Page Setup и выберите вкладку Margins (Поля). Уста- Установите значение Apply To: (Применить к:) — Whole Document (Весь до- документ). В переключателе Pages per Sheet (Страниц на лист) установите значение 2, значения Header (Верхний колонтитул) и Footer (Нижний колонтитул) равными 0.40 дюйма. Установите поля страницы: Тор: 0.75 inch Bottom: 0.75 inch Outside: 0.50 inch Inside: 0.50 inch На вкладке Paper Size (Размер бумаги) установите значение Paper Size: в Letter, a Orientation (Ориентация) в Landscape (Альбомная). На- Нажмите OK, чтобы сохранить новые параметры настройки станицы. Предварительный просмотр документа позволяет видеть только од- одну половину сдвоенной страницы. Выведите документ в формате PDF и посмотрите результат. Microsoft Word:Mac v. X (или любое Mac-приложение) В Macintosh не требуется изменять параметры страницы Word, пото- потому что операционная система предлагает целый диапазон размещения страниц на одном листе в области Layout (Размещение) диалогового окна Print (Печать). Отформатируйте документ как обычно, а потом выведите его в формате PDF, выбрав опцию Layout. Можно выбрать размещение от 1 до 16 страниц на лист, хотя значение 2 является, веро- вероятно, оптимальным, если нужна экранная версия. К сожалению, документ не будет иметь интерактивных функций, которые обеспечивает PDFMaker. Многоцелевой PDF-документ (Предоставьте читателям несколько версий в одном пакете, не размечая свой PDF-документ тэгами.) Формат PDF делает документ переносимым, собрав все его ресурсы в четкий, отдельный пакет. Поскольку люди хотят большего числа воз- возможностей, PDF-документ содержит много дополнительных функ- функций. Попытка сделать файл универсальным приводит к тому, что он становится большим и неуправляемым. Его переносимость страдает. Фирма Adobe добавила информационно-ориентированный XML- уровень к интерактивным функциям PDF-документа. Результат — от- отдельный файл, который можно использовать для различных целей, на- например, для вывода на бумагу, портативного чтения и точного
извлечения данных. Однако создание этих размеченных тэгами PDF-до- PDF-документов — медленный и дорогой процесс. Уровень данных переплета- переплетается с уровнем представления, поэтому доступ к данным затруднен. Следовательно, читатели имеют немного вариантов использования этих данных. PDF-файл, отмеченный тэгами, может вырасти вдвое по сравнению с его неотмеченной копией. Лучше создавать отдельные версии для каждой цели. Это намного проще для читателей и технологического процесса. Не пытайтесь за- заставить одну версию делать все и для всех читателей. Средства разработки и никаких правил Учитывая вышесказанное, иногда имеет смысл распространять мно- многочисленные версии в виде единственного PDF-документа. Например, можно использовать особенности PDF-документа, такие как шифро- шифрование или цифровые подписи, во всех версиях. Вместо того чтобы раз- размечать тэгами PDF-документ, используйте альтернативные версии в качестве вложений [Совет № 54]. Кандидатами на вложения являются HTML-версия [Совет № 36], табличные данные документа [Совет № 55], портативная версия [Совет № 36] или исходный документ. Концепция различных вложений для различных целей дает читате- читателям больше возможностей, чем единственный PDF-документ. Они немедленно поймут выгоды от каждой альтернативной версии. «HTML-версия» означает переформатирование текста, простое из- извлечение данных и простое преобразование текста в речь. Слова «От- «Отмеченный тэгами PDF-документ» мало говорят большинству людей, поэтому можно добавить: «... который иногда ведет себя подобно HTML-документу». Создание HTML-издания с помощью редактора Word (Предложите читателям PDF и HTML-версии своей работы, и они полюбят вас.) PDF-документ — это идеальная среда для того, чтобы сохранить вид документа. HTML-документ — это наилучший выбор для распро- распространения содержимого документа. Исходный документ может дать вам обе версии (см. рисунок 4-4), что является еще одной причиной бе- бережного отношения к нему [Совет № 24]. Предложите несколько вер- версий своей работы, и читатели полюбят вас. А почему бы и нет? Это до- довольно просто.
Рис. 4-4. Различные версии для различного применения — позвольте читателю решать PDF-документ имеет новейшие возможности разметки тэгами дан- данных и может вести себя подобно HTML-документу. Однако это грозит удвоением размера файла. Кроме того, только немногие программы мо- могут использовать отмеченные данные вне PDF-документа. Вместо раз- разметки тэгами используйте альтернативные версии или исходный доку- документ в виде вложений к документу в формате PDF [Совет № 54]. Создание HTML-версии в Microsoft Word 2002 и 2003 Программы Word 2002 и 2003 позволяют сохранить документ как веб-страницу или фильтрованную веб-страницу. Веб-страница редакто-
pa Word содержит дополнительную информацию о документе на слу- случай, если потребуется его позже отредактировать. Фильтрованная веб- вебстраница опускает эту дополнительную информацию и больше подхо- подходит для распространения. 1. Если в исходном документе сделаны изменения, сохраните их ко- командой File\Save (ФашДСохранить), иначе они будут утрачены. 2. Выберите в меню File (Файл) пункт Save As (Сохранить как). 3. В раскрывающемся списке Save as type (Сохранить как тип) вы- выберите Web Page Filtered (Веб-страница с фильтром). 4. Откроется диалоговое окно, предупреждая, что этот формат не содержит специальных тэгов редактора Word. Подтвердите, что это приемлемо, нажав Yes (Да). 5. Побочный эффект операции Save As (Сохранить как) — невоз- невозможность редактировать исходный документ в редакторе Word. Вместо него будет редактироваться только что созданный фильт- фильтрованный HTML-документ. Закройте его, потому что редакти- редактировать нужно источник. Настройте параметры вывода HTML-документа, выбирая команду Tools\Options\General\Web Options (Сервис\Параметры\Общие\Па- раметры сети). Например, допустите текстовое моделирование в фор- формате HTML 3.2 отключением опции Rely on CSS (Доверять CSS) в Font Formatting (Форматирование шрифта). Создание HTML-версии в Microsoft Word 2000 Word 2000 не имеет встроенной опции Save As Filtered Web Page (Со- (Сохранить как веб-страницу с фильтром), поэтому необходимо загрузить и установить компонент Office 2000 HTML Filter 2.0 от Microsoft: http://www.microsoft.com/downloads/details.aspx ?FamilyID=209ADBEE- 3FBD-482C-83B0-96FB79B74DED Он добавляет к Word 2000 возможность Export to Compact HTML (Экспортировать в виде компактного HTML-документа), а также включает автономную программу фильтрации специальных тэгов Word из существующего HTML-документа. Выберите команду меню File\Export To\Compact HTML (Файл\ Экспортировать в\Компактный HTML-документ). После создания HTML-документа исходный документ остается открытым в редакторе Word (в отличие от использования опции Save As в Word 2002, как от- отмечалось выше). Настройте параметры вывода в формате HTML, выбрав команду Tools\Options\General\Web Options (Сервис\Параметры\Общие\Пара- метры сети). Например, допустите текстовое моделирование в формате
HTML 3.2, отключив опцию Rely on CSS (Доверять CSS) в переключа- переключателе Font Formatting (Форматирование шрифта). Создание HTML-версии в Microsoft Word:Mac v. X Редактор Word:Mac не имеет встроенной опции Save As Filtered Web Page (Сохранить как веб-страницу с фильтром), но имеет опцию Save Only Display Information (Сохранить только отображаемую информацию) (команда меню File\Save As Web Page [Файл\Сохранить как веб-страни- веб-страницу]), с помощью которой достигается подобный результат. Кнопка Web Options (Параметры сети) в этом диалоговом окне дает возможность вы- выбора параметров обработки некоторых аспектов создания веб-страниц. Конвертирование документов Word в HTML-документы с помощью wvWare Программа wvWare может конвертировать документы Microsoft Word в несколько форматов, включая формат HTML. Это инструмент командной строки, разработанный для Linux, который был перенесен в Windows. Он является бесплатным программным обеспечением и на- находится на сайте http://wvware.sourceforge.net. Создание HTML-версии в StarOffice и OpenOffice Подобно Word 2002, StarOffice дает возможность сохранить как HTML-документ, но он заменяет открытый в настоящее время исход- исходный документ новым HTML-документом. Закройте его, потому что ре- редактировать можно только источник. Настройте параметры вывода в формате HTML командой меню Tools\Options\Load/Save (Сервис\Параметры\Загрузить/Сохранить) в разделе HTML Compatibility (HTML-совместимость). Я люблю устанав- устанавливать значение HTML Compatibility Export (Экспорт HTML-совмести- HTML-совместимости) как HTML 3.2 при создании материала для портативного чтения. Создание портативного издания из HTML-документа (Поставьте свой контент мобильным пользователям.) PDF-документ — это замечательная вещь, иначе вы, вероятно, не читали бы эту книгу, но бывает так, что он не подходит для работы. Ес- Если вы распространяете информацию для читателей, использующих карманные устройства типа Palm и Pocket PC, то должны обратиться к программным средствам Plucker.
Palm OS читает с помощью Plucker Plucker — это комплект средств для чтения HTML-документов в ус- устройствах Palm OS. Программа Plucker Distiller готовит HTML-доку- HTML-документ и упаковывает его в файл Palm PDB. Plucker Desktop — это графи- графический интерфейс для управления программой Distiller. Plucker Viewer (см. рисунок 4-5), представляет Plucker-документы в удобном для чтения виде. Desktop и Distiller выполняются на хост-машине, в то время как Viewer выполняется на компьютере Palm. Комплект Plucker является бесплатным программным обеспечением. Рис. 4-5. Портативное представление документа Посетите сайт http://www.plkr.org и загрузите инсталлятор Plucker Desktop для своей платформы. Запустите его и распакуйте все компо- компоненты. Введите информацию о своем Palm-устройстве, но не обяза- обязательно оставаться в рамках стандартных параметров настройки. Позже их можно откорректировать.
Если Plucker Desktop регулярно сообщает, что регион не может быть установлен, выберите команду Options\ Preferences\Interface (Параметры\Настройка\Интерфейс) и отключите опцию Translate Interface into the local lan- language (Перевести интерфейс на местный язык). Plucker Desktop организовывает местные файлы и удаленные веб-стра- веб-страницы в каналы. Чтобы создать канал для своего HTML-файла, перетащи- перетащите его в Plucker Desktop. После присвоения новому каналу имени откроет- откроется его окно конфигурирования. Вот несколько элементов этого окна. Limits (Ограничения) Чтобы конвертировать стандартный документ, увеличьте значение Maximum Depth (Максимальная глубина), гарантирующее, что все ссылки будут работать правильно. Выберите Stay on Host (Оставать- (Оставаться на хосте), чтобы воспрепятствовать программе Plucker следовать за любыми ссылками интернета. Images (Изображения) Изображения увеличивают размер файла. Настройте их параметры, чтобы они соответствовали требованиям документа. С помощью опции Advanced Image Handling (Дополнительная обра- обработка изображений) установите максимальные размеры эскизов изображений. Любое большее изображение подгоняется под указан- указанный размер. Эскизы отображаются встроенными в документ и могут содержать ссылку на большее изображение. Оригинальный стандартный дисплей Palm OS имеет размер 160x160, поэтому эскизы на этих моделях не должны быть шире, чем 150 пикселей (чтобы оставить место для полосы прокрутки). Более новый дисплей с высоким разрешением имеет размер 320x320, вмещающий эскиз в 300 пикселей шириной. Использо- Использование ширины в 150 пикселей гарантирует, что изображения бу- будут полностью видимы на всех устройствах Palm OS. Средство просмотра обрезает слишком широкие эскизы, чтобы они соот- соответствовали размеру экрана. Если необходима точность, исполь- используйте другие параметры настройки из этого окна, чтобы связать эскиз с большим изображением, которое пользователь может па- панорамировать. Устройства Palm OS с высоким разрешением должны использовать другие версии средств просмотра и биб- библиотеку SysZLib.
Output Options (Параметры вывода) ZLib-сжатие намного эффективнее DOC-сжатия. Чтобы читать ZLib-сжатые документы, необходимо использовать операционную систему Palm OS 3 или более новую (OS 3 появилась в 1998 г. на Palm III) и иметь библиотеку SysZLib, которая поставляется вместе с Plucker Desktop. Destination (Адресат) Определяет местоположение выводимого документа. Создайте Plucker-документ, выбирая канал, а затем — команду Update\Update Selected Channels (Модифицировать\Модифициро- вать выбранные каналы). Предварительно просмотрите свои Plucker-документы на PC, установив программу Palm OS 5 Simulator, которую можно загрузить с веб-страницы http://www.palmos.com/ dev/tools/simulator/. Для получения хороших результатов ввод должен использовать HTML 3.2-тэги текстового моделирования (например, <font>) вместо моделирования CSS. В разделе «Создание HTML-издания с помощью ре- редактора Word» [Совет № 35] обсуждается настройка текстового процес- процессора для вывода в формате HTML 3.2. Plucker для Pocket PC В настоящее время программа чтения Plucker-файлов для Pocket PC находится в разработке на сайте http://vade-mecum.sourceforge.net. Microsoft предоставляет эмулятор Pocket PC, который можно исполь- использовать для тестирования. Загрузите Embedded Visual Tools (Внедренные визуальные средства (EVT)) с веб-страницы: http://www.microsoft.com/downloads/details.aspx?FamilyId=F663BF48- 31EE-4CBE-AAC5-OAFFD5FB27DD При установке EVT используйте следующий ключ компакт-диска, который указан в документации: TRT7H-KD36T-FRH8D-6QH8P-VFJHQ Выберите установку Pocket PC SDK или выполните программу уста- установки PocketPC_2002_SDK.exe (которая была распакована инсталлято- инсталлятором EVT). Запустите эмулятор, выполняя файл CEFILEVW.EXE и от- открывая подключение.
Конвертирование документов в формат PDF с помощью имеющихся средств (Даже при отсутствии средств разработки документа его можно конвертировать в PDF-файл.) При широком разнообразии средств разработки очень просто ока- оказаться с документом в руках, который нельзя открыть и прочитать. Вот некоторые доступные средства просмотра документов. Откройте свой проблемный документ, а затем выведите его в формате PDF. Средства просмотра Microsoft Office Microsoft обеспечивает свободно распространяемые средства просмотра документов на базе Windows для своего офисного набо- набора программ. Загрузите необходимое средство просмотра с веб- вебстраницы: http://office.microsoft.com/assistance/ preview.aspx?AssetID=HAO10449811033 Установите его, откройте свой документ, а затем выведите его в Acrobat Distiller. Если у вас нет программы Acrobat, используйте вмес- вместо этого программу GS Pdf Printer [Совет № 39]. OpenOffice (http://www.openoffice.org) — это бесплатный набор про- программ, который может открывать файлы различных форматов, вклю- включая Microsoft Word, Excel и PowerPoint. Он также включает встроенную PDF-опцию Export (Экспорт). Используйте ее, чтобы конвертировать Microsoft Office-файлы в формат PDF. Средство просмотра Corel WordPerfect Средство просмотра Microsoft Word Viewer, упоминавшееся ранее, может также открывать файлы программы WordPerfect, но сначала нужно установить Microsoft Office Converter Pack (Пакет конвертиро- конвертирования Microsoft Office). Загрузите Office 2003 Resource Kit (Комплект ресурсов Office 2003) (ork.exe) с веб-страницы http://www.microsoft.com/office/ork/2003/tools/ BoxA07.htm. Установите ork.exe и он распакует Microsoft Office Converter Pack (oconvpck.exe). В то время как ork.exe не выполняется в Windows 98, oconvpck.exe — выполняется. Найдите на своем диске файл oconvpck.exe и установите его. После установки Office Converter Pack (Пакет конвертирования Office) диалоговое окно Open (Открыть) средства просмотра Word Viewer все еще не будет видеть WPD-файлы программы WordPerfect.
Перетащите их, введите полное имя или замените расширение файлов WPD на DOC. Как только файл откроется, выведите документ в Acrobat Distiller или в GS PDF Printer [Совет № 39]. Сетевое преобразование Фирма Adobe предлагает услуги сетевой службы по созданию доку- документов в формате PDF из исходных документов. Она принимает доку- документы Microsoft Office и Corel WordPerfect, а также файлы программ Adobe Illustrator, InDesign, FrameMaker, PageMaker и Photoshop. Посе- Посетите сайт https://createpdf.adobe.com для получения дополнительной ин- информации. Acrobat Distiller и его профили (Выберите наилучший профиль программы Distiller для своих целей.) Программа Distiller от Adobe — это механизм создания документа в формате PDF при помощи опции Print to PDF (Вывод в PDF) для Acrobat или макрокоманды PDFMaker для Word. Создать наиболее подходящий для ваших целей PDF-документ можно, сконфигури- сконфигурировав Distiller. Выбор обычно осуществляется между качеством до- документа и размером файла. Параметры конфигурации Distiller поз- позволяют создать необходимый документ. При распространении PDF-документа в электронном виде главным становится размер фай- файла, в других случаях — качество. Изменение профиля Distiller Acrobat Distiller поставляется с несколькими предварительно скон- сконфигурированными профилями, которые называются параметрами на- настройки или файлами joboptions (рабочие параметры). При выводе в формате PDF можно измените эти параметры, щелкнув на кнопке Properties (Свойства) в диалоговом окне Print (Печать) в Windows или выбрав PDF Options (Параметры PDF) из раскрывающегося списка, который запускает опцию Copies & Pages (Копии и страницы) в Мае. Выберите на вкладке PDF Settings (Настройки PDF) профиль Distiller во всплывающем меню Default Settings: (Настройки по умолчанию:) в Acrobat 6 или Conversion Settings: (Настройки конвертирования:) в Acrobat 5. Чтобы изменить заданный по умолчанию профиль, посмот- посмотрите свойства вывода Adobe PDF в Acrobat 6 или Acrobat Distiller в Acrobat 5.
При использовании PDFMaker в Windows можно изменить параме- параметры настройки в редакторе Word, выбирая команду Adobe PDF\Change Conversion Settings (Изменить настройки конвертирования) в Acrobat 6 или Acrobat\Change Conversion Settings (Изменить настройки конвер- конвертирования) в Acrobat 5. Этот выбор (см. рисунок 4-6) становится значени- значением по умолчанию. Рис. 4-6. Настройки программы Distiller, использующиеся при создании PDF-документов в Acrobat. При создании PDF-документа для типографии или сервисного бюро попросите у них файл joboptions. В Windows поместите его в папку Settings (Настройки) программы Distiller, которая расположе- расположена в каталоге C:\Program Files\Adobe\Acrobat 5.0\Distillr\Settings\. В Macintosh откройте программу Distiller и командой меню меню Settings\Add Adobe PDF Settings (Настройки\Добавить настройки Adobe PDF) добавьте его в список. Затем выберите профиль типо- типографии при сервисного бюро для создания PDF-документа, как описано ранее. Сохраняйте профили программы Distiller В таблицах 4-1 и 4-2 представлены основные параметры профилей, которые имеют наибольшее влияние на PDF-документ.
Табл. 4-1. Профили Acrobat 6 Distiller Smallest Standard High Quality File Size and Press Quality (Наименьший (Стандартный) (Высокое качество размер Файла) и качество для типографской печати) Разрешение цветного 100 150 300 изображения (dpi) Разрешение серого 150 150 300 изображения (dpi) Разрешение 300 300 1200 моноизображения (dpi) Точность Низкая Средняя Средняя сжатого изображения Внедренные шрифты Нет (а) Все (а) Внедрены все шрифты, кроме шрифтов Basel 4 и следующих шрифтов Windows: Century Gothic, Georgia, Impact, Lucida Console, Tahoma, Trebuchet и Verdana. Табл. 4-2. Профили Acrobat 5 Distiller Screen eBook Print Press (Экран) (Электронные (Печать) (Типографская книги) печать) Разрешение цветного 72 150 300 300 изображения (dpi) Разрешение серого 72 150 300 300 изображения (dpi) Разрешение 300 300 1200 1200 моноизображения (dpi) Точность сжатого Средняя Средняя Высокая Максимальная изображения Внедренные шрифты Нет Все, кроме Все Все Base 14 Изображение в 150 точек на дюйм является оптимальным для печа- печати на черно-белом лазерном или струйном принтере с разрешением 600 точек на дюйм. Так, профиль Standard (Стандартный) (в Acrobat 6) подходит для большинства целей. Цветные принтеры могут использо- использовать более высокие разрешающие способности изображения. Посети- Посетите веб-страницу http://www.scantips.com/basicsO3.html для получения до- дополнительной информации. В Acrobat 5 профиль eBook подходит для большинства целей, он по- похож на профиль Standard. При обработке документа, содержащего главным об- образом изображения с экрана, используйте фильтр ZIP-
сжатия изображения вместо JPEG. В Distiller 5 можно применяйте настройки на 8 бит и на 4 бита. Это дает не только сильное сжатие, но и качественное изображе- изображения. В разделе «Конфигурирование Distiller и Ghostscript» [Совет № 42] рассказывается о настройке этих программ. Параметры сжатия находятся на вкладке Images (Изображения) в Acrobat 6 или вкладке Compression (Сжатие) в Acrobat 5. При загрузке файлов из сети или получении их по электронной поч- почте использование профилей Smallest File Size в Acrobat 6 или Screen в Acrobat 5 обеспечивает быструю загрузку при низкой пропускной спо- способности сети. Но для распечатки файлов на принтере лучше исполь- использовать профиль Press Quality, который соответствует самому высокому качеству PDF-документа. Печать PDF-документов в Windows с помощью Ghostscript и RedMon (Сделайте путь к PDF-документу удобным.) Любая программа, осуществляющая печать, может создавать PDF- документы. Adobe Acrobat является стандартом для их создания, но он слишком дорог. Ghostscript — это бесплатный интерпретатор языка PostScript, создающий PDF-документы, подобно программе Distiller из Acrobat. Используйте программу RedMon, чтобы объединить возмож- возможности Ghostscript с возможностям Windows-принтера для получения опции Вывод в формате PDF! Для упакованного инсталлятора Ghostscript/RedMon ис- используйте программы PDFCreator (http://sourceforge.net/ projects/pdfcreator/) или PrimoPDF (http://www.primopdf.com). Загрузка и установка Ghostscript Домашней страницей Ghostscript является http://www.cs.wisc.edu/~ghost/. Текущая версия AFPL Ghostscript — 8.14. Загрузите и запустите инсталля- инсталлятор gs814w32.exe. Предполагается, что программа Ghostscript установлена в заданном по умолчанию каталоге C:\gs\. Если вам понадобится повтор- повторная установка Ghostscript, сначала удалите его с помощью диалогового ок- окна Add or Remove Programs (Добавить или удалить программы) в Control Panel (Панель управления) Windows.
Загрузка и установка RedMon Домашняя страница RedMon — http://www.cs.wisc.edu/-ghost/redmon/. В настоящее время текущей версией RedMon является версия 1.7. За- Загрузите соответствующий zip-файл redmonl7.zip в новый каталог под названием redmonll7. Разархивируйте его и дважды щелкните на файле setup.exe, чтобы установить программу. Загрузка и распаковка Virtual Printer Kit Virtual Printer Kit (Комплект виртуального принтера, VPK) для кни- книги «Взлом PDF» содержит файлы драйвера принтера, PPD-файлы и ти- типовые файлы конфигурации. Загрузите этот комплект с веб-страницы http://www.pdfhacks.com/virtual_printer/. Разархивируйте его в удобный каталог и обратите внимание на его содержимое. Мы будем обращать- обращаться к нему по мере необходимости. Читайте файл README, т. к. он мо- может содержать изменения команд. Можно загрузить PostScript-инсталлятор драйверов для Windows с сайта Adobe. Однако лицензия предполагает его совместное использование только вместе с другими программами Adobe, такими как PostScript Printer. Изучи- Изучите эту лицензию. Если она удовлетворяет вас, то загрузите его (в настоящее время — версия 1.0.6) с веб-страницы http://www. adobe, com/support/'downloads/product.jsp ?product— 44&platform=Windows. Для создания GS Pdf Printer используйте описание принтера ADIST5.PPD из Virtual Printer Kit. Остальная часть этого метода взлома разделена на платформы: Windows ХР или Windows 2000, и Windows 98. Установка и конфигурирование PDF-принтера в Windows XP, 2000 У вас уже должны быть установлены программы Ghostscript, RedMon и Virtual Printer Kit (Комплект виртуального принтера). Оста- Остается установить и сконфигурировать PDF-принтер. Установка Virtual PostScript Printer. Многие PostScript-принтеры мо- могут использовать тот же самый основной PS-драйвер. Чтобы создать за- законченный драйвер принтера, необходимо скомбинировать это ядро с PPD-файлом принтера, который подробно описывает его возможности. Windows XP поставляется с основным PS-драйвером. Драйвер Virtual PostScript Printer — это просто INF-файл, инструктирующий Windows
по процедуре объединения ядра со свободно распространяемым PPD- файлом от Adobe, который описывает принтер для Acrobat 5 Distiller. Результат — принтер, почти готовый к созданию PDF-документа. 1. Командой меню Start\Settings\Printers and Faxes\Add a Printer (Пуск\ Настройки\Принтеры и Факсы\Установка принтера) откройте мас- мастер установки. Щелкните на кнопке Next (Дальше) для его запуска. 2. Выберите Local Printer (Локальный принтер), отключите Automa- Automatically Detect (Автоматическое определение) и нажмите Next. 3. Выберите Create a New Port (Создать новый порт) и в раскрыва- раскрывающемся списке — Redirected Port (Переадресовываемый порт). Нажмите Next. Диалоговое окно запросит имя порта. Введите RPTPDF: и нажмите ОК. При установке программы RedMon это создает опцию Redirected Port (Переадресовываемый порт). 4. Мастер предложит список принтеров и изготовителей. Выберите Have Disk (Есть диск), а затем Browse (Просмотреть), перемести- переместитесь в каталог driver\WinXP\ в Virtual Printer Kit (Комплект вирту- виртуального принтера), откройте файл adist5gs.infn нажмите ОК. Ма- Мастер должен отобразить только один принтер — Virtual PostScript Printer. Выберите его, как показано на рисунке 4-7. Диалоговое ок- окно может сообщить, что этот драйвер принтера не зарегистриро- зарегистрирован. Нажмите Next. Рис. 4- 7. Драйвер Virtual PostScript Printer, соответствующий профилю принтера PDF printer в Acrobat.
5. При сообщении мастера, что драйвер для этого принтера уже ус- установлен, выберите Keep Existing Driver (Использовать сущест- существующий драйвер) и нажмите Next. 6. Присвойте принтеру имя GS Pdf Printer и выберите No default printer (Нет принтера по умолчанию). Нажмите Next. 7. Выберите No (Нет), чтобы воспрепятствовать печати тестовой страницы, и нажмите Next. 8. Нажмите Finish (Готово), чтобы завершить установку. Может по- появиться сообщение, что драйвер не сертифицирован Windows. Подтвердите установку. Принтер GS Pdf Printer должен появиться в папке Printers and Faxes (Принтеры и факсы). Конфигурирование переадресовываемого порта RedMon для PDF-вы- PDF-вывода. Теперь свяжите этот принтер с программой Ghostscript, конфигу- конфигурируя созданный переадресовываемый порт RPTPDF: 1. Щелкните правой кнопкой мыши на принтере GS Pdf Printer, выбери- выберите в контекстном меню Properties (Свойства), а затем вкладку Ports (Порты). 2. Убедитесь, что переключатель Enable bidirectional support (Разре- (Разрешить двунаправленную поддержку) отключен. 3. Выделите только что созданный переадресовываемый порт RPT- RPTPDF: и щелкните Configure Port (Сконфигурировать порт). 4. Установите свойства порта, как показано в таблице 4-3, изменяя пу- пути в соответствии со своими настройками. Будьте внимательны, чтобы не пропустить отдельный дефис в конце параметров программы. Табл. 4-3. Свойства порта в RedMon Переадресовать этот порт программе: C:\gs\gs8.14\bin\gswin32c.exe Параметры для этой программы: -sOutputFile="%l" @ C:\gs\pdf_printer.cfg Вывод: Подсказка для имени файла Выполнение: Минимальное 5. Щелкните на кнопке Log File (Журнал), чтобы сконфигурировать Log File Properties (Свойства журнала). Выберите Use Log File (Исполь- (Использовать журнал) и введите регистрационное имя файла, например, C:\gs\pdf_printer.log. Не включайте Debug (Отладка). 6. Нажмите ОК и закройте окно Log File Properties. Нажмите OK, чтобы подтвердить новые параметры настройки порта. Нажмите Close (Закрыть), чтобы подтвердить новые параметры настройки принтера (см. рисунок 4-8) и закрыть диалоговое окно Properties (Свойства) для GS Pdf Printer.
Рис. 4-8. Программа RedMon передает PostScript-сценарий, созданный драйвером принтера, программе Ghostscript. Чтобы завершить конфигурирование порта, создайте файл C:\gs\pdf_ printer.cfg, упомянутый ранее. Это текстовый файл дополнительных па- параметров, который передается в Ghostscript. Пример использует Virtual Printer Kit (Комплект виртуального принтера). Измените пути, чтобы они соответствовали программе Ghostscript и системным установкам. -dSAFER -dBATCH -dNOPAUSE -Ic:\gs\gs8.14\Resource -Ic:\gs\fonts -Ic:\gs\gs8.14\lib -sFONTPATH=c:\WINDOWS\FONTS -sDEVICE=pdfwrite -rl200 -c save pop Чтобы проверить его, перейдите к разделу «Проверка принтера GS Pdf Printer», который расположен далее в описании этого метода взлома. Установка и конфигурирование PDF-принтера в Windows 98 У вас уже должны быть установлены программы Ghostscript, RedMon и Virtual Printer Kit. Остается установить и сконфигурировать PDF-принтер.
Установка Virtual PostScript Printer. Многие PostScript-принтеры ис- используют основной PS-драйвер. Чтобы создать законченный драйвер принтера, скомбинируйте это ядро с PPD-файлом принтера, подробно описывающим его возможности. Проблемы возникают, когда нам требуется PS-ядро последних вер- версий. Найдите на своем жестком диске файл adobeps4.drv, чтобы опреде- определить, установлено ли новое PS-ядро. Если оно есть, то все в порядке. В противном случае существуют две возможности. Один из вариантов — это использовать PostScript-инсталлятор драй- драйвера от Adobe, как было описано ранее. Однако лицензия ограничива- ограничивает это. Другим вариантом является загрузка от производителя драйвера принтера, содержащего все нужные файлы и использующего разреша- разрешающую лицензию. Для этого загрузите драйвер принтера Phaser 550 (версия драйвера 4.52) с сайта http://www.Xerox.com. Это самораспаковывающийся исполняе- исполняемый файл win9xadb.exe, который помещает все необходимые файлы в строго определенный каталог. Для получения дополнительной инфор- информации о других возможных источниках прочитайте файл readme Virtual Printer Kit. Чтобы гарантировать совместимость драйверов, их необходимо брать из определенного источника, например: ADOBEPS4.DRV ADOBEPS4.HLP ADFONTS.MFM ICONLIB.DLL PSMON.DLL Скопируйте эти файлы в каталог Virtual Printer Kit driver\Win9x\, который уже содержит два компонента: PPD-файл для Virtual PostScript Printer и Windows INF-файл, используемый мастером уста- установки принтеров. 1. Командой меню Start\Settings\Printers and Faxes\Add a Printer (Пуск\Настройки\Принтеры и Факсы\Установка принтера) откройте мастер установки. Нажмите Next (Дальше) для его запуска. 2. Выберите Local Printer (Локальный принтер) и нажмите Next. 3. Мастер предоставит вам список принтеров и изготовителей. Вы- Выберите Have Disk (Установить с диска), а затем Browse (Просмо- (Просмотреть), перейдите в каталог driver\Win9x\ в Virtual Printer Kit и на- нажмите Open (Открыть), а затем ОК. Мастер должен отобразить только один принтер — Virtual PostScript Printer. Выберите его и нажмите Next.
4. При сообщении мастера, что для этого принтера драйвер уже ус- установлен, выберите Replace Existing Driver (Заменить существую- существующий драйвер) и нажмите Next. 5. В окне Available Ports (Доступные порты) выберите FILE: и на- нажмите Next. 6. Присвойте принтеру имя GS Pdf Printer и выберите No default printer (Нет принтера по умолчанию). Нажмите Next. 7. Мастер завершит работу. Если диалоговое окно Version Conflict (Конфликт версий) сообщит, что поверх более новых файлов запи- записываются старые, самое безопасное — оставить новые файлы. Принтер GS Pdf Printer должен теперь появиться в папке Printers and Faxes (Принтеры и факсы). Свяжите его с программой Ghostscript, добавляя и конфигурируя переадресовываемый порт. Добавление и конфигурирование переадресовываемого порта RedMon. Свяжите принтер GS Pdf Printer с программой Ghostscript с помощью переадресовываемого порта RedMon. 1. Щелкните правой кнопкой мыши на значке принтера GS Pdf Printer, выберите в контекстном меню Properties (Свойства), а за- затем — вкладку Details (Подробности). 2. Кнопкой Add Port (Добавить порт) откройте диалоговое окно. На вкладке Other (Другие) выберите Redirected Port (Переадресовы- (Переадресовываемый порт). Нажмите ОК. Присвойте порту имя RPTPDF: и нажмите ОК. 3. На вкладке Details (Подробности) выберите Spool Settings (Наст- (Настройка буферизации). Установите флажок Disable bi-directional support for this printer (Отключить двунаправленную поддержку этого принтера) и нажмите ОК. 4. На этой же вкладке выберите Port Settings (Настойки порта) как показано в таблице 4-4, изменяя пути для соответствия про- программы Ghostscript вашей настройке. Будьте внимательны, чтобы не пропустить отдельный дефис в конце параметров программы. Табл. 4-4. Свойства порта RedMon Переадресовать этот порт программе: C:\gs\gs8.14\bin\gswin32c.exe Параметры для этой программы: -sOutputFile="%l" @ "C:\gs\pdf_printer.cfg" Вывод: Подсказка для имени файла Выполнение: Минимальное
5. Щелкните на кнопке Log File (Журнал), чтобы сконфигурировать Log File Properties (Свойства журнала). Выберите Use Log File (Использовать журнал) и введите регистрационное имя файла, например, C:\gs\j)df_printer.log. He включайте Debug (Отладка). 6. Нажмите ОК, чтобы закрыть окно Log File Properties. 7. Щелкните OK, чтобы принять новые параметры настройки порта. 8. Нажмите ОК, чтобы принять новые параметры настройки принтера и закрыть диалоговое окно Properties для принтера GS Pdf Printer. Чтобы завершить конфигурирование порта, создайте файл pdf_print- er.cfg, упоминавшийся выше. Это текстовый файл дополнительных па- параметров, передаваемых программе Ghostscript. Пример использует Virtual Printer Kit. Измените пути, чтобы они соответствовали настрой- настройкам программы Ghostscript и системным настройкам. -dSAFER -dBATCH -dNOPAUSE -r'c:\gs\gs8.14\Resource" -I"c:\gs\fonts" -I"c:\gs\gs8.14\lib" -sFONTPATH=c:\WINDOWS\FONTS -sDEVICE=pdfwrite -П200 -c save pop Теперь проверьте его работу. Проверка принтера GS Pdf Printer Откройте диалоговое окно свойств принтера GS Pdf Printer, выбери- выберите вкладку General (Общие) и щелкните Print Test Page (Напечатать пробную страницу). После паузы откроется диалоговое окно, в кото- котором нужно ввести имя PDF-файла. Выберите подходящее имя файла и нажмите ОК. Обратите внимание, что выводимый файл будет записан поверх предыдущего, и расширение PDF к имени файла автоматичес- автоматически не добавляется. После окончания вывода откройте PDF-файл в программе Reader. Как он выглядит? Следующие несколько методов взлома рассматрива- рассматривают варианты настройки программы Ghostscript. Если произошла ошибка или PDF-файл не создан, тщательно пере- перепроверьте конфигурацию принтера и посмотрите в журнале: • блокировку двунаправленной печати; • соответствие настройки переадресовываемого порта установлен- установленным ранее; следите за отдельным конечным дефисом в парамет- параметрах программы.
• местоположение файла pdf_printer.cf& соответствие его содержа- содержания прежним данным; • модификацию путей C:\gs\ для отображения местоположения программы Ghostscript. Сохранение PDF-документов в Mac OS X (Создание PDF-документов в любой программе Macintosh OS X.) Фирма Apple встроила команду Save As PDF (Сохранить как PDF- файл) в диалоговое окно Print (Печать) в Macintosh OS X. К сожале- сожалению, она не обеспечивает никаких интерактивных функций и создает большие файлы, но, тем не менее, это быстрое решение для создания PDF-документов. Эта команда доступна в левой нижней части любого диалогового окна Print, как показано на рисунке 4-9. Рис. 4-9. Диалоговое окно Print с командой Save As PDF Нажмите кнопку Save As PDF (Сохранить как PDF-файл), на полу- полученный запрос выберите местоположение файла, нажмите ОК, и Мае выполнит вывод PDF-файла.
Результаты отличаются от полученных с помощью программы Distiller. В начале гл. 1 этой книги Mac OS X создала файл размером 344 Кб, в то время как макрокоманда PDFMaker — размером 144 Кб. Нет никаких очевидных параметров конфигурирования для опции Save As PDF, но при использовании операционной системы Mac OS X 10.3 или более новой можно выбрать параметры настройки на вкладке Filters (Фильтры) окна Preferences (Параметры настройки) утилиты ColorSync, которая находится в каталоге Macintosh HD:Applications:Utilities. Установите переключатель PDF Workflow на вкладке Domains (Домены) и вы сможете изменять PDF-опции из диалогового окна Print (Печать). Совместимость PDF-документов (Различия в версиях формата PDF могут создать проблемы.) При публикации PDF-документа необходимо гарантировать, что он совместим с различными средствами просмотра. Какие средства про- просмотра PDF-документов используют читатели? Предположите, что они, как минимум, обновили их до предыдущей версии программы Acrobat/Reader (или другого совместимого средства просмотра). PDF- документы, созданные с помощью самой новой программы Acrobat, мо- могут быть несовместимы с предыдущими версиями. Немного внимания к этому вопросу может предотвратить неудобства, создаваемые вашим читателям, такие как на рисунке 4-10. Рис. 4-10. Сообщения, которые раздражают читателей Краткий обзор версий формата PDF С каждой новой версией Acrobat фирма Adobe вводит модифициро- модифицированную версию PDF-спецификации. Они идут одна за другой в поряд- порядке, указанном в таблице 4-5.
Табл. 4-5. Информация о версиях Acrobat Версия Acrobat Введена, год Версия PDF 3.0 1996 1.2 4.0 1999 1.3 5.0 2001 1.4 66.0 2003 15 Во многих случаях более старое средство просмотра может читать более новую версию формата PDF (хотя будет жаловаться на это). Его поведение зависит от того, какие новые особенности использу- использует формат PDF. Какие средства просмотра поддерживают более но- новые особенности? Вот некоторые из них. Для получения подробной информации обратитесь к PDF Reference (Справочник по PDF) вер- версии 1.3, 1.4 и 1.5. PDF 1.3 (Acrobat 4), введены: • Цифровые подписи. • Вложения к файлам. • Поддержка JavaScript. • Логическая нумерация страниц. PDF 1.4 (Acrobat 5), введены: • Дополнительная опция 128-битного шифрования. • Дополнительные события, запускаемые с помощью JavaScript (документ закрыт, будет сохранен, был сохранен, будет напеча- напечатан, был напечатан). • Усовершенствованные интерактивные формы. PDF 1.5 (Acrobat 6), введены: • Дополнительные опции сжатия файла. • Дополнительные опции шифрования. Старая версия средства просмотра просто проигнорирует многие вещи, которые она не понимает или не открывает, если не может чи- читать потоки. Если ваш PDF-документ ориентируется на более новый JavaScript-сценарий или формирует какие-то функции, воспрепятствуйте старым средствам просмотра откры- открывать его. Определите минимальную версию формата PDF, которая нужна документу, а затем примените ши- шифрование, используя пустой пароль [Совет № 52]: и ста- старые версии просто не смогут прочитать этот документ.
Создавайте совместимые PDF-документы Программы Distiller или PDFMaker создают PDF-документы, кото- которые совместимы с предыдущей версией Acrobat. Откройте PDF-документ в программе Acrobat, измените его, а затем сохраните, и его версия будет соответствовать текущей версии Acrobat. Она больше не будет совместима с предыдущими версиями Acrobat/Reader. Это не зависит от наличия в PDF-документе новых функций и возможностей. При необходимости установите старые версии Acrobat Reader и проверьте, как будут выглядеть или функциони- функционировать в них PDF-документы. Эти версии можно загрузить с веб-страниц http://www.adobe.com/products/acrobat/ reader_archive.html или http://www.oldversion.com/ program.php ?n =acrobat. Одно из решений состоит в том, чтобы выбрать команду меню File\Reduce File Size\Compatible with: Acrobat 5.0 and later (Файл\Умень- шить размер файла\Совместимость с: Acrobat 5.0 и более новым) и ис- использовать опцию Reduce File Size (Уменьшить размер файла) в Acrobat 6, которая позволяет установить уровень совместимости с итоговым PDF- документом. Другое решение состоит в том, чтобы использовать воз- возможности PDF Optimizer (PDF-оптимизатор), выбрав команду Advanced\PDF Optimizer (Дополнительно\РОР-оптимизатор) и уста- установив значение поля Compatible with (Совместимость с) в Acrobat 5.0 and later (Acrobat 5.0 и более новым). Третье решение — повторно обра- обработать PDF-документ [Совет № 60]. Конфигурирование Distiller и Ghostscript (Используйте скрытые возможности Distiller и Ghostscript) Acrobat Distiller создает PDF-документ, основываясь на установках своего текущего профиля [Совет № 38]. В Windows командой меню Print (Печать) откройте диалоговое окно Properties (Свойства), выберите вкладку Adobe PDF Settings (Настройки Adobe PDF) и в раскрываю- раскрывающемся списке Default Settings (Настройки по умолчанию) выберите профиль, как показано на рисунке 4-11. На компьютере Macintosh выбе- выберите из раскрывающегося списка PDF Options (Опции PDF) опцию Copies & Pages (Копии и страницы) вместо вкладки Adobe PDF Settings (Настройки Adobe PDF). При использовании Ghostscript можно обра- обращаться к файлу joboptions в pdf_printer.cfg.
Рис. 4-11. Выбор свойств PDF-принтера Т.о. при выполнении вывода Acrobat PDF-принтер можно выбрать настройки, создающие наиболее подходящий для ваших целей PDF- документ, а используя графическое приложение Distiller — отредакти- отредактировать их. Эти профили, или файлы joboptions, являются PostScript- фрагментами с открытым текстом, которые предоставляют более широкие возможности управления через Distiller, чем через GUI (Гра- (Графический интерфейс пользователя). Они также совместимы с про- программой Ghostscript, хотя она имеет ограниченный набор параметров настройки. Файл joboptions — место хранения всех возможных парамет- параметров настройки программ Distiller и Ghostscript. Параметры Acrobat Distiller Чтобы полностью использовать возможности программ Distiller и Ghostscript, необходимо прочитать документ Acrobat Distiller Parameters (Параметры Acrobat Distiller) от Adobe, являющийся справочником по параметрам файла joboptions. Если у вас установлен Acrobat, откройте программу Distiller и выбе- выберите Help\Distaller Parameters Guide (Справка\Справочник по параме-
трам программы Distiller) или найдите на своем диске файл distparm.pdf. На компьютерах Macintosh этот файл находится в папке Extras (Допол- (Дополнения) на установочном компакт-диске. Версия файла distparm.pdf в Acrobat 6 недоступна интерактивно никому, кроме платных членов Adobe ASN Developer Program. Версия файла в Acrobat 5 связана со свободно загружаемым Acrobat 5 SDK: http://partners.adobe,com/asn/acrobat/download.jsp Пользователи Ghostscript должны также прочитать файл в каталоге C:\gs\gs8.14\doc\Ps2pdf.htm или интерактивно на веб-странице: http://www.cs.wisc.edu/-ghost/doc/cvs/Ps2pdf.htm Если планируется передавать PDF-документы сервисному бюро, выясните, есть ли у них фшя joboptions, который нужен вам при созда- создании PDF-документа. Профили joboptions для Distiller Файлы joboptions для Acrobat Distiller легко просмотреть и изменить с помощью интерфейса Distiller GUI, как показано на рисунке 4-12. За- Запустите приложение Distiller и установите Default Settings (Параметры по умолчанию) в Acrobat 6 или Job Options (Рабочие параметры) в Acrobat 5 в профиле, который хотите просмотреть или отредактиро- отредактировать. Затем выберите Settings\Edit Adobe PDF Settings (Настройки\Ре- дактировать настройки Adobe PDF) в Acrobat 6 или Settings\Job Options (Настройки\Рабочие параметры) в Acrobat 5. Этот интерфейс не дает доступа ко всем параметрам настройки, зарегистрированным в Acrobat Distiller Parameters (Параметры Acrobat Distiller). Поскольку фшпы joboptions — это открытый текст, их можно просмотреть или отредактировать, используя текстовый редактор. Профили joboptions для Ghostscript Файлы joboptions написаны на языке PostScript, поэтому их можно передать Ghostscript как раз перед входным файлом, используя опцию -f. Добавьте файл joboptions к принтеру GS Pdf Printer [Совет № 39] в конце файла pdf_printer.cfg следующим образом: -dSAFER -dBATCH -dNOPAUSE -Ic:\gs\gs8.l4\Resource -Ic:\gs\fonts
-Ic:\gs\gs8.14\lib -sFONTPATH=c:\WINDOWS\FONTS -sDEVICE=pdfvmte -Г1200 -c save pop -f c:\gs\pdfhacks.gs.joboptions Рис. 4-12. Интерфейс Distiller GUI — удобное место для просмотра и редактирования файлов joboptions Файл pdfhacks.gs,joboptions поставляется с Virtual Printer Kit (Ком- (Комплект виртуального принтера) [Совет № 39]. Его организация и коммен- комментарии делают параметры простыми для чтения и понимания. Откройте файл в текстовом редакторе и просмотрите. Отредактируйте его в соот- соответствии с вашими потребностями. В нем также прокомментированы параметры, не поддерживаемые Ghostscript. Если необходимо иметь несколько профилей, создайте принтер GS Pdf Printer для каждого из них. Каждый принтер будет иметь свой соб-
ственный Redirected Port (Переадресовываемый порт), каждый порт будет использовать свой собственный файл cfg, каждый cfg файл будет описываться своим файлом ownjoboptions. Встраиваемые и неполные шрифты (Особенности внедрения шрифтов.) Встраиваемый шрифт — это шрифт, который упакован в PDF-файл как ресурс. Внедрение гарантирует, что PDF-текст будет одинаково выглядеть везде, где бы он ни выводился или рассматривался, но это увеличивает размер файла документа. В этом методе взлома обсуждает- обсуждается внедрение и его альтернативы, положительные и отрицательные стороны, а также разбиение шрифта на подмножества, позволяющие внедрять только часть полного шрифта. Разбиение было разработано для уменьшения размера файла, но при неправильном использовании оно может значительно увеличить его. Просмотрите, какие PD-шрифты или их подмножества внедрены в PDF-файл, открывая его в Acrobat или Reader и выбирая команду File\Document Properties\Fonts (ФашДСвойства документа\Шрифты). Внедренные шрифты обозначаются как Embedded (Встроенный). Внедрение шрифтов в PDF-документ В идеале, все шрифты должны быть внедрены. Если шрифт не внед- внедрен в PDF-документ, программа Acrobat/Reader попробует найти его на компьютере. Если шрифт не установлен на компьютере, Acrobat/Reader попробует аппроксимировать его, используя свои соб- собственные ресурсы (см. рисунок 4-13). Без внедренного шрифта PDF-до- PDF-документ может выглядеть по-разному на различных машинах. Насколько хорошо Acrobat/Reader аппроксимирует шрифты? Отключите опцию Use Local Fonts in Reader or Acrobat (Использовать местные шрифты в Reader или Acrobat), чтобы увидеть, как будут выглядеть не внедрен- внедренные шрифты. В Acrobat 6 выберите Advanced\Use Local Fonts (Дополнительно\Использовать местные шрифты), в Adode Reader 6 — Document\Use Local Fonts (Доку- менДИспользовать местные шрифты), в Acrobat 5 — View\Use Local Fonts (Вид\Использовать местные шрифты) или просто используйте комбинацию клавиш Ctrl-Shift-Y.
Рис. 4-13. Оригинальный шрифт (вверху) аппроксимируется программой Acrobat, если он не внедрен в PDF-документ или недоступен в системе Препятствием к внедрению шрифтов служит добавление каж- каждым из них приблизительно 20 Кбайт к размеру PDF-файла. Для больших PDF-документов это незначительно. Для сетевых PDF- документов, состоящих из нескольких страниц, это может быть недопустимым. Если размер PDF-файла критичен, выберите некоторые или все Base-шрифты документов из одной основной коллекции шрифтов, а затем сконфигурируйте программу Distiller, чтобы никогда не внедрять их. Шрифты Base 14 представляют ядро, которое можно использовать без внедрения. Шрифты Base 35 обеспечивают традиционные стили, которые также можно использовать без внедрения. Для внедрения от- отдавайте предпочтение шрифтам Туре 1, поскольку их размер значи- значительно меньше, чем у TrueType. Шрифты Base 14 Шрифты Base 14 можно использовать в любом PDF-документе без внедрения. Их названия: Times, Helvetica, Courier и Symbol. Times New Roman обычно используется вместо Times, a Arial — вместо Helvetica. Если в документе используется шрифт Helvetica и тре- требуется, чтобы PDF-документ отображался именно со шрифтом Helvetica (а не Arial), убедитесь, что он внед- внедрен. Некоторые профили Distiller [Совет № 38] автома- автоматически исключают все шрифты Base 14 из списка вне- внедряемых. На рисунке 4-14 показаны образцы шрифтов Base 14 и Base 35.
Рис. 4-14. Шрифты Base 35 — надмножество шрифтов Base 14 (левая колонка) Шрифты Base 35 Шрифты Base 35 — надмножество шрифтов Base 14. Они добавляют стиль, и большинство из них можно использовать без внедрения. Если ваша система не имеет одного из семейств шрифтов, показанных в таб- таблице 4-6, попробуйте использовать вместо этого подобный шрифт. Табл. 4-6. Семейство шрифтов Base 35 и подобные шрифты, которые можно использовать без внедрения Times Times New Roman Helvetica Arial Helvetica Narrow Arial Narrow Palatino Book Antiqua Bookman Bookman Old Style Avant Garde Century Gothic New Century Schoolbook Century Schoolbook Courier Courier New Symbol Symbol MT Использование шрифтов Base 35, показанных в таблице 4-7, требует внедрения. Любой декоративный или стилизованный шрифт всегда должен быть внедрен. Табл. 4- 7. Семейство шрифтов Base 35, которые должны быть внедрены |ЙШаШЩейща]ш Zapf Dingbats Monotype Sorts Zapf Chancery Monotype Corsiva
Если шрифты Base 35, показанные на рисунке 4-14 (или подобные им), отсутствуют в системе, установите бесплатные шрифты, поставля- поставляемые с Ghostscript [Совет № 25]. Конфигурирование внедрения шрифтов в Distiller Настройка внедрения шрифтов производится на вкладке Fonts (Шрифты) диалогового окна Job Options (Рабочие параметры) про- программы Distiller (см. рисунок 4-15). Переключатель Embed All Fonts (Внедрять все шрифты) устанавли- устанавливает параметр по умолчанию. Отключение его означает Embed No Fonts (He внедрять никаких шрифтов). Списки шрифтов Never Embed (Никогда не внедрять) и Always Embed (Всегда внедрять) используют- используются для изменения установок по умолчанию. Так, если выбран режим Embed All Fonts, все шрифты исходного документа будут внедрены в PDF-документ, кроме перечисленных в списке Never Embed. Если ре- режим Embed All Fonts не выбран, то только шрифты, перечисленные в списке Always Embed, внедряются в PDF-документ. Сконфигурируйте программу Distiller, чтобы никогда не внедрять шрифты Base 14, поместив их (и им подобные) в список Never Embed (Никогда не внедрять). Если надо, поступите так же со шрифтами Base 35 (и им подобными). При использовании Acrobat/Distiller 5.0 в шриф- шрифты Base 14 автоматически не включаются подобные им. В Windows из- измените в раскрывающемся списке Font Source (Источник шрифта) путь на C:\windowsYonts или C:\winntyonts, чтобы увидеть список сис- системных шрифтов, в котором находятся подобные шрифты. Acrobat 6 дает возможность удалить внедренные шриф- шрифты из PDF-документа, используя команду PDF Optimizer (PDF-оптимизатор). Выберите шрифты для удаления командой Advanced\PDF Optimizer\Fonts (Дополнительно\РОР-оптимизатор\Шрифты). Конфигурирование внедрения шрифтов в программе Ghostscript Программа Ghostscript внедряет все шрифты, кроме шрифтов Base 14, хотя, если необходимо, можно внедрить и их. Выясните опытным путем, отказ от внедрения каких шрифтов в Ghostscript может привес- привести к созданию PDF-документа, работающего со сбоями в программах Acrobat и Reader. Возможно, следующая версия Ghostscript решит эту проблему.
Рис. 4-15. Изменение настройки шрифтов на вкладке Fonts программы Distiller Подмножество внедренных шрифтов Нет смысла упаковывать в PDF-документ полный шрифт, если фак- фактически из него используются несколько символов. Разбиение шрифта — методика внедрения только его части. Подмножество шрифта содержит те символы, которые используются в документе. Альтернативой являет- является упаковка полного шрифта в PDF-документ. Distiller может полностью упаковать в PDF-документ только шрифт Туре 1. Шрифты любого дру- другого формата, например TrueType, эта программа разбивает. В большинстве случаев все внедренные шрифты должны быть разбиты на подмножества. Но это вызывает проблемы позже, при сборке несколь- нескольких частей PDF-документа в результирующий документ. Если каждая часть PDF-документа использует подмножества внедренных шрифтов, то итоговый документ будет содержать ненужные подмножества отдельного шрифта. Это может значительно увеличить размер файла документа.
Одно из решений состоит в том, чтобы использовать для сборки до- документа Acrobat 6. После сборки примените опцию Save As (Сохранить как) к новому PDF-документу. Acrobat 6 объединит индивидуальные подмножества шрифтов в единственное подмножество. Acrobat 5 этого не делает. Другое решение — повторная обработка PDF-документа по- после сборки [Совет № 60]. Если вы планируете редактировать PDF-текст на уровне исходного документа, используя текстовый редактор, избегайте разбиения PDF- шрифтов. Если к PDF-документу добавляется текст, который исполь- использует символы, не содержащиеся в подмножестве шрифтов, то такой текст не будет отображаться. Конфигурирование разбиения шрифтов в Distiller Для управления разбиением внедренных шрифтов в программе Distiller используется вкладка Fonts (Шрифты). Чтобы избежать разби- разбиения шрифта Туре 1, отключите переключатель Subset embedded fonts (Разбивать внедренные шрифты). Все другие шрифты (например, TrueType) всегда разбиваются. Справа от этого переключателя можно установить порог разбиения шрифта. Если документ использует 95 % символов из шрифта, и вы не хотите разбивать его, введите в это поле число 94. Установка в этом поле числа 100 означает, что каждый шрифт будет разбит на подмножества. Конфигурирование разбиения шрифтов в Ghostscript Чтобы предотвратить разбиение шрифта Туре 1, укажите /SubsetFonts false в файле joboptions или добавьте -dSubsetFonts=false к командной строке. Если потребуется разбить шрифт на подмножества, замените в этих строках true на false. Чтобы изменить порог разбиения шрифта на подмножества, опреде- определите /MaxSubsetPct 100 в файле joboptions или добавьте -dMaxSubsetPct=100 к командной строке. При необходимости ызамените число 100 нуж- нужным числом. Совместное использование PDF-принтера с помощью программы Samba (Совместное использование сетевого PDF-принтера Ghostscript, Samba и Linux.) Программа Ghostscript позволяет выводить документы в формате PDF. Однако поддержка Ghostscript на каждом клиенте сервера не- неудобна. Установите ее на отдельном Linux-сервере, а затем с помощью программы Samba используйте его как сетевой PDF-принтер.
Перед созданием сервера PDF-принтера установите локальный PDF-принтер [Совет № 39], чтобы проверить программу Ghostscript и убедиться, что она соответствует вашим требованиям. Обратите вни- внимание, что некоторые версии Linux поддерживают GNU Ghostscript (Версия 7) вместо старшей версии AFPL Ghostscript (Версия 8). Учиты- Учитывайте это при проверке. Позднее можно скомпилировать AFPL Ghostscript для Linux-сервера. Сервер Для каждой версии Linux должны быть установлены пакеты Samba и Ghostscript. Позже загрузите и скомпилируйе последнюю версию AFPL Ghostscript. Программа Samba очень мощная, поэтому ее конфигурирование тре- требует навыков и терпения. Просмотрите файл man smb.conf и отредакти- отредактируйте файл smb.conf в соответствии с настройками сети. Используйте по- поисковый сервер интернета, зайдите на веб-страницу http://us3.samba.org/ samba/docs/usingjsambaltoc.html или просмотрите журналы (например, /var/log/samba). Перезапустите программу (например, /etc/init.d/samba restart) после внесения изменений в файл smb.conf. Создайте каталог /home/pdf_printer/output и используйте команду chmod 777. Сюда будут помещаться новые PDF-документы. В этот сов- совместно используемый каталог добавьте следующий фрагмент к файлу smb.conf и перезапустите программу Samba: [pdf_output] comment = Shared PDF Printer Output path = /home/pdf_printer/output ; следующая строка необходима, если security = share guest ok = yes browseable = yes writeable = yes В Windows этот совместно используемый ресурс (share) должен быть видимым в окнах Network Neighborhood (Сетевое окружение) или My Network Places (Мое место в сети), как показано на рисунке 4-16. В про- противном случае попробуйте команду Entire Network\Microsoft Windows Network (Вся сеть\Сеть Microsoft Windows), а также используйте опции Search for Computers (Поиск компьютеров) или Find Computers (Найти компьютеры). Иногда новые ресурсы становятся видимыми не сразу, а иногда приходится изменять конфигурацию клиентов. Добавьте к программе Samba PDF Printer, а затем настройте его па- параметры в соответствии с вашими требованиями. Загрузите файл samba-print-pdfc веб-страницы http://ranger.dnsalias.com/ mandrake/samba/, скопируйте его в каталог сервера: /usr/local/bin и ис-
пользуйте команду chmod 755. Откройте этот сценарий в редакторе, чтобы посмотреть, что он делает, и что-то изменить, например, Ghostscript OPTIONS. Рис. 4-16. Несколько способов обнаружения совместно используемых сетевых ресурсов в Windows Добавьте следующий фрагмент к файлу smb.conf. Он должен работать с общей моделью защиты Samba (security = share) или с пользователь- пользовательской моделью (security = user). Последняя требует, чтобы пользователь вводил имя и пароль перед доступом к принтеру. [pdf_printer] comment = Shared PDF Printer path = /tmp ; следующая строка необходима, если security = share guest ok = yes printable = yes
use client driver = yes print command = /us^ocal/bin/samba-print-pdf %s \ /home/pdf_printer/output //%L/pdf_output %m %I "%D" & Ipq command = Iprm command = Перезапустите Samba, а затем попробуйте получить доступ к файлу ресурса pdf_output с машины клиента. Если это работает, можно уста- устанавливать принтер клиента. Windows-клиент Установите Virtual Printer Kit — (VPK) [Совет № 39]. Щелкните правой кнопкой мыши на сетевом принтере, pdf_printer, в окне My Network Places (Сетевые подключения) в File Explorer. Выберите Connect (Под- (Подключиться) и нажмите ОК. Откроется Add Printer Wizard (Мастер уста- установки принтера) с запросом об установке драйвера принтера. Выбери- Выберите Have Disk (Установить с диска), VPK-драйвер принтера, который подходит для платформы вашего клиента, и нажмите ОК. Выберите драйвер Virtual PostScript Printer и щелкните ОК. Новый сетевой PDF- принтер появится в папке Printers and Faxes (Принтеры и факсы) ком- компьютера. Напечатайте пробную страницу, чтобы убедиться в его пра- правильной работе. Затем скопируйте файлы Virtual PostScript Printer в совместно ис- используемый ресурс pdf_output так, чтобы к ним было легко обратиться через сеть. Вывод изображений и опции преобразования в растровый формат (Создайте эскиз обложки или преобразуйте полный документ в растровый формат.) Иногда может возникнуть необходимость в конвертировании PDF- документа в другой графический формат. Для этого добавьте опцию Print to Image (Вывод в изображение), как показано в разделе «Печать PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39], и изменив несколько компонентов. Альтернативно растеризировать PDF-документы можно с помощью программ Adobe Acrobat или Photoshop. Поскольку Photoshop предоставляет больше возможностей, используйте опцию Print to PDF (Вывод в формате PDF), а затем от- открывайте эти страницы в программе Photoshop. Установка PNG (или JPEG, или TIFF)- принтера Процедура создания растрового (например TIFF, JPEG, PNG) принтера аналогична процедуре создания PDF-принтера, описанной в
разделе «Печать PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39]. В этом примере мы сконфигурируем PNG-прин- тер, но так же легко создать TIFF или JPEG-принтер. Опция DEVICE определяет то, что будет создано. Мы обсудим альтернативные устрой- устройства немного позже. Следуйте командам создания PDF Printer за исключением: 1. Присвойте принтеру имя GS pngl6m Printer вместо GS Pdf Printer. 2. Присвойте переадресовываемому порту имя RPTPNG16M: вмес- вместо RPTPDF:. 3. При конфигурировании Redirected Port (Переадресовываемый порт) присвойте файлу опций имя C:\gs\pngl6m_printer.cfg вмес- вместо C:\gs\pdf_printer.cfg. 4. Присвойте журналу имя C:\gs\pngl6mjprinter.log вместо C:\gs\ pdf_printer.log при конфигурировании Redirected Port (Переадре- (Переадресовываемый порт), 5. Создайте файл pngl6m_printer.cfg, который упоминался ранее. Это текстовый файл дополнительных параметров, передавае- передаваемых программе Ghostscript. Пример включает Virtual Printer Kit. Измените пути в соответствии с программой Ghostscript и системными установками. -dSAFER -dBATCH -dNOPAUSE -Ic:\gs\gs8.U\Resource -Ic:\gs\fonts -Ic:\gs\gs8.14\lib -sFONTPATH=c:\WINDOWS\FONTS -sDEVICE=pngl6m -r72 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dAlignToPixeis=0 Используя эту процедуру, можно создать отдельный принтер для каждого используемого формата изображений. Устройства и варианты опции Print to Image (Вывод в изображение). До- Документация, поставляемая с программой Ghostscript (C:\gs\gs8.14\doc\ index.htm), описывает доступные устройства вывода (Devices.htm) и об- общие параметры (Use.htm), которые могут использоваться в файле конфи- конфигурации. Таблицы 4-8 и 4-9 содержат краткую справку о возможностях программы.
Табл. 4-8. Некоторые растровые схемы Ghostscript ШИо^спрШемаШрщ^ pnggray Grayscale PNG pngl6 16-Color D-bit) PNG png256 256-Color (8-bit) PNG pngl6m 16-Million Color B4-bit) PNG jpeggray Grayscale JPEG jpeg Color JPEG tiff24nc 16-Million Color B4-bit) TIFF faxg3 G3 Fax with EOLs Табл. 4-9. Некоторые растровые опции Ghostscript -r<dpi resolution> Устанавливает разрешающую способность выходного файла в точках на дюйм. Экранная разрешающая способность - 72 точки на дюйм. Для создания эскизов установите низкое значение - 20 точек на дюйм. -dTextAlphaBits=<l/2/4> Устанавливает текстовое сглаживание. Значение 4 соответствует самому большому сглаживанию. -dGraphicsAlphaBits=<l/2/4> Устанавливает графическое сглаживание. Значение 4 соответствует самому большому сглаживанию. -dv3PEGQ=<O-lOO> Устанавливает качество JPEG. Более низкие значения приводят к большему сжатию за счет снижения качества изображения. Имена выходных файлов изображений. При печати многостранично- многостраничного документа одном из растровых принтеров имя выходного файла должно включать переменную номера страницы %d так, чтобы каждая страница получила уникальное имя файла. Чтобы дополнить эту пере- переменную тремя начальными нулями, используйте запись: %03d. В ко- командной строке Windows символ % должен быть представлен как %%. Вот несколько примеров имен файлов, которые можно вводить в диа- диалоговом окне Save As (Сохранить как): report_page-%d.png Yields: report_page-l.png, report_page-2.png,... book_pg-%03.png Yields: book_pg-001.png,book_pg-002.png,... tome_p-%04.png Yields: tome_p-0001.png, tome_p-0002.png,...
Acrobat: Save As Image (Сохранить как изображение) Начиная с Acrobat 5 можно открыть PDF-документ, а затем исполь- использовать опцию Save As (Сохранить как) для сохранения его в файлах изображений форматов JPEG, PNG или TIFF. В диалоговом окне Save As (Сохранить как) щелкните на кнопке Settings (Настройки) и скон- сконфигурируйте опции изображений — разрешающую способность, пара- параметры цвета и сжатие. Photoshop: Open PDF (Открыть PDF-документ) Программа Photoshop — идеальное средство для работы с растровы- растровыми изображениями, поэтому имеет смысл открыть PDF-документ в Photoshop. Если оригинал документа не имеет формата PDF, сохрани- сохраните его в этом формате, используя Acrobat Distiller или GS Pdf Printer [Совет № 39]. Откройте его в программе Photoshop, а затем, используя опцию Save As (Сохранить как), сохраните в любом нужном формате. Mac OS X: Preview В разделе «Чтение PDF-документов в Mac OSXc помощью программы Preview» [Совет № 2] было показано, что приложение Preview, поставля- поставляемое с Mac OS X, позволяет открывать PDF-файлы и сохранять их в разнообразных графических форматах. Вывод SVG-графики (Создавайте SVG-изображения, используя pstoedit, а затем внедряйте их в веб-страницу.) Scalable Vector Graphics (SVG) (Масштабируемая векторная графика) — это сетевой стандарт для описания векторных изображений с помощью языка XML (http://www.w3.org/Graphics/SVGf), Он больше похож на PostScript, чем на PDF. Преобразовать PostScript в формат SVG можно с по- помощью SVG-фильтра pstoedit. Свяжите его с одним из виртуальных принте- принтеров и получите опцию Print to SVG (Вывод в формате SVG)! Программы редактирования векторной графики, на- например Adobe Illustrator, Corel Draw или Karbon, также создают SVG-изображения. Инструментальные средства Средства просмотра SVG-изображений находятся в свободном доступе. Посетите сайт http://www.adobe.com/svg/шш http://www.corel.com/svgviewer/
чтобы загрузить SVG-дополнение для своего веб-браузера. Для получения информации о Squiggle, SVG-браузере, посетите веб-страницу http://xml apache.org/batik/svgviewer.html Следуйте указаниям раздела «Печать PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39], чтобы установить програм- программу Ghostscript и другие компоненты виртуального принтера. Програм- Программа pstoedit требует наличия Ghostscript. Загрузите инсталлятор pstoedit с сайта http://www.pstoedit.net/pstoedit/. Он содержит SVG-фильтр общего пользования. Во время установки убедитесь, что этот дополнительный компонент выбран. Программа pstoedit — бесплатное программное обеспечение, SVG-фильтр — нет. Фильтр работает с искажениями, изменяя цвета и шифруя текст, пока вы не купите и не установите ключ регистрации. На сайте pstoedit име- имеется ссылка на место приобретения этого ключа. Программа pstoedit содержит также альтернативный, бесплатный SVG-фильтр. Чтобы его использовать, за- замените значение -f svg значением -f plot -svg при конфи- конфигурировании, которое будет рассмотрено ниже. Использование pstoedit Проверьте установку, выполнив программу pstoedit из командной строки: pstoedit -fsvg c:\gs\gs8.l4\examples\tiger.eps c:\tiger.svg Откройте файл tiger.svg в своем средстве просмотра, и вы должны увидеть классическое изображение тигра, рычащего на вас. Без ключа регистрации SVG-фильтр преднамеренно изменит цвета тигра, поэто- поэтому он может выглядеть синим, а не огненно-рыжим. Попробуйте ис- использовать фильтр plot-svg, чтобы увидеть его в истинном цвете: pstoedit -fplot-svg c:\gs\gs8.l4\examples\tiger.eps c:\tiger.svg Если все получилось, отредактируйте SVG-файл. Измените атрибут transform тэга д, чтобы вернуть тигру вид, показанный на экранном снимке на рисунке 4-17. Создание SVG Printer Процедура создания принтера SVG Printer аналогична процедуре со- создания принтера PDF Printer, описанной в разделе «Печать PDF-доку- PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39].
Рис. 4-17. Тигр в формате SVG Следуйте командам для создания PDF Printer за исключением: 1. Присвойте принтеру имя SVG Printer вместо GS Pdf Printer. 2. Присвойте переадресовываемому порту (Redirected Port) имя RPTSVG: вместо RPTPDF:. 3. При конфигурировании Redirected Port присвойте журналу имя C:\gs\svg_printer.logK сконфигурируйте порт, используя параме- параметры настройки, приведенные в таблице 4-10.
Табл. 4-10. Свойства порта RedMon Переадресовать этот порт программе: C:\pstoedit\pstoedit.exe Параметры для этой программы: -f svg - "%1" Вывод: Запрос имени файла Выполнение: Минимальное Напечатайте пробную страницу. Если страница не создана, просмо- просмотрите журнал и перепроверьте параметры настройки. При просмотре пробной SVG-страницы можно обнаружить, что TrueType-текст поте- потерял свою кодировку и отображается неправильно. Это следствие не- некорректных настроек в SVG-фильтре pstoedit. Формат SVG в интернете Используйте последовательный подход при добавлении SVG-изоб- ражений к своим веб-страницам. Если клиент игнорирует тэг OBJECT, то это может снизить скорость передачи данных к тэгу EMBED. Например: <object type="image/svg+xmr data="tiger.svg" title="Roar!" width=00" height=00"> <embed type="image/svg+xml" src="tiger.svg" width=00" height>00" pluginspage=//http://www.adobe.com/svg/viewer/install//'> </object> Фирма Adobe настоятельно рекомендует не использовать тэг OBJECT при внедрении SVG-изображений в HTML-страницу. Для получения подробной информации посетите веб-страницу http://www.adobe.com/svg/viewer/install/. Печать в интернете (Печатайте с использованием протокола HTTP, представляя свои потоки печати как данные HTML-формы.) Публикация в интернете представляет один из способов распростра- распространения информация в XXI веке. Идея заключается в том, чтобы разре- разрешить авторам создавать документы, используя различные текстовые редакторы, а затем размещать их на сайте. Только на сервере сети PostScript-поток печати преобразуется в формат PDF и интерактивно используется для чтения или загрузки. При таком сценарии автор уп- управляет исходным документом и отвечает за его сопровождение.
Этот метод взлома использует HTTP-представление файла для передачи PostScript-сценария серверу. Другим решением является использование CUPS (http://www.cups.org). Для создания PDF-документа на основанном на CUPS сервере попробуйте программу Alambic (http://alambic.iroise.net), поддерживающую SMTP и HTTP-интерфейсы. Этот метод взлома демонстрирует вывод PostScript-потока печати на сервер. В примерах вывод осуществляется не в сложную хостовую службу, а на простой сайт http://www.ps2pdf.com. В настоящее время сайт http://www.ps2pdf.com использу- использует старую версию Ghostscript, поэтому вывод в собст- собственную, локальную версию Ghostscript даст лучшее ка- качество PDF-документа. Загрузка и установка Посетите сайт http://www.pdfhacksxom/submit_file/ и загрузите архив submit_Jile-LO.zip. Разархивируйте его, а затем скопируйте файл SubmitFile.exe в удобное место. Это простая программа, использующая интерфейс Windows Winlnet API для передачи местного файла серверу. Затем она открывает заданный по умолчанию веб-браузер, чтобы уви- увидеть ответ сервера. Исходный текст является доступным, и можно оз- ознакомиться с подробностями HTTP-представления. Установка ps2pdf.com Printer Процедура создания интернет-принтера аналогична процедуре со- создания PDF-принтера, описанной в разделе «Печать PDF-документов в Windows с помощью Ghostscript и RedMon» [Совет № 39], за исключением того, что не требуется установка программы Ghostscript. Следуйте командам установки печати в формате PDF, кроме сле- следующих: 1. Не устанавливайте Ghostscript. 2. Присвойте принтеру имя ps2pdf.com Printer вместо GS Pdf Printer. 3. Присвойте переадресовываемому порту (Redirected Port) имя RPTWEB: вместо RPTPDF:. 4. При конфигурировании Redirected Port используйте параметры настройки из таблицы 4-11.
Табл. 4-11. Свойства порта RedMon Переадресовать этот порт программе: C:\redrnonl7\RedRun.exe Параметры для этой программы: C:\pdfhacks\SubmitFile.exe convert/convert.cgi www.ps2pdf.com inputfile %1 Вывод: Запрос имени файла Выполнение: Минимальное 5. Присвойте имя C:\pdfltacks\web__printer.log журналу Redirected Port (Переадресовываемый порт) вместо C:\gs\pdf_printer.log. 6. Нажмите ОК, чтобы принять новые параметры настройки порта. 7. Нажмите ОК, чтобы принять новые параметры настройки прин- принтера и закрыть диалоговое окно. Программа RedRun принимает PostScript-поток печати и создает для него временный файл. Затем она выполняет программу SubmitFile, за- заменяя символы % 1 временным именем файла. Обратите внимание, что не следует помещать в кавычки символы %1, иначе RedRun воспримет их как временное имя файла с пробелами, которые отделяют парамет- параметры SubmitFile. Для отладки выполните программу SubmitFile из командной строки. Параметры следуют в порядке: SubmitFile <cgi path> <cgi server name> \ <html form field name> <local filename of upload> Проверка ps2pdf.com Printer Откройте диалоговое окно свойств ps2pdf.com Printer, выберите вкладку General (Общие), а затем — Print Test Page (Печать пробной страницы). Когда PDF-документ будет готов к загрузке с сайта http://www.ps2pdf.com, откроется браузер с гиперссылкой, которой нуж- нужно следовать. Если произошла ошибка, проверьте журнал обратной связи с RedRun или SubmitFile. Предложенная конфигурация соответствует текущему состоянию сайта http://www.ps2pdf.com. Администраторы сайта могут изменить ее в любое время, что потребует изменения конфигурации принтера.
Создание PDF-альбома цифровых фотографий (Быстрая подготовка фотографий для просмотра.) С помощью цифровой камеры легко создать сотни изображений. Подготовка их для просмотра вашим семейством и друзьями — более трудная задача. Рассмотрим создание альбома фотографий с помощью формата PDF. В этом случае формируется пакет, который можно легко распространять, эскизы позволяют быстро перемещаться по альбому. С помощью бесплатного программного обеспечения можно создать один из таких альбомов (см. рисунок 4-18). Программа ImageMagick со- создает отдельный PDF-документ из папки фотографий, подходящий для электронной почты, просто добавляя параметры сжатия. Рис. 4-18. Объединение фотографий в мобильный пакет с простой навигацией Установка ImageMagick Посетите сайт http://www.imagemagick.org, чтобы узнать об этом мощ- мощном комплекте программных средств и загрузить его Windows-инсталля- Windows-инсталлятор, который также распаковывает документацию. Мы будем использо- использовать инструмент конвертирования, который описан в файле convert.html.
Конвертирование изображений в формат PDF Последующие примеры используют входные изображения формата JPEG, но вы можете адаптировать их для других типов изображений. Найдите папку изображений, откройте приглашение ко вводу коман- команды [Совет № 79] в этой папке и введите: convert -density 100 -quality 85 \ -page "800x800>" -resize "800x800>" *.jpg album.pdf После этого откройте файл album.pdf в программе Acrobat/Reader. Каждое изображение получает одну PDF-страницу и располагается в ал- алфавитном порядке имени файла. Чтобы просмотреть все изображения в одинаковом масштабе, выберите команду View\Actual Size (Вид\Нату- ральная величина). Командой меню View\Navigation Tab\Pages (Вид\На- вигационные вкладки\Страницы) в Acrobat 6 или Window\ Thumbnails (Окно\Эскизы) в Acrobat 5 посмотрите эскизы. Выберите любое изобра- изображение и скопируйте его в буфер обмена для использования в другом мес- месте; это работает как в Adobe Reader, так и в Acrobat. Рассмотрим параметры команд: density (плотность) Разрешающая способность выводимых изображений, измеряемая в точках на дюйм (dpi). Значение по умолчанию — 72 точки на дюйм. Изменение этого значения не затрагивает результирующее качество изображения. Скорее, оно затрагивает логические, внешние измере- измерения изображения. Например, изображение 1600x200 пикселей при 200 точках на дюйм имеет размер 8x6 дюймов. При 100 точках на дюйм его размер равен 16x12 дюймов. Имеет смысл выбирать 100 точек на дюйм, потому что это соответствует равновесию между экранным просмотром в натуральную величину (Actual Size) и печатью на бума- бумаге A50 dpi достаточно, чтобы печатать фотографии на большинстве принтеров с разрешением 600 dpi). quality (качество) Это JPEG-сжатие, применяемое к изображениям при их упаковке в PDF-документ. Значение 0 соответствует самому низкому качеству изображения, но самому большому сжатию. Значение 100 соответст- соответствует самому высокому качеству изображения, но самому слабому сжатию. Значение по умолчанию равно 75. раде (страница) Параметр описывает внешние размеры PDF-страницы в пикселях. Если изображение меньше этой величины, то страница уменьшает- уменьшается, чтобы соответствовать изображению. Исключение этой опции
заставляет большие изображения сжиматься в соответствии с задан- заданным по умолчанию значением, равным размеру Letter (8,5x11 дюй- дюймов). Установите его в соответствии с опцией resize. resize (изменение размера) Параметр описывает максимальные размеры (в пикселях) для всех выводимых изображений. Символ > означает, что изображения меньшие или большие максимальных подгоняются под этот размер. Уменьшение размеров изображения уменьшает размер PDF-файла, а увеличение — улучшает качество изображения. Настройте пара- параметр page соответствующим образом. Следующий пример демонстрирует совместную работу этих параме- параметров. Если камера создает изображения с разрешением 1600x1200 пик- пикселей, и требуется создать высококачественный архив этих изображе- изображений, используйте следующие параметры: convert -density 200 -quality 95 \ -page 600xl600>" -resize 600xl600>" *.jpg archive.pdf Последние штрихи В Acrobat вы можете изменить ориентацию изображений, отсорти- отсортировать их и добавить закладки. Можно сконфигурировать PDF-доку- PDF-документ так, чтобы эскизы открывались автоматически. Для получения дополнительной информации см. раздел «Окончательная шлифовка PDF-издания» [Совет № 62] Подобные PDF-альбомы можно создавать с помощью программы Adobe Photoshop Album, которая стоит при- приблизительно 50 долл. Печать на факсимильных аппаратах в Windows (Используйте факсимильные аппараты в качестве удаленных копировальных ус- устройств, подобно удаленным принтерам.) Отправка документа по факсу традиционно требует двух факсимиль- факсимильных аппаратов: того, который сканирует документ, и того, который его печатает. Если рассматриваемый документ уже сохранен на компьютере, то имеет смысл печатать документ с компьютера на целевой факсимиль- факсимильной машине. В этом случае факсимильное сообщение имеет более высо- высокое качество, и это намного удобнее. На компьютере с системой Windows и факс-модемом можно установить Fax printer (Факсимильный прин- принтер), который ведет себя аналогично любому системному принтеру.
Факсы обычно плохо выглядят, потому что процесс сканирования документа добавляет помехи, искажает текст и ухудшает его вид. Художественные работы и фо- фотографии еще больше искажаются. Печать документа на целевом факсимильном компьютере не требует ска- сканирования. Текст выглядит четким, и изображения со- сохраняются с передачей полутонов. Системы Windows XP и Windows 2000 создают Fax printer (Факси- (Факсимильный принтер) при установке факс-модема. Командой меню Start\Settings\Control Panel\Phone and Modem (Пуск\Настройки\Панель управления\Телефон и модем) откройте диалоговое окно Phone and Modem Options (Параметры телефона и модема), выберите вкладку Modems (Модемы) и нажмите на кнопку Add (Добавить). Используя Acrobat или свою собственную программу, выведите документ на этот Fax printer (Факсимильный принтер) — откроется мастер установки обо- оборудования. Этот мастер запросит телефонный номер получателя и даст возможность заполнить титульный лист. После завершения работы мас- мастера модем соединится с факсом адресата и отправит ваш документ. Для получения дополнительной информации о Windows- факсах посетите веб-страницу http://labmice.techtarget.com/ windows2000/printing/fax. htm. Если вы часто пересылаете PDF-документы по факсу, добавьте эле- элемент Print to Fax (Вывод на факс) к контекстному меню PDF-документа. Для этого в Windows XP и 2000: 1. В меню Windows File Explorer командой меню Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options и выберите вкладку File Types (Типы файлов). Вы- Выберите тип файла — PDF и щелкните на кнопке Advanced (До- (Дополнительно). 2. Нажмите кнопку New (Создать) и откройте диалоговое окно New Action (Новое действие). Присвойте новому действию имя Print to Fax (Вывод на факс). 3. Откройте приложение, нажав на кнопку Browse (Просмотреть) и выбрав файл Acrobat.exe, который находится в каталоге: C:\Program Files\Adobe\Acrobat 6.0\Acrobat\. Или используйте про- программу Reader (AcroRd32.exe) вместо Acrobat. 4. Добавьте параметры после Acrobat.exe или AcroRd32.exe следую- следующим образом: "C:\Program Files\Adobe\Acrobat 6.0\Acrobat\Acrobat.exe" /t "%1" Fax
5. Щелкните три раза ОК, чтобы сохранить произведенные уста- установки и закрыть диалоговые окна. Чтобы интегрировать функции факса в сеть, используйте пакет HylaFAX. Посетите сайты http://www.hylafax.org или http://www.ifax.com или проконсультируйтесь в телеконференции fa.hylafax. Конвертирование входящих факсов в PDF-формат в Linux (Перенесите входящий факс по словам в PDF-документ и отправьте его по элек- электронной почте.) Факс существовал еще до создания формата PDF и электронной почты. Сегодня мы все еще используем его. Интегрируйте факс с обра- образом жизни XXI столетия, используя пакет HylaFAX. Он превращает Linux-компьютер в факс-сервер. Для получения дополнительной ин- информации посетите сайты http://www.hylafax.org и http://www.ifax.com. Здесь мы обсуждаем конфигурирование программы HylaFAX таким образом, чтобы она передавала входящие факсы по данному адресу электронной почты в качестве PDF-вложений. Установите пакет сервера HylaFAX от поставщика программ для Linux. Во время установки создается псевдоним электронной почты FaxMaster, позволяющий пользователю обслуживать сервер. В этом ме- методе взлома все входящие факсы будут посылаться по электронной почте к FaxMaster как PDF-документы. После установки выполните команду faxsetup -server. При получении факса программа faxgetty из пакета HylaFAX вызыва- вызывает сценарий faxrcvd, который выполняет файл FaxDispatch (обычно рас- расположенный в /var/spool/hylafax/etc), чтобы установить параметры конфигурации. FaxDispatch управляет пересылкой входящих факсов. Ваша версия пакета может включать файл FaxDispatch, в противном случае его необходимо создать. Для получения дополнительной ин- информации о файле FaxDispatch прочитайте документ «man faxrcvd». Приведенный ниже пример файла FaxDispatch конфигурирует HylaFAX, чтобы посылать по электронной почте все приходящие для FaxMaster факсы как PDF-вложения. Он также содержит дополни- дополнительные строки комментариев: ## Default FaxDispatch file - маршрутизирует все прибывающие ## к FaxMaster факсы как PDF-файлы ## Прочитайте документ faxrcvd(8C) для получения дополнительной ## информации SENDTO=FaxMaster; # по умолчанию отправляет эл.почту FILETYPE=pdf; # FaxMaster в формате PDF ## Эта фрагмент документации позволяет понять, ## что здесь можно делать
## Вы можете выполнять маршрутизацию с помощью TSI отправителя #case "$SENDER" in # *1*510*52б*1212*) SENDTO=sam;; # Тестовое оборудование Сэма на участке # *1*415*390*1212*) SENDTO=raster@asd;;# 7L Xerox в Беркли, используемое для # *5107811212) SENDTO=peebles@mti;; # выполнения сканирования из дому #esac ## и/или в зависимости от устройства #case "$DEVICE" in # ttySl) SENDTO=john;; # все факсы, полученные ttySl # ttyLTO) SENDTO=mary@home;; # все факсы, полученные ttyLTO #esac ## и/или в зависимости от идентификатора, вызывающего #case "$CIDNUMBER" in # 435*) SENDTO=lee; FILETYPE=pdf;; # все факсы от кода города 435 # 5059627777) SENDTO=amy; FILETYPE=tif;; # Эми нужны факсы в формате TIFF #esac Дарен Никкерсон
ГЛАВА 5 Управление PDF-файлами Советы №51-73 Многие думают о документах в формате PDF как о фиксированных файлах, однажды созданных и не подлежащих изменению. Однако это не так. Независимо от наличия программы Adobe Acrobat существует много способов управления PDF-файлами: разбиения, уменьшения размеров, шифрования, расшифровки и представления их пользова- пользователям различными способами. Разбиение и объединение документов в формате PDF (без помощи Acrobat) (Создавайте новые документы из существующих PDF-файлов, разбивая PDF-документы на меньшие части или объединяя их с информацией из других PDF-документов.) В течение своего жизненного цикла документ может подвергнуться многим изменениям. Он может быть собран из отдельных разделов, а затем преобразован в большее сообщение. Отдельные страницы могут быть скопированы в личный справочник. Разделы могут быть замене- заменены новой информацией. Некоторые документы — это скопления не- небольших частей, подобно авансовому отчету со всеми его легко теряю- теряющимися квитанциями. Чтобы управлять PDF-страницами, необходимо использовать про- программу типа Adobe Acrobat, но она дорогая. Другие коммерческие про- программы типа pdfmeld от FyTek (http://www.fytek.com) также обеспечивают эти основные функциональные возможности. Бесплатная программная альтернатива — PDF-инструментарий pdttk [Совет № 79]. Быстрое объединение страниц в Acrobat В Acrobat 6 выберите команду меню File\Create PDF\From Multiple Files (Файл\Создать PDF-документХИз нескольких файлов). Нажмите
на кнопку Browse (Просмотреть) (Choose [Выбрать] в Macintosh) и от- откройте список файлов. В Windows можно выбрать различные типы файлов, включая документы Microsoft Office. Разместите файлы в нуж- нужном порядке и нажмите ОК. Для быстрого объединения двух PDF-документов с использованием Acrobat 5 начните с открытия первого PDF-документа в Acrobat. В Win- Windows File Explorer выберите PDF-документ, который хотите добавить, и перетащите его к документу, открытому в Acrobat. В диалоговом окне с за- запросом о месте вставки документа выберите After Last Page (После послед- последней страницы), и он будет добавлен в конец первого PDF-документа. Если у вас есть папка PDF-файлов, требующих объединения в опреде- определенном порядке в итоговом документе, начните с открытия первого PDF- документа в программе Acrobat 5. Затем в File Explorer выберите оставши- оставшиеся PDF-документы, которые нужно присоединить. Щелкните на первом PDF-документе в этом наборе (см. рисунок 5-1), переместите его к PDF-до- PDF-документу, открытому в Acrobat, а затем отпустите кнопку В диалоговом ок- окне с запросом о месте вставки набора документов выберите After Last Page (После последней страницы), и они будут добавлены в конец первого PDF-документа. Просмотрите итоговый документ, чтобы убедиться, что PDF-документы собраны в нужном порядке. Рис. 5-1. Щелкните по первому документу выбранного вами набора при перемещении его в Acrobat 5
Acrobat позволяет упорядочивать, перемещать и копи- копировать PDF-страницы, используя их эскизы [Совет № 14]. Управление страницами с помощью программы pdftk Программа pdftk — инструмент командной строки для выполнения операций с PDF-документами. Она может объединять PDF-докумен- PDF-документы в итоговый документ или разбивать индивидуальные страницы для создания нового PDF-документа. Прочитайте раздел «Управление с по- помощью pdftk» [Совет № 79], чтобы установить pdftk и ярлык командной строки. Программа pdftk — это бесплатное программное обеспечение. Откройте приглашение ко вводу команды, а затем замените рабочий каталог на папку, которая содержит входные PDF-файлы. Или открой- откройте командную строку, щелкнув правой кнопкой мыши на папке с PDF- файлами и выбрав Command (Команда) из контекстного меню. Вместо того чтобы вводить имя входного PDF-файла, перетащите его из Windows File Explorer в приглашение к вводу команды. В строке появится полное имя файла. Чтобы объединить страницы в один документ, вызовите программу pdftk следующим образом: pdftk <input PDFfiles> cat [<input PDFpages>] output <output PDFfilename> Представляем несколько коротких примеров. Пример объединения первой страницы файла in2.pdf четных стра- страниц файла inl.pdfи нечетных страниц файла inl.pdf 'для создания ново- нового PDF-документа под названием out.pdf. pdftk A=inl.pdf B=in2.pdf cat Bl Al-endeven Al-endodd output out.pdf Пример объединения папки документов для создания нового PDF- документа под названием combined.pdf Документы будут отсортирова- отсортированы в алфавитном порядке: pdftk *.pdf cat output combined.pdf Рассмотрим параметры: [<inputPDFfiles>] Имена файлов входных PDF-документов связаны с дескрипторами следующим образом: <input PDF handle>=<input PDF filename), где дескриптор является единственной прописной буквой. Например, A=inl.pdf связывает дескриптор с файлом inl.pdf.
Определите ввод нескольких PDF-файлов следующим образом: A=ini.pdf B=in2.pdf C=in3.pdf Дескриптор файла необходим только при объединении определен- определенных страниц или когда входной файл требует пароля. [<input PDFpages>] Опишите диапазон входных PDF-страниц следующим образом: <input PDF handle> [<begin page number>[-<end page number>[<qualifier>]]], где дескриптор идентифицирует один из входных PDF-файлов, а но- номера начальных и конечных страниц — это ссылки к страницам в этом PDF-документе. Спецификатор может быть четным или нечетным. Несколько примеров сделают это понятнее. Если A=inl.pdf, то: А1-12 означает первые 12 страниц inl.pdf. Al-12even означает страницы 2, 4, 6, 8, 10 и 12. A12-leven означает страницы 12, 10, 8, 6, 4 и 2 (обратный порядок страниц). Al-end означает все страницы из inl.pdf. А означает то же самое, что и Al-end. А10 означает страницу 10 из inl.pdf. Из этих примеров видно, что диапазоны страниц определяют поря- порядок выходных страниц. Обратите внимание на ключевое слово end, ко- которое относится к заключительной странице PDF-документа. Определите последовательность диапазонов страниц следующим образом: Al Bl-end C5 При объединении всех входных PDF-документов в их заданном по- порядке вы можете опустить раздел <input PDF pages>. <output PDF filename> Имя выходного PDF-файла должно отличаться от любого из имен входных файлов. Если хотя бы один из входных файлов зашифрован, необходимо по- получить пароли их владельцев [Совет № 52].
Шифрование и расшифровка документов в формате PDF (без помощи Acrobat) (Ограничьте круг тех, кто может открывать и использовать PDF-документ.) Шифрование PDF-документа выполняется для блокирования кон- контента файла паролем, чаще — для введения авторских ограничений. Например, автор разрешает печать страниц, но запрещает внесение изменений в документ. Мы продолжим раздел «Разбиение и объедине- объединение PDF-документов (без помощи Acrobat)» [Совет № 51] и объясним, как программа pdftk [Совет № 79] может зашифровывать и расшифровывать PDF-документы. Мы начнем с описания модели Acrobat Standard Security (Стандартная защита Acrobat) (названной Password Security [Парольная защита] в Acrobat 6) и прав доступа, которые вы можете предоставить или отменить. Вложения PDF-файлов также шифруются. После от- открытия зашифрованного документа вложения могут быть открыты, изменены или удалены, только если вла- владелец предоставил право доступа ModifyAnnotation (Изменять, комментировать). Вложения страницы ведут себя иначе, чем вложения документа. При открытии зашифрованного документа открыть файлы, приложенные к PDF-страницам, мож- можно независимо от прав доступа. Изменение или удале- удаление одного из этих вложений требует права доступа ModifyAnnotations. PDF-пароли Acrobat Standard Security (Стандартная защита Acrobat) дает возмож- возможность определять для PDF-документа два пароля: пользовательский и пароль владельца. В Acrobat 6 их называют паролем Open (Открытый) и паролем Permissions (Права доступа), соответственно. Пользовательский пароль необходим для просмотра страницы доку- документа. Из него получается ключ шифрования PDF-документа из поль- пользовательского пароля. При открытии PDF-документа, защищенного пользовательским паролем, средство просмотра запросит его у читателя. Пароль владельца необходим для изменения параметров настройки безопасности документа. PDF-документ с набором паролей пользова- пользователя и владельца может быть открыт с помощью любого из них, поэто- поэтому подходить к выбору надо осторожно. Пароль владельца сам по себе не обеспечивает никакой реальной защиты PDF-документа. Контент зашифрован, но ключ, получе-
ный из (пустого) пользовательского пароля, известен. Пароль вла- владельца — это вежливая, но твердая просьба уважать пожелания ав- автора. Программа взлома может преодолеть эту защиту за секунду. См. раздел «Защита вашего PDF-документа от копирования» [Совет № 66] для получения информации о дополнительных опциях управ- управления правами. Надежность стандартного защитного шифрования Если PDF-документ совместим с Acrobat 3 или 4, то используется 40- битное шифрование, в противном случае — более сложное, 128-бит- 128-битное. В обоих случаях ключ шифрования создается из пользовательско- пользовательского пароля, поэтому хороший, длинный, случайный пароль помогает улучшить защиту от атак «в лоб». Самый длинный возможный пароль PDF-документа может содержать 32 символа. Стандартные права доступа Установите пользовательский пароль, если вы не хотите, чтобы все просматривали ваш PDF-документ. Если нет пользовательского паро- пароля, то он просто не будет открываться. Вы можете также управлять действиями читателей после открытия ими документа. Права доступа, связанные со 128-битной защитой (Acrobat 5 и 6), более подробны, чем связанные с 40-битной (Acrobat 3 и 4). Таблицы 5-1 и 5-2 перечисляют все права доступа для каждой моде- модели защиты, а также pdftk-флажки. На рисунке 5-2 показана настройка прав доступа в Acrobat. Табл. 5-1. Права доступа для 40-битной защиты Печатать страницы Printing с наивысшим качеством Изменять контент страницы ModifyContents или документа, вставлять или удалять страницы, вращать страницы, добавлять закладки Копировать текст и графику со страниц, CopyContents извлекать текстовые и графические данные для дальнейшего использования Изменять или добавлять комментарии, ModifyAnnotations заполнять поля формы данными Реконфигурировать ModifyContents and ModifyAnnotations или добавлять поля формы Все вышеперечисленное AIIFeatures
Табл. 5-2. Права доступа для 128-битной защиты Печатать страницы Printing с наивысшим качеством Печатать страницы DegradedPrinting с самым низким качеством Изменять контент страницы ModifyContents или документа, вставлять или удалять страницы, вращать страницы, добавлять закладки Вставлять или удалять страницы, Assembly вращать страницы, добавлять закладки Копировать текст и графику со страниц CopyContents Извлекать текстовые и графические ScreenReaders данные для последующего использования Изменять или добавлять комментарии, ModifyAnnotations заполнять поля формы данными Заполнять поля формы данными Fillln Реконфигурировать ModifyContents или добавлять поля формы and ModifyAnnotations AIIFeatures Все вышеперечисленное AIIFeatures и печать наивысшего качества При сравнении таблиц видно, что Assembly — это вариант Modify- ModifyContents, a Fillln — вариант ModifyAnnotations. Право доступа DegradedPrinting посылает принтеру страницы как растровые изображения, тогда как Printing — в формате PostScript. PostScript-поток может быть прерван и возвращен в незащищенный PDF-документ, поэтому использование права доступа Printing вносит определенный риск, однако право доступа DegradedPrinting снижает качество напечатанных страниц. После установки прав доступа и/или пользовательского пароля их изменение требует наличия пароля владельца. Зашифрованный ввод и pdftk При использовании программы pdftk для зашифрованных докумен- документов должен быть обеспечен пароль владельца. Если документ его не имеет — должен использоваться пользовательский пароль. В против- противном случае при pdftk-запросе никакой пароль не должен быть связан с этим документом. Введите PDF-пароли, перечисляя их после имен входных файлов, например: pdftk <input PDFfiles> input_pw <input file passwords> ...
Рис. 5-2. Свойства стандартной защиты PDF-документа, определяющие права пользователя Дескрипторы файла, указанные в <input PDF files>, используются, чтобы связать файлы с паролями в <input file password> следующим образом: <input PDF handle>=<input PDF password> Например: A=foopass Добавление этого параметра в пример из раздела «Шифрование и рас- расшифровка PDF-документов (без помощи Acrobat)» [Совет № 51] выглядит следующим образом: pdftk A=inl.pdf B=in2.pdf C=in3.pdf \ input_pw A=foopass cat Al Bl-end C5 output out.pdf
Использование pdftk для шифрования вывода Любой PDF-документ, созданный с помощью программы pdftk, можно зашифровать, просто добавив параметры шифрования после имени выходного файла, например: ... output <output filename> \ [encrypt_40bit | encrypt_l28bit] [allow <permissions>] \ [owner_pw <owner password>] [user_pw <user password>] Вот описание разделов: [encrypt_4Obit | encrypt_128bit] Определяет надежность шифрования. Если она не указана наряду с другими параметрами шифрования, то значением по умолчанию явля- является encrypt_l28bit. [allow <permissions>] Перечисляет права доступа, предоставленные пользователям. Если этот раздел опущен, никакие права доступа не предоставляются (см. таблицы 5-1 и 5-2 с полным списком прав доступа), [ownerjpw <owner password>] Устанавливает пароль владельца. Если этот раздел опущен, пароль владельца не устанавливается. [user_pw <user password>] Устанавливает пользовательский пароль. Если раздел опущен, поль- пользовательский пароль не устанавливается. Добавление этих параметров к примеру в разделе «Разбиение и объе- объединение PDF-документов (без помощи Acrobat)» [Совет № 51] выглядит следующим образом: pdftk A-inl.pdf B=in2.pdf C=in3.pdf \ cat Al Bl-end C5 output out.pdf \ encrypt_128bit allow Copy Contents Printing \ owner_pw ownpass Простое шифрование или расшифровка файла Предыдущие примеры соответствовали контексту раздела «Разбиение и объединение PDF-документов (без помощи Acrobat)» [Совет № 51]. Вот при- примеры простого добавления или отмены шифрования отдельного файла: Шифрование отдельного файла pdftk A=input.pdf output encrypted.pdf \ encrypt_128bit allow Copy Contents \ owner_pw foopass Расшифровка отдельного файла pdftk A=encrypted.pdf input_pw A=foopass output decrypted.pdf
Добавление операции шифрования документов формата PDF в контекстное меню Windows (Добавление или отмена шифрования PDF-документа щелчком правой кнопки мыши.) В разделе «Шифрование и расшифровка PDF-документов (без помощи Acrobat)» [Совет № 52] обсуждались вопросы применения или отмены шифрования PDF-документа с помощью программы pdfrk [Совет № 79]. Упростите эти операции защиты, добавляя пункт Encrypt and Decrypt (Зашифровать и расшифровать) к контекстному меню PDF-докумен- PDF-документа. Шифрование просто применяет пользовательский пароль к вы- выбранному PDF-документу, поэтому никто не может открыть его без пароля. Опция расшифровки удаляет всю стандартную защиту. Добавление пункта контекстного меню для шифрования PDF-документа Процедура аналогична предыдущей. Присвойте действию имя Decrypt (Расшифровать) и замените параметры файла cmd.exe в шаге 4 следующими: C:\windows\system32\cmd.exe /С C:\windows\system32\pdftk.exe «%1» input_pw PROMPT output «7ol.decrypted.pdf» Использование шифрования или расшифровки Щелкните правой кнопкой мыши на PDF-документе, представляющем интерес, и выберите Encrypt (Зашифровать) или Decrypt (Расшифровать) из контекстного меню. Откроется приглашение к вводу команды и запрос пароля. Если введенный пароль правильный, программа pdftk создаст но- новый PDF-файл с именем, основывающемся на первоначальном имени PDF-файла. Если у pdftk возникают проблемы при выполнении запроса, приглашение к вводу команды останется открытым с соответствующим сообщением. Нажмите клавишу Enter, чтобы закрыть это сообщение. При вызове одной из этих команд для группы PDF-документов выда- выдается отдельное приглашение к вводу команды для каждого документа. Добавление вложений в PDF-документ (без помощи Acrobat) (Добавьте оперативные данные, чтобы читатели могли их распаковать и использовать.) Типичный документ в формате PDF содержит шрифты, изображе- изображения, аннотации и метаданные. Оказывается, что в PDF-файл можно упаковать даже исходный документ! Эти вложения используют преиму- преимущества формата PDF, такие как сжатие, шифрование и цифровые под-
писи. Вложения позволяют обеспечить читателей дополнительными данными типа таблиц в формате исходного документа, которые они мо- могут использовать. Чтобы извлечь данные из PDF-документа [Совет № 71], прикрепите данные своего документа как HTML или Excel-файл. Этот метод взлома объясняет, как прикрепить файлы к документу в формате PDF, а раздел «Добавление таблиц к документу» [Совет № 55] — как извлечь таблицы из исходного документа для вложения в PDF-документ. Вложения страниц и вложения документов Можно прикрепить файл к определенной PDF^-странице, где он бу- будет отображаться как значок, или прикрепить файл к PDF-документу с присвоением ему более низкого статуса. После шифровки PDF-доку- PDF-документа вложения к нему не могут быть распакованы без права доступа ModifyAnnotations [Совет № 52]. С другой стороны, вложения страниц могут быть распакованы независимо от прав доступа. Конечно, если PDF-документ требует пользовательского пароля, то он должен быть сначала открыт. Прикрепление PDF-файлов с помощью Acrobat Чтобы прикрепить файл к PDF-странице, используйте инструмент Attach File (Прикрепить файл). В Acrobat 6 обратитесь к нему, используя па- панель инструментов Advanced Commenting (Дополнительное комментиро- комментирование) или с помощью команды меню Tools\Advanced Commenting\Attach menu (Сервис\Цополнительное комментирование\Меню прикрепления). В Acrobat 5 используйте панель инструментов Commenting (Комментирова- (Комментирование). Щелкните по стрелке вниз кнопки Note (Примечание), а затем на- нажмите на кнопку Attach File (Прикрепить файл), как показано на рисунке 5-3. Рис. 5-3. Кнопка Attach File в Acrobat 6 и скрытая кнопка Attach File в Acrobat 5 Активизируйте инструмент Attach File (Прикрепить файл), и курсор примет вид канцелярской кнопки. Щелкните на нужной странице,
чтобы появился значок вложения, и откройте диалоговое окно выбора файлов. Выберите файл для присоединения — откроется диалоговое окно свойств, где можно настроить вид значка вложения. Вложения документа отличаются от вложений страницы. В Acrobat 6 обратитесь к вложениям документа командой Document\File Attachments (ДокуменДВложения файла). Выберите пункт Document File Attachments (Вложения файлов документа), а затем — Import (Им- (Импортировать), чтобы добавить вложение. В Acrobat 5 выберите команду File\Document Properties\Embedded Data Objects (ФашДСвойства до- кумента\Внедрение объектов данных), а затем — Import (Импорт). Прикрепление файлов к PDF-документам с помощью pdftk Бесплатная программа pdftk [Совет № 79] прикрепляет файлы к PDF- документам и страницам. При прикреплении файлов к существующе- существующему PDF-документу вызовите программу pdftk следующим образом: pdftk <PDF fitename> attach_file <attachment filename> \ [to_page <page number>] output <output filename> Имя выходного файла должно отличаться от имени входного фай- файла. Например, прикрепите файл data.xls к первой PDF-странице report.pdf: pdftk report.pdf attach_file data.xls to_page 1 output report.page_ attachment.pdf Прикрепите файл data.xls к report.pd/как вложение документа вместо вложения страницы, опуская параметр to_page: pdftk report.pdf attach_file data.xls output report.doc_attachment.pdf Можно включить и дополнительные выходные параметры, напри- например опции PDF-шифрования. Вложения и шифрование При шифровании PDF-документа шифруются и его вложения. От- Отсутствие прав доступа может лишить пользователей возможности рас- распаковывать их. См. раздел «Шифрование и расшифровка PDF-докумен- PDF-документов (без помощи Acrobat)» [Совет № 52] для получения дополнительной информации о шифровании с помощью программы pdftk. Как только PDF-документ открывается в Acrobat/Reader (который может потребовать пароль), любые файлы, прикрепленные к PDF- страницам, могут быть распакованы независимо от прав доступа PDF- документа. Это позволяет отключить функции копирования/вставки, но все же делает данные доступными для читателей.
Вложения документа более ограничены, чем вложения страницы. Предоставьте право доступа ModifyAnnotations, если хотите, чтобы чи- читатели могли распаковать и просмотреть вложения документа. Добавление таблиц к документу (Упакуйте необходимую информацию исходного документа в PDF-издание.) Читатели копируют данные из PDF-документов, чтобы использо- использовать их в собственных документах или электронных таблицах. Таблицы обычно содержат самые ценные данные, но их сложнее всего извлекать из PDF-документов [Совет № 7]. Предоставьте читателям нужную ин- информацию (см. рисунок 5-4), автоматически извлекая таблицы из исход- исходного документа, конвертируя их в электронную таблицу Excel, а затем прикрепляя к своему PDF-документу. Рис. 5-4. Предоставление оперативных данных вашим читателям
Копирование таблиц в новый документ В Microsoft Word используется макрокоманда для копирования таб- таблицы документа в новый документ. Создайте ее следующим образом. Командой меню Tools\Macro\Macros (Сервис\Макрос\Макросы) откройте диалоговое окно Macros. Введите CopyTablesIntoNewDocument в поле Macro name:, установите значение Macros in: в Normal.dot и на- нажмите Create (Создать). Откроется диалоговое окно, в котором нужно ввести код макрокоман- макрокоманды. Если уже имеются две строки кода: Sub CopyTablesIntoNewDocument() и End Sub, то их не следует дублировать. Загрузите с сайта http://www.pdfhacks.com/copytables/следующий код: Sub CopyTablesIntoNewDocument() ' version 1.0 ' http://www.pdfhacks.com/copytables/ Dim SrcDoc, NewDoc As Document Dim SrcDocTableRange As Range Set SrcDoc = ActiveDocument If SrcDoc.Tables.Count <> 0 Then Set NewDoc = Documents. Add(DocumentType:=wdNewBlankDocument) Set NewDocRange « NewDoc.Range Dim PrevPara As Range Dim NextPara As Range Dim NextEnd As Long NextEnd - 0 For Each SrcDocTable In SrcDoc.Tables Set SrcDocTableRange - SrcDocTable.Range 'вывести предыдущий параграф? Set PrevPara = SrcDocTableRange.Previous(wdParagraph, 1) If PrevPara Is Nothing Or PrevPara. Start < NextEnd Then Else Set PPWords - PrevPara.Words If PPWords.Count > 1 Then 'yes NewDocRange.Start = NewDocRange.End NewDocRange.InsertParagraphBefore NewDocRange.Start = NewDocRange.End NewDocRange.InsertParagraphBefore NewDocRange.FormattedText = PrevPara.FormattedText End If End If 'вывод таблицы NewDocRange.Start = NewDocRange.End NewDocRange.FormattedText = SrcDocTableRange.FormattedText
'вывести следующий параграф? Set NextPara = SrcDocTableRange.Next(wdParagraph, 1) If NextPara Is Nothing Then Else Set PPWords = NextPara.words NextEnd = NextPara.End If PPWords.Count > 1 Then 'yes NewDocRange.Start = NewDocRange.End NewDocRange.InsertParagraphBefore NewDocRange.F6rmattedText=NextPara.FormattedText End If End If Next SrcDocTable End If End Sub Выполните эту макрокоманду в редакторе Word, открыв командой меню Tools\Macro\Macros (Сервис\Макрос\Макросы) диалоговое окно Macros, выбрав Copy Tables Into New Document (Копировать таблицу в новый документ) и нажав Run (Выполнить). Откроется но- новый документ, содержащий все таблицы из текущего документа. Он будет также включать абзацы, стоящие до и после каждой таблицы. Эта функция добавлена, чтобы помочь читателям найти нужную им таблицу. Измените код макрокоманды в соответствии со своими на- настройками. Создание HTML или Excel-документа из документа, содержащего таблицы Используйте метод, описанный в разделе «Создание HTML-издания с помощью редактора Word» [Совет № 35], чтобы конвертировать документ в формат HTML. Создайте HTML-файл подобно электронной таблице Excel, изменяя расширение имени файла с html на xls. Excel прекрасно открывает данные этим способом. Кроме того, что программа Excel открывает HTML- файлы, замаскированные под XLS-файлы, она конвер- конвертирует интернет-сайты в электронные таблицы. В Excel командой меню File\Open (Файл\Открыть) откройте диалоговое окно Open, введите сетевой адрес в поле File name: и щелкните Open (Открыть). Прикрепление таблиц к PDF-документу См. раздел «Добавление вложений в PDF-документ (без помощи Acrobat)» [Совет № 54] для детального описания процедуры прикрепле- прикрепления вложений с помощью контекстного меню [Совет № 56].
Добавление операции вложения в PDF-документ в контекстное меню Windows (Упаковка или распаковка PDF-вложений из Windows File Explorer с помощью контекстного меню.) Простые задачи надо выполнять простым способом. Свяжите про- программу pdftk [Совет № 79] с Windows Explorer так, чтобы упаковать или распаковать вложения можно было, открывая щелчком правой кноп- кнопкой мыши контекстное меню PDF-документа. Создание пункта контекстного меню Attach File (Прикрепить файл) В Windows XP и Windows 2000: 1. В Windows File Explorer командой меню Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options, выберите вкладку File Types (Типы файлов), а затем — тип файла PDF и нажмите на кнопку Advanced (Дополнительно). 2. Щелкните на кнопке New (Создать) и откройте диалоговое окно New Action (Новое действие). Присвойте новому действию имя Attach File (Прикрепить файл). 3. Передайте это действие приложению, которое будет его исполь- использовать, нажав на кнопку Browse (Просмотреть) и выбрав файл cmd.exe, который находится в каталоге: C:\windows\ system32\ (в Windows XP) или C:\winnt\system32\ (в Windows 2000). 4. Добавьте эти параметры после cmd.exe, изменив путь в соответст- соответствии со своими настройками: С: \windows\system3 2 \crnd. ехе /С C:\windows\system32\pdftk.exe «%1» attach_file PROMPT output PROMPT 5. Нажмите три раза OK, сохраняя произведенные изменения и за- закрывая диалоговые окна. Создание пункта контекстного меню Unpack Attachments (Распаковать вложения) Процедура аналогична предыдущей за исключением следующего: присвойте действию имя Unpack Attachments (Распаковать вложения) и замените параметры cmd.exe в шаге 4: /С C:\windows\system32\pdftk.exe «%1» unpack_files
Использование прикрепления файлов или распаковки вложений Щелкните правой кнопкой мыши по PDF-документу, представляю- представляющему интерес, и выберите Attach File (Прикрепить файл) или Unpack Attachments (Распаковать вложения) в контекстном меню. Откроется приглашение к вводу команды и запрос дополнительной информации. В случае успеха операции приглашение к вводу команды закроется. Ес- Если у программы pdftk возникнут проблемы при выполнении операции, то приглашение к вводу команды останется открытым с соответствую- соответствующим сообщением. Нажмите клавишу Enter, чтобы закрыть его. Используйте перетаскивание для быстрого ввода имен прикрепляемых файлов. Выберите файл в программе Explorer, перетащите его в окне командной строки и отпустите кнопку мыши. В строке появится полное имя файла. Если необходимо прикрепить/распаковать набор из нескольких PDF-документов, то приглашение к вводу команды выдается отдельно для каждого документа. Создание предметного указателя из ключевых слов (Добавьте возможность поиска к своему печатному изданию.) Создание хорошего предметного указателя к документу — это труд- трудная работа, выполняемая профессионалами. Однако автоматически сгенерированный индекс также может быть очень полезен. Исполь- Используйте автоматически создаваемые ключевые слова [Совет № 19] или свои собственные. Этот метод взлома определяет местонахождение страниц, формирует ссылку, а затем создает PDF-страницы, которые можно добавить в конце документа (см. рисунок 5-5). Он использует мет- метки страниц PDF-документа (логическую нумерацию страниц) для ус- успешного поиска. Инструментальные средства Загрузите и установите программы pdftotext [Совет № 19], kw_index [Совет № 19] и pdftk [Совет № 79]. Необходимо также наличие про- программ enscript (для пользователей Windows: http://gnuwin32.sf.net/ packages/enscript.htm) и ps2pdf. Программа pslpdf поставляется с Ghostscript [Совет № 39]. Пакет kw_index включает программы kw_catcher и page_refs (и исходный код), которые используются в сле- следующих разделах.
Рис. 5-5. Преобразование ключевых слов документа в предметный указатель документа в формате PDF Процедура Сначала выполните логическую нумерацию страниц своего PDF- документа [Совет № 62], соответствующую нумерации страниц первоис- первоисточника. Затем используйте программу pdftk, чтобы поместить эту ин- информацию в текстовый файл, следующим образом: pdftk mydoc.pdf dump_data output mydoc.data.txt С помощью программы pdftotext преобразуйте свой PDF-документ в открытый текст: pdftotext mydoc.pdfmydoc.txt Создайте список ключевых слов [Совет № 19] из файла mydoc.txt, ис- используя программу kw_catcher, например: kw_catcher 12 keywords_only mydoc.txt > mydoc.ku.txt Отредактируйте файл mydoc.kw.txt, чтобы удалить лишние и доба- добавить отсутствующие ключевые слова. В строке допускается наличие только одного ключевого слова. Если в строке больше одного слова, то программа page_refs транслирует их в фразы.
Используя программу page_refs, создайте текстовый индекс: page_refs mydoc.txt mydoc.kw.txt mydoc.data.txt > mydoc.index.txt Создайте PDF-документ из файла mydoc.index.txt, используя про- программы enscript и ps2pdf: enscript -columns 2 -font Times-Roman® 10' \ -header '| (INDEX' -header-font 'Times-Bold® 14' \ —margins 54:54:36:54 —word-wrap —output - mydoc.index.txt \ | ps2pdf - mydoc.index.pdf Код Эту процедуру необходимо поместить в сценарий. Скопируйте ни- нижеследующий Bourne shell-сценарий в файл под названием make_index.sh и сделайте его исполняемой программой, применив ко- команду chmod 700. Пользователи Windows могут получить язык Bourne shell, установив MSYS [Совет № 97]. #!/bin/sh # make_index.sh, версия 1.0 # использование: make_index.sh <PDF filename> <page window> # требует: pdftk, kw_catcher, page_refs, # pdftotext, enscript ps2pdf # # от Ross Presser, Imtek.com # адаптирован Sid Steward # http://www.pdfhacks.com/kw_index/ fname=4basename $1 .pdf pdftk ${fname}.pdf dump_data output ${fname}.data.txt && \ pdftotext ${fname}.pdf ${fname}.txt && \ kw_catcher $2 keywords_only ${fname}.txt \ | page_refs ${fname}.txt - ${fname}.data.txt \ I enscript -columns 2 -font Times-Roman@10/ \ -header '| (INDEX' -header-font Thnes-Bold@l4' \ -margins 54:54:36:54 -word-wrap -output - \ | ps2pdf - ${fname}.index.pdf Выполнение кода Передайте имя своего PDF-документа и размер окна программы kw_catcher файлу makejndex.sh, например: make_index.sh mydoc.pdf12 Сценарий создаст индекс документа под названием mydoc.index.pdf. Откорректируйте этот индекс и добавьте его, если нужно, в конец PDF- документа [Совет № 51]. Сценарий создает также два промежуточных
файла: mydoc.data.txt к mydoc.txt. Если индекс PDF-документа содержит ошибки, просмотрите эти промежуточные файлы для устранения про- проблем. Если индекс PDF-документа вас удовлетворяет — удалите их. Второй параметр программы makejndex.sh управляет точностью об- обнаружения ключевого слова. Меньшие числа приводят к меньшему ко- количеству ключевых слов при риске пропуска некоторых из них; боль- большие числа допускают больше ключевых слов, а также больше фона. В разделе «Генерирование ключевых слов документа» [Совет № 19] обсужда- обсуждается этот параметр и использующая его программа kw_catcher. Преобразование художественных работ в растровый формат с помощью программ Illustrator или Photoshop (При сетевом распространении PDF-документов векторные рисунки утяжеляют их.) Векторные рисунки обеспечивают самое высокое качество на всех носителях. Для простых иллюстраций типа диаграмм и графов они также более эффективны, чем точечные рисунки. Однако при подго- подготовке PDF-документа для сетевого распространения иногда обнару- обнаруживается, что сложное векторное изображение утроило размер PDF- файла. Программы Acrobat и Illustrator (или Photoshop) позволяют оперативно растеризовать такой рисунок и уменьшить размер файла PDF-документа. Большой объем при небольшом занимаемом месте Как это происходит? Векторные изображения легко масштабируют- масштабируются, не изменяя своего качества. Это означает, что большой детальный векторный рисунок размером 2 Мб может быть уменьшен до размера почтовой марки. Но при том, что большинство его деталей могут быть невидимы на бумажной распечатке или экране, размер рисунка все еще равен 2 Мб. Эта проблема возникает, когда требуется распростра- распространять этот рисунок по сети и уменьшить размер файла документа. Интегрирование программ Illustrator или Photoshop в Acrobat Если у вас есть программы Adobe Acrobat 6 Pro, или Acrobat 5 и Adobe Illustrator, или Adobe Photoshop, то можно растеризовать PDF-рисунки. Сначала нужно сконфигурировать инструмент TouchUp Object в Acrobat, чтобы открывать PDF-документы в программах Illustrator или Photoshop. В Acrobat выберите Edit\Preferences\General\TouchUp (Правка\Па- раметры настройки\Общие\Тоис!1ир), нажмите Choose Page/Object Editor (Выбрать страницу/Редактор объекта), а затем найдите файл Illustrator.exe, расположенный в каталоге: C:\Program Files\Adobe\lllus-
trator 9.0.1\. Или используйте программу Photoshop вместо Illustrator, найдя файл Photoshp.exe, расположенный в каталоге C:\Program Files\ Adobe\Photoshop 6.0\. Нажмите Open (Открыть), а затем — ОК, чтобы подтвердить новую установку Preferences. Растеризация рисунков с помощью программы Acrobat Сделайте резервную копию своего PDF-документа, чтобы иметь первоисточник. Откройте PDF-документ в Acrobat и определите местонахождение рисунка, который хотите растеризовать. Активизируйте инструмент TouchUp Object командой меню Tools\Advanced Editing (Сервис\Рас- ширенное редактирование) в Acrobat 6 и выделите рисунок. Это требу- требует некоторых экспериментов и терпения, т. к. иллюстрация может ис- использовать множество отдельных объектов и быть связана с другими элементами на странице, которые вам не нужны. Растяните прямоугольник выделения, охватывающий рисунок. Если при этом захватываются нежелательные элементы, попробуйте удалить их из выделенной области, удерживая клавишу Shift и щелкая на них. Если вы пропустили элементы, которые хотели выбрать, то можете до- добавить их тем же способом: щелкнуть на них кнопкой мыши, удерживая клавишу Shift. Использование клавиши Shift — полезный способ добав- добавления или удаления элементов из текущей выделенной области. Удер- Удерживая клавишу Shift при вытягивании прямоугольника выделения, можно включать или исключать элементы из текущей области выделе- выделения, в зависимости от их предыдущего состояния. При случайном перемещении элемента нажмите комбинацию кла- клавиш Ctrl-Z или используйте команду Edit\Undo (Правка\Отменить), чтобы восстановить его предыдущее местоположение. Если результаты не удовлетворяют, закройте PDF-документ без сохранения и откройте повторно, чтобы начать все снова. Использование программы Illustrator. После выделения рисунка в программе Acrobat щелкните правой кнопкой мыши внутри зоны вы- выделения и выберите в контекстном меню Edit Objects (Редактировать объекты). Откроется Adobe Illustrator и появится выбранный материал. Выберите элементы, которые хотите растеризовать. Можно выбрать всю страницу командой Edit\Select All (Правка\Выделить все). Если первоначальная область выделения включала нежелательные элемен- элементы, удалите их. Клавиша Shift работает в программе Illustrator так же, как и в Acrobat. После создания области выделения в программе Illustrator командой меню Object\Rasterize (ОбъекДРастеризовать) откройте диалоговое окно, выберите подходящую цветовую модель (например, RGB) и раз-
решающую способность (например, 300 пикселей на дюйм) и нажмите ОК. Убедитесь, что изображения сохранили детали. Если результаты устраивают — сохраните их и закройте файл Illustrator. Acrobat автома- автоматически модифицирует PDF-документ и отобразит все изменения. Ес- Если результаты удовлетворяют, то сохраните PDF-документ в програм- программе Acrobat. В противном случае откажитесь от них, нажимая клавиши Ctrl-Z, или выбирая команду Edit\Undo, или закрывая PDF-документ без сохранения, и начните все сначала. Использование программы Photoshop. При использовании програм- программы Photoshop нельзя выделить отдельные объекты, которые требуется растеризовать, т. к. Photoshop немедленно растеризует все, что выделе- выделено в программе Acrobat. Одно из преимуществ использования этой программы состоит в том, что она не пытается заменять шрифты, что иногда делает Illustrator. После выделения изображения в Acrobat щелкните правой кнопкой мыши в выделенной области и выберите в контекстном меню Edit Objects (Редактирование объектов): откроется программа Photoshop и запросит разрешающую способность. Введите ее величину (например, 300 пикселей на дюйм), нажмите ОК: появятся растеризованные результаты. Рассмотрите их, чтобы удостовериться, что изображения сохранили детали. Если результат ус- устраивает, сохраните файл Photoshop. По умолчанию он должен сохра- сохраняться в формате PDF, но иногда его приходится выбирать в диалого- диалоговом окне Save (Сохранить). Перед сохранением файла программа Photoshop запрашивает о способе кодирования (ZIP или JPEG). При выборе JPEG можно установить его качественный уровень. После со- сохранения растеризованных изображений в Photoshop Acrobat автома- автоматически модифицирует PDF-документ, отображая изменения. Если они вас устраивают — сохраните PDF-документ. В противном случае откажитесь от них, нажимая клавиши Ctrl-Z, или используя команду Edit\Undo (Правка\Отменить), или закрывая PDF-документ без со- сохранения в программе Acrobat и начиная все сначала. Изменение порядка слоев на страницах в Acrobat Иногда после возвращения растеризованных изображений в PDF- документ они закрывают и затеняют другие элементы страницы. Вы- Выход состоит в помещении нового точечного рисунка на задний план. В Acrobat 5 выберите точечный рисунок с помощью инструмента TouchUp Object, щелкните правой кнопкой мыши и выберите в контекст- контекстном меню Cut (Вырезать). Щелкните правой кнопкой мыши где-нибудь на странице и выберите Paste In Back (Поместить сзади). Точечный рису- рисунок должен появиться в том же месте, но позади других элементов страни-
цы. Если он не появляется, то, вероятно, затеняется большим фоновым элементом. Выберите этот объект затенения, вырежьте его и вставьте тем же способом. Сохраните PDF-документ после окончания работы. В Acrobat 6 командой меню View\Navigation Tabs\Content (Вид\На- вигационные вкладки\Содержимое) выберите вкладку Content и щелк- щелкните на символе «плюс», чтобы открыть иерархический список постра- постраничных ссылок документа. Определите местонахождение нужной страницы, а затем щелкните на символе «плюс», чтобы открыть иерар- иерархический список объектов страницы. Нижерасположенные объекты этого списка накладываются на более высоко расположенные объекты. Идентифицируйте изображение (оно будет находиться в узле XObject), а затем перетащите его к более высокому уровню в иерархии страницы. Это требует некоторого опыта. См. раздел «Добавление и обслуживание PDF-закладок» [Совет № 63], содержащий советы по перетаскиванию этих узлов. Сохраните PDF-документ после окончания работы. Обрезка страниц для большего удобства просмотра (Обрезка страницы гарантирует максимальную четкость экранного отображения.) При просмотре PDF-документа в программах Reader или Acrobat страница часто масштабируется, чтобы соответствовать ширине или высоте окна средства просмотра. Можно заставить содержимое страни- страницы казаться на экране большим, обрезая поля страницы, как показано на рисунке 5-6. Обрезка не влияет на масштаб выведенной страницы, но может изменить позицию содержимого на напечатанной странице. Инструмент обрезки в Acrobat может удалять дополнительные поля страницы. Используйте его в комбинации со свободно доступным до- дополнением ВВОХ к программе Acrobat. Эти два инструмента облегчат поиск наилучших вариантов обрезки страницы и применение их ко всему документу. Инструмент обрезки в Acrobat С помощью инструмента обрезки программы Acrobat (см. рисунок 5-7) определите область обрезки произвольной формы, щелкая на страни- странице и вытягивая прямоугольник. Дважды щелкните на этой области или просто на странице и откройте диалоговое окно Crop Pages (Обрезка страниц). Оно дает возможность непосредственного ввода размеров поля для обрезки. С помощью этих параметров настройки определяет- определяется диапазон страниц документа, которые нужно обрезать. Установка Remove White Margins (Удалить белые поля) кажется той, которая нуж- нужна, но приводит к появлению страниц с разными размерами.
Рис. 5-6. Обрезка страниц способствует большей четкости экранного отображения Рис. 5- 7. Инструмент обрезки в Acrobat 6 (слева) и в Acrobat 5 (справа) Инструмент обрезки, выделяя область произвольной формы, дает не- нерегулярный размер страницы, не центрирующий ее содержимое. Реше- Решение состоит в том, чтобы использовать опцию Snap to Grid (Привязаться к сетке) с помощью команды меню View\Snap to Grid (Вид\Привязаться к сетке). По умолчанию эта сетка имеет три ячейки на дюйм, но удобнее ее настройка для отображения четырех или восьми ячеек на дюйм.
В Acrobat 5 обрезка с высокой точностью требует ис- использования точек вместо дюймов. Командой меню File\Preferences\Display (Файл\Параметры настрой- ки\Отображение) откройте диалоговое окно Display и измените значение Page Units на Points (Точки). Можно использовать значения: 72 точки на дюйм или 9 точек на 1/8 дюйма. Дополнение ВВОХ к программе Acrobat для Windows Загрузите ВВОХ с сайта http://www.pdfhacks.com/bbox/, разархиви- руйте и скопируйте файл pdfhacksjbbox.api в папку plugjns программы Acrobat [Совет № 4]. При перезапуске программы Acrobat он добавится в меню Plug-Ins (Дополнения к программе): Plug-Ins\PDF Hacks\BBOX (пункты показаны на рисунке 5-8). Рис. 5-8. Использование ВВОХ для удаления лишних полей и промежутков Опция Auto-Crop (Автообрезка) программы ВВОХ обрезает сколько возможно из видимой в настоящее время страницы. Она выполняет обрезку с множителем 1/8 дюйма (9 точек), так что окончательный раз- размер страницы является стандартным, но эта опция иногда оставляет края, нуждающиеся в дополнительной обрезке. Опция Trim Page (Обрезка кромок страницы) дает возможность об- обрезать 1/8 дюйма от левых или правых краев страницы. Если вы обре- обрезали больше, чем надо, то используйте опцию Extend Page (Расшире- (Расширение страницы), чтобы добавить 1/8 дюйма. Иногда единицы, кратные 1/8-дюйма, недостаточны, чтобы выпол- выполнить выравнивание по центру страницы. В этих случаях применяется опция Bump Page (Подталкивание страницы). Она не изменяет шири- ширину страницы, а перемещает ее на одну точку за один шаг. Она уменьша- уменьшает обрезку с одной стороны и увеличивает ее с противоположной, поз- позволяя управлять центрированием страницы.
Процедура обрезки документа Для равномерного перемещения между страницами необходимо от- отдельно обрезать четные и нечетные страницы. Выберите эталонную страницу и обрежьте ее на свой вкус, используя любую комбинацию средств Crop и ВВОХ. Если документ имеет меж- межстраничные пробелы, перейдите к следующей странице и обрежьте ее тем же способом. Во время работы перелистывайте эти страницы назад и вперед, чтобы выровнять пробелы между ними, заставить прекратить их прыгать назад и вперед. Когда эталонная страница обрезана соответственно вашим пожела- пожеланиям, откройте диалоговое окно Crop Pages (Обрезка страниц), выбе- выберите инструмент Crop (Обрезать) и дважды щелкните по странице. Ус- Установите диапазон страниц: All Pages (Все страницы). Если вы обрезаете четные и нечетные страницы отдельно, то определите в рас- раскрывающемся списке Even Pages Only (Только четные страницы) или Odd Pages Only (Только нечетные страницы), в зависимости от того, какая страница в настоящее время отображена. Нажмите ОК. Опреде- Определения четные и нечетные в данном контексте относятся к физическим номерам страниц (или индексам страниц) в документе, показанным на рисунке 5-9, а не к логическим номерам страниц (или меткам страниц). Рис. 5-9. Используйте физические номера страниц, обозначенные в скобках, при обрезке страницы Уменьшение размера документов перед отправкой по электронной почте (Сохраните собранный PDF-документ программой Acrobat Distiller, чтобы уменьшить его размер. В Acrobat 6 используйте PDF Optimizer.) Вы открыли два или три PDF-документа, объединили их в один, а затем обрезали. Перед дальнейшим использованием сохраните со- собранный PDF-документ программой Distiller. Это гарантирует, что
PDF-документ оптимизирован для сетевого чтения, а также позволя- позволяет улучшить совместимость PDF-документа со старшими версиями Acrobat и Adobe Reader. В Acrobat 6 можно обойтись без помощи Distiller, используя функции PDF Optimizer, хотя сохранение PDF- документа с помощью программы Distiller может привести к лучшим результатам. Оптимизация документа с помощью Distiller Обработка проводится с помощью простого копирования PDF-до- PDF-документа в Distiller, который создает новый PDF-файл: 1. Сохраните PDF-документ в программе Acrobat с помощью ко- команды File\Save As (Файл\Сохранить как). 2. Откройте командой меню File\Print (Файл\Печать) диалоговое окно Print программы Acrobat и выберите Adobe PDF printer в Acrobat 6 или Distiller printer в Acrobat 5. 3. Определите профиль программы Distiller, выбирая команду Properties\Adobe PDF Settings (Свойства\Настройки Adobe PDF) и настраивая раскрывающийся список Default Settings (Парамет- (Параметры по умолчанию) в Acrobat 6 или Conversion Settings (Настройки конвертирования) в Acrobat 5. Для сетевого распространения ис- используйте профили eBook, Standard, Screen или Smallest File Size. 4. Если вы обрезали PDF-документ, то должны установить Print Page size (Размер выводимой страницы) в соответствии с разме- размером своей PDF-страницы. В программе Acrobat 6 командой меню Properties\Adobe PDF Settings (Свойства\Параметры настройки) откройте диалоговое окне Print (Печать) и скорректируйте размер страницы на вклад- вкладке Adobe PDF Page Size (Размер страницы Adobe PDF), чтобы она соответствовала вашей странице. Используйте кнопку Add Custom Page (Добавить пользовательскую страницу), если не сможете найти ее размер среди имеющихся вариантов. В программе Acrobat 5 командой меню Properties\Layout (Свой- ства\Расположение) откройте диалоговое окно Print (Печать), выберите вкладку Layout (Размещение), нажмите кнопку Advanced (Дополнительно) и установите Paper Size (Размер бума- бумаги), соответствующий размеру вашей страницы. Если не сможе- сможете найти ее размер среди имеющихся вариантов, выберите опцию PostScript Custom Page Size, 5. Сохраните документ в Distiller. He перезаписывайте свой ориги- оригинальный PDF-документ. 6. Просмотрите окончательный PDF-документ: удовлетворяет ли его качество, уменьшился ли размер файла.
7. Повторно обрежьте страницы, если в этом есть необходимость. 8. Чтобы восстановить закладки и другие особенности, см. раздел «Копирование свойств документа в формате PDF» [Совет № 61]. Оптимизация с помощью PDF Optimizer в Acrobat 6 Professional С помощью опции PDF Optimizer, которая вызывается командой Advanced\PDF Optimizer (Дополнительно\Оптимизатор PDF), выпол- выполнять обработку гораздо удобнее. Параметры ее настройки напоминают Distiller, они дают возможность удалять внедренные шрифты или нежела- нежелательные PDF-функции, а также изменить совместимость PDF-документа с Acrobat 5. Нажмите на кнопку ОК и создайте новый PDF-документ. Сравните его с оригиналом и решите, сохранять ли его или попытаться обработать снова. Наилучший момент для использования PDF Optimi- Optimizer — непосредственно перед размещением PDF-документа в сети. Чтобы сделать PDF-документ, созданный в Acrobat 6, совместимым с Acrobat 5, используйте команду меню File\Reduce File Size (Файл\Уменьшить размер файла вместо PDF Optimizer. Наилучший момент для оптимизации с помощью программы Distiller Наилучший момент для оптимизации PDF-документа с помощью Distiller (в противоположность PDF Optimizer) — после его сборки, но пе- перед добавлением любых PDF-функций. Стандартная последовательность при подготовке PDF-документа для сетевого распространения следующая: 1. Соберите страницы оригинального PDF-документа и сохраните новый PDF-документ командой Save As (Сохранить как). 2. Если необходимо — обрежьте страницы [Совет № 59]. 3. Повторно сохраните оригинальный PDF-документ и сравните окончательный PDF-документ с оригиналом. Корректируйте па- параметры настройки Distiller [Совет № 42] по мере необходимости и выбирайте лучшие результаты. 4. Обрежьте и при необходимости поверните обработанные PDF- страницы. 5. Если оригинальный документ имел закладки или другие функ- функции PDF-документа, скопируйте их в оптимизированный доку- документ [Совет №61]. 6. Добавьте PDF-функции [Совет № 63] или нанесите последние штрихи [Совет № 62]. 7. Сохраните документ снова, используя опцию Save As (Сохранить как), чтобы сжать его. В Acrobat 6 сохраните окончательный PDF-
окумент командой меню File\Reduce File Size (Файл\Уменьшить азмер файла), устанавливая совместимость с Acrobat 5. Копирование свойств из одного PDF-документа в другой (Восстановите закладки, аннотации и формы после обработки своего PDF-документа.) Вы только что переработали PDF-документ [Совет № 60], чтобы со- создать компактное сетевое издание, и программа Distiller удалила нави- навигационные возможности PDF-документа и формы. Объедините нави- навигационные функции старого PDF-документа и формы со страницами нового PDF-документа, чтобы получить удобный интерактивный PDF-документ: 1. Откройте старый PDF-файл (с закладками, ссылкам и полями формы) в Acrobat. 2. Выберите в Acrobat 6 команду меню Document\Pages\Replace (Документ\Страницы\Заменить), а в Acrobat 5 — Document\ Replace Pages (ДокуменДЗаменить страницы). 3. Откроется диалоговое окно выбора файлов. Выберите новый PDF-файл (без PDF-функций). 4. Откроется диалоговое окно Replace Pages (Заменить страницы) с запросом, какие страницы заменить. Введите номер первой и по- последней страниц документа. 5. Выберите опцию Save As (Сохранить как), чтобы сохранить окончательный PDF-документ в новом файле. 6. Проверьте окончательный PDF-документ, чтобы удостоверить- удостовериться, что все интерактивные функции успешно внедрены. Использование опции Replace Pages для отделения видимой стра- страницы от ее интерактивных функций, довольно удобно. Если вам когда-либо понадобится переместить страницу с ее интерактивны- интерактивными функциями, используйте команды Extract Pages (Извлечь стра- страницы), Insert Pages (Вставить страницы) и Delete Pages (Удалить страницы). Окончательная шлифовка PDF-издания (Мелочи могут иметь большое значение для ваших читателей.) Большинство создателей не использует эти параметры настройки PDF-документа, хотя они улучшают возможности чтения и их просто добавить. Прочитайте раздел «Поддержка чтения PDF-документов в се- сети» [Совет № 67], чтобы узнать о дополнительных опциях, необходимых для выдачи по запросу отдельных PDF-страниц.
Первоначальный вид документа Если PDF-документ имеет закладки, настройте его так, чтобы, буду- будучи открытым, он отображал их, иначе читатели могут никогда их не об- обнаружить. Можно изменить этот и другие параметры настройки в свойствах PDF-документа. В Acrobat 6 используйте команду меню File\Document Properties\Initial View (Файл\Свойства документов\ Первоначальный вид), чтобы получить доступ к этим настройкам. В Acrobat 5 выберите команду File\Document Properties\Open Options (Файл\Свойства документов\Опции открытия). Логическая нумерация страниц Откройте свой PDF-документ в Acrobat и перейдите к странице 1. Если документ не имеет логической нумерации страниц, Acrobat счи- считает, что его первая страница — это страница 1. Но страница 1 доку- документа может фактически попасть на страницу 6 в программе Acrobat, как показано на рисунке 5-10. Вообразите удивление читателей, когда документ переносит их к странице 52, когда они хотят просмотреть страницы 42-47. Рис. 5-10. Синхронизация программы Acrobat с документом
Синхронизируйте нумерацию страниц своего документа с програм- программой Acrobat/Reader, добавляя логические номера страниц к PDF-доку- PDF-документу. В Acrobat 6 выберите вкладку перемещения по страницам коман- командой меню View\Navigation Tabs\Pages (Вид\Навигационные вкладки\ Страницы), выберите Options (Опции), а затем из раскрывающегося ме- меню — Number Pages (Пронумеровать страницы). В Acrobat 5 обратитесь к диалоговому окну Page Numbering (Нумерация страниц) командой Document\Number Pages (ДокуменДПронумеровать страницы). Если нумерация запутана, сбросьте номера страниц, выбирая All Pages (Все страницы), Begin New Section (Начать новый раздел), Style (Стиль): 1, 2, 3..., Prefix: (Об авторе:) (blank), Start:(Haчaлo:) 1, и щелк- щелкните на кнопке ОК. Если документ имеет титульную страницу, ей можно дать логичес- логический номер Cover (Обложка), устанавливая ее значение Style (Стиль) в None (Отсутствует) и присваивая Prefix (Префикс) Cover. Ваш документ имеет первые страницы с римскими номерами? Пере- Переметитесь на страницу 1. Возвратитесь к странице, расположенной перед страницей 1. Откройте диалоговое окно Page Numbering (Нумерация страниц). Установите диапазон страниц From: (С:) 1. Установите Style (Стиль) в i, и, ш,... и удостоверьтесь, что раздел Prefix (Об авторе) пуст. Нажмите ОК. Теперь страницы, предшествующие странице 1, должны быть пронумерованы i, ii, iii,..., а страница 1 должна иметь номер 1. Пройдите до заключительной страницы документа и убедитесь, что нумерация правильная, т. к. при удалении пустых страниц из PDF-до- PDF-документов нумерация сбивается. Если вы планируете удалять пустые страницы из своего PDF-документа, примените логическую нумера- нумерацию страниц заранее. Заголовок документа, автор, тема и ключевые слова Метаданные документа не отображаются как закладки или логичес- логические номера страниц, но читатели могут использовать их для организа- организации своих коллекций [Совет № 22]. Необходимо заполнить их должным образом. Заголовок и поле автора часто заполняются автоматически не- ненужной информацией типа первоначального имени файла документа (например, Mockup.doc) или имени пользователя текстового редактора. Отключите автоматическое добавление метаданных программой Distiller. Откройте программу и отредакти- отредактируйте параметры настройки своего профиля. Отключи- Отключите значение DSC, выбрав команду Advanced\Preserve Document Information (Дополнительно\Сохранить ин- информацию документа) и нажмите на кнопку ОК.
В Acrobat 6 просмотрите и модифицируйте эту информацию, выби- выбирая команду меню File\Document Properties\Description or Advanced\ Document Metadata (Файл\Свойства документа\Описание или Допол- нительно\Метаданные документа). В Acrobat 5 выберите команду File\ Document Properties\Summary (Файл\Свойства документа\Выводы). За дополнительной информацией о PDF-метаданных обратитесь к раз- разделу «Получение и настройка PDF-метаданных» [Совет № 64]. Ориентация страниц и обрезка Просмотрите страницы документа от начала до конца, чтобы убе- убедиться, что обрезка страниц [Совет № 59] не удалила каких-либо данных. Проверьте наличие перевернутых страниц. Верните их к удобной для чтения ориентации, выбирая Document\Pages\Rotate (Документ\Стра- ницы\Вращать) в Acrobat 6 или Document\Rotate Pages (Документ\ Вращать страницы) в Acrobat 5. Вращение и обрезка PDF-страниц может отразиться на их печати. Пользователь должен выбрать опцию Auto-rotate and center page (Авто- (Автоматически вращать и центрировать страницы) из диалогового окна Print (Печать) при печати PDF-документа, чтобы свести неожиданно- неожиданности к минимуму. Добавление и редактирование PDF-закладок (Закладки значительно облегчают перемещение по документу.) В идеальном случае заголовки документа нужно превращать в PDF- закладки при его создании [Совет № 32]. Если он создан без закладок или с неправильными закладками, то можно добавить или изменить их, ис- используя программу Acrobat. Добавление закладок Создайте закладку к текущему отображению, используя комбина- комбинацию клавиш Ctrl+B (Command+B у Macintosh). Затем введите метку для новой закладки и нажмите клавишу Enter. Текущее отображение означает текущую страницу в режиме текущего вида например, Actual Size (Действительный размер), Fit Width (Подогнать по ширине), Fit Page (Подогнать по странице) или текущего масштаба. Например, если вы хотите, чтобы закладка заполняла страницу определенной табли- таблицей, увеличьте ее перед созданием закладки. При создании закладок к заголовкам документа используйте режим просмотра страницы Fit Page (Подогнать по странице).
Для каждой закладки необходима текстовая метка, соответствующая заголовку документа. Вместо ввода текста используйте инструмент Text Select (Выделение текста), чтобы выделить текст заголовка на PDF-странице. При создании закладки нажатием комбинации клавиш Ctrl+B или Command+B выделенный текст переносится в метку. Про- Просмотрите его на отсутствие ошибок. Перемещение закладок Новые закладки не всегда появляются там, где требуется. Выберите закладку, щелкнув на ней правой кнопкой мыши, и перетащите ее в нужное место. Появится небольшой курсор, указывающий, куда пере- переместилась бы закладка, если отпустить кнопку мыши. Выровняйте за- закладку, перемещая ее влево в Acrobat 6 (см. рисунок 5-11) или вправо в Acrobat 5 (см. рисунок 5-12). Появится небольшой курсор, показывая ме- место перемещения закладки. Чтобы переместить блок закладок, сначала выделите их. В Acrobat 6 порядок, в котором выделяются закладки, — это порядок, который они будут иметь после перемещения. Чтобы сохранить порядок размеще- размещения закладок, добавляйте их к групповому выделению сверху вниз. Удерживая клавишу Shift, выделите первую закладку в блоке, а затем последнюю. Удерживая клавишу Ctrl, щелкните на закладке, чтобы до- добавить или удалить ее из выделенной группы. Щелкните на выделен- выделенной группе закладок и перетащите ее к новому местоположению. Добавление и настройка PDF-метаданных (Добавьте информацию о документе к своему PDF-документу, не используя Acrobat) Стандартные метаданные — это заголовок документа, список авто- авторов и ISBN. Но можно добавить и другую информацию, например но- номер редакции документа, категорию, внутренний идентификатор или дату истечения срока действия. PDF-документ может хранить эту ин- информацию двумя различными способами: используя информацион- информационный словарь Info PDF-документа [Совет № 80] или внедренный поток Extensible Metadata Platform (Расширяемая платформа метаданных — ХМР). При изменении заголовка PDF-документа, списка авторов, те- темы или ключевых слов с помощью Acrobat, как показано на рисунке 5-13, модифицируются оба этих ресурса. Acrobat 6, кроме того, дает воз- возможность экспортировать или импортировать PDF ХМР-файлы данных. Для получения дополнительной информации о ХМР Adobe посетите веб-страницу http://www.adobe.com/products/xmp/.
Рис. 5-11. В Acrobat 6 перемещение закладки вправо делает ее вершиной дерева (слева), в то время как перемещение закладки влево делает ее дочерним элементом (справа) Рис. 5-12. В Acrobat 5 перемещение закладки влево делает ее вершиной дерева (слева), в то время как перемещение закладки вправо делает ее дочерним элементом (справа)
Рис. 5-13. Просмотр или изменение основных метаданных PDF-документа в Acrobat В Acrobat 6 просмотрите и модифицируйте метаданные командой меню File\Document Properties\Description or Advanced\Document Metadata (Файл\Свойства документа\Описание или Дополнительно\ Метаданные документа). В Acrobat 5 выберите команду File\Document Properties\Summary (Файл\Свойства документа\Выводы). Сохраните свой PDF-документ после внесения изменений. Программа pdftk [Совет № 79] в настоящее время читает и записывает только метаданные из словаря Info PDF-документа. Однако она не ог- ограничивается только заголовком, списком авторов, темой и ключевы- ключевыми словами, а позволяет при необходимости добавлять в PDF-доку- PDF-документ пользовательские поля метаданных. Программа pdftk — свободно распространяемое программное обеспечение.
Программа pdfinfo из проекта Xpdf (http://www.foolabs.com/xpdf/) со- сообщает о содержании словаря Info PDF-документа, его ХМР-потоке и других данных документа. Программа pdfinfo — бесплатное программ- программное обеспечение. Получение метаданных документа Чтобы создать отчет с открытым текстом о метаданных PDF-доку- PDF-документа, используйте операцию dump_data программы pdftk. Она также сообщит о PDF-закладках и метках страниц. Пример команды: pdftk mydoc.pdf dump.data output mydoc.data.txt Метаданные будут представлены в виде пар ключ/значение наподо- наподобие следующего фрагмента: InfoKey: Creator InfoValue: Acrobat PDFMaker 6.0 for Word InfoKey: Title InfoValue: Brian Eno: His Music and the Vertical Color of Sound InfoKey: Author InfoValue: Eric Tamm InfoKey: Producer InfoValue: Acrobat Distiller 6.0.1 (Windows) InfoKey: ModDate InfoValue: D:20040420234132-07W InfoKey: CreationDate InfoValue: D:20040420234045-07W Другим инструментом для получения информации о PDF-метадан- PDF-метаданных служит программа pdfinfo, которая является частью проекта Xpdf (http://www.foolabs.com/xpdf/). В дополнение к метаданным она сообща- сообщает о размере страниц, их количестве и правах доступа PDF-документа [Совет № 52]. Выполнение pdfinfo mydoc.pdf выдает сообщение наподобие следующего: Title: Brian Eno: His Music and the Vertical Color of Sound Author: Eric Tamm Creator: Acrobat PDFMaker 6.0 for Word Producer: Acrobat Distiller 6.0.1 (Windows) CreationDate: 04/20/04 23:40:45 ModDate: 04/22/04 14:39:30 Tagged: no Pages: 216 Encrypted: no Page size: 522 x 756 pts File size: 1126904 bytes Optimized: yes PDF version: 1.4
Используйте опции программы pdfinfo для ее настройки, а опцию -meta для отображения ХМР-потока PDF-документа. Настройка метаданных документа Программа pdftk модифицирует словарь Info PDF-документа для получения соответствия с файлом открытого текста пар ключ/значе- ключ/значение, но не модифицирует ХМР-поток PDF-документа. Команда может выглядеть следующим образом: pdftk mydoc.pdf update_info new_info.txt output mydoc.updated.pdf Ее выполнение добавит или изменит ключи Info, находящиеся в файле mydoc.new_data.txt. Обратите внимание, что имя выходного файла PDF- документа должно отличаться от имени входного файла. Чтобы удалить пару ключ/значение, просто передайте ей пустое значение, например: InfoKey: MyDataKey InfoValue: Используйте программу pdftk, чтобы получить все Info и ХМР-метаданные из документа, копируя его страни- страницы в новый PDF-документ следующим образом: pdftk mydoc.pdf cat A output mydoc.no_metadata.pdf PDF-спецификация определяет несколько полей Info. Будьте вни- внимательны, используя их только так, как описано в спецификации. Это поля Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate и Trapped. Добавление навигационной панели в веб-стиле к PDF-странице (Дайте читателям возможность видеть необходимые ссылки.) Стили, используемые в сети, предполагают, что читателям нравятся навигационные панели, подобные показанной на рисунке 5-14. Щелк- Щелкнув на ссылке, можно перейти туда, куда вам нужно. PDF-документы обеспечивают подобный способ немедленного перемещения с помо- помощью закладок [Совет № 63]. Закладки идеальны для представления по- подробной иерархической структуры документа, но им не хватает стиля. Создание навигационной панели PDF-документа в Acrobat, а затем дублирование ее для нескольких (или всех) страниц документа не со- составляет труда. Ссылки могут открывать внешние веб-страницы или внутренние PDF-страницы. Добавьте графику и другие элементы, чтобы выделить их. Все это можно сделать с помощью кнопок PDF-формы.
Рис. 5-14. Интегрирование PDF-документа в сеть с помощью навигационной панели Создание и настройка кнопок В Acrobat 6 командой меню Tools\Advanced Editing\Forms (Сервис\ Расширенное редактирование\Формы) активизируйте Button Tool (Инструмент кнопок), а затем создайте прямоугольное окно, перета- перетащив указатель. Отпустите кнопку мыши — откроется диалоговое ок- окно Button Properties (Свойства кнопки). На вкладке Actions (Дейст- (Действия) в раскрывающемся списке Select Action (Выбрать действие) выберите Go to a Page in this Document (Перейти к странице в этом документе) или Open a Web Link (Открыть сетевую ссылку) и нажми- нажмите кнопку Add (Добавить). В открывшемся диалоговом окне введите информацию об адресате. Нажмите ОК, и действие добавится к собы- событию кнопки Mouse Up (Щелчок мышью). Нажмите Close (Закрыть) — кнопка готова к работе. Проверьте ее, выбрав Hand Tool (Инструмент захвата) и нажав на кнопку. Уточните местоположение новой кнопки, активизируя опцию Snap to Grid (Привязать к сетке) командой меню View\Snap to Grid (Вид\Привязать к сетке). Используй- Используйте параметры настройки Units and Guides (Единицы и направляющие) в Acrobat 6 или Layout Grid (Положе- (Положение сетки) в Acrobat 5.
В Acrobat 5 выберите Form Tool (Инструмент формы), а затем со- создайте прямоугольное окно, перетащив указатель. Отпустите кнопку мыши, в открывшемся диалоговом окне Field Properties (Свойства по- поля) введите имя кнопки (оно должно быть уникальным) и определите значение Туре: (Тип:) как Button (Кнопка). На вкладке Actions (Дейст- (Действия) выберите Mouse Up (Щелчок мышью) и нажмите кнопку Add (До- (Добавить). Т. к. в Acrobat 5 нельзя определить переход к странице в пре- пределах документа, выберите JavaScript и введите код, приведенный ниже. Номера страниц в JavaScript отсчитываются от нуля, поэтому в данном примере происходит переход на страницу 6, а не на страницу 5: this.pageNum = 5; Если хотите, чтобы кнопка открывала веб-страницу, выберите World Wide Web Link\Set Action (Ссылка WWW\HacipoHTb действие), на- нажмите OK, и кнопка готова к работе. Проверьте это, выбрав Hand Tool (Инструмент захвата) и щелкнув на кнопке. В Acrobat ссылкам World Wide Web должны предшест- предшествовать символы http://, иначе они не будут работать в старших версиях Acrobat/Reader. Моделирование кнопок и добавление графики По умолчанию все кнопки представляют собой простые серые пря- прямоугольники. Измените фон кнопки и ее границы, используя вкладку Appearance (Вид) в диалоговом окне ее свойств. Отредактируйте назва- название кнопки, используя вкладку Options (Опции). Эта вкладка также дает возможность выбрать графический значок. Установите значение Layout: to include an Icon (Компоновка: включить значок), а затем нажмите Choose Icon (Выбрать значок). В качестве значка кнопки можно использовать точечный рисунок, PostScript-ри- PostScript-рисунок в Acrobat 6 и даже PDF-страницу. Создайте графическую кнопку с пустой командой как фон для других кнопок. Это проще, чем разбивка графики отдельной нави- навигационной панели на несколько частей. Убедитесь, что активные кнопки расположены в верхнем графическом слое, иначе они не бу- будут работать. Перед созданием любой из активных кнопок создайте графический слой или дайте ему более низкую позицию в порядке табулирования. Измените порядок вкладок поля формы в Acrobat 6.0.1, ак- активизируя Select Object Tool (Инструмент выделения объ- объекта) командой меню Tools\Advanced Editing (Сервис\
Дополнительное редактирование), выберите Advanced\ Forms\Fields\Set Tab Order (Дополнительно\Формы\ Поля\Установить порядок вкладок), а затем щелкните на каждом поле в нужном порядке. В Acrobat 5 измените порядок вкладок поля формы, активизируя Form Tool (Инструмент формы) командой меню Tools\Forms\ Fields\Set Tab Order (Сервис\Формы\Поля\Установить порядок вкладок), а затем щелкая на каждом поле в нуж- нужном порядке. Чтобы воспрепятствовать печати кнопки, откройте ее свойства и вы- выберите вкладку General (Общие) в Acrobat 6 или Appearance (Вид) в Acrobat 5. Установите значение Form Field: (Поле формы:) как Visible but Doesn't Print (Показывать, но не печатать). Копирование кнопок Активизируйте Button Tool (Инструмент кнопок) в Acrobat 6 или Form Tool (Инструмент формы) в Acrobat 5 и, удерживая нажатой кла- клавишу Shift, выделите все нужные кнопки. Щелкните правой кнопкой мыши на выделенной группе и выберите Duplicate (Копировать). Введите желательный интервал страниц и на- нажмите ОК. Навигационная панель должна появиться на всех страни- страницах интервала. Просмотрите документ, чтобы убедиться в ее правиль- правильном расположении. Защита PDF-документа от копирования (Управляйте распространением своего документа, усложняя его копирование.) Большой документ требует большой работы, а PDF-документ — это хороший способ распространения больших документов. Иногда даже слишком хороший. Возможно, ваши читатели платят за использование документа, и вы не хотите, чтобы они делали копии для своих друзей, или хотите, чтобы документ читали только на сайте, а не из загруженной копии. Эти виды контроля выходят за рамки стандартной PDF-безопас- PDF-безопасности [Совет № 52]. Этот метод взлома рассматривает некоторые решения. Печатное издание Копирование и распространение печатных копий книги является не- неудобством для большинства читателей, покупающих ее. Ваша цена за эту безопасность — стоимость и проблемы отгрузки и доставки. Однако читатели могли бы предпочесть печатное издание, такое как показано
на рисунке 5-15, обложка которого является полезной добавкой к вашей работе. В разделе «Публикация POD и электронных книг» [Совет № 29] рассматривается вопрос печати книги по требованию (POD: print-on- demand). Печатные издания уязвимы в том, что могут быть преобразо- преобразованы в незащищенный PDF-документ с помощью сканирования и оп- оптического распознавания символов. Рис. 5-15. Старый способ защиты от копирования Только интерактивное чтение Другая идея заключается в том, чтобы не дать читателю загрузить ваш PDF-документ. Можно разбить документ на отдельные страницы, а затем поместить их в HTML-обложку [Совет № 71]. При разбиении PDF-документа обеспечьте дополнительные параметры настройки бе- безопасности [Совет № 52] для выходных страниц, чтобы читатель не смог собрать их. Например: pdftk doc.pdf burst encrypt_128bits owner_pw 23@#5dfa allow DegradedPrinting
После интегрирования своего документа в сайт можете использовать учетные записи пользователя, пароли и другие общие атрибуты защи- защиты для определения прав доступа. Помещенные в обложку PDF-документы могут быть скопированы с сайта с помощью рекурсивного HTTP-робота. Результат — точная ко- копия PDF и HTML-страниц сайта на машине пользователя. Связывание PDF-документа с машиной пользователя Программные средства Digital Rights Management (Управление циф- цифровыми правами, DRM) предоставляют мелкоструктурное управление использованием читателем вашего документа. Как правило, читатель загружает полный PDF-документ, но он не может прочитать его, пока не купит ключ. После покупки он может открыть документ только на данном компьютере. DRM-продавцами программных продуктов являются фирмы Adobe, FileOpen Systems, Authentica и SoftSeal. Их средства, как правило, слишком дорогие для случайного пользователя. Установите партнер- партнерские отношения с дистрибьютором или самоиздательской службой [Совет № 29]. Поддержка чтения PDF-документов в сети (Выдача PDF-страниц по запросу без загрузки всего документа.) Иногда читатели хотят загрузить весь документ, иногда — прочитать только несколько страниц. Если читателю нужна отдельная страница из документа, то это не должно быть связано с загрузкой всего доку- документа, т. к. длительная загрузка может отпугнуть его. Самое простое решение состоит в конфигурировании PDF-документа и сервера для выдачи отдельных страниц по запросу. Альтернативой является ис- использование PDF-обложек [Совет № 71]. Подготовка документа в формате PDF Чтобы разрешить постраничную выдачу в сети, PDF-документ дол- должен быть линеаризован. Линеаризация организовывает внутреннюю структуру PDF-документа так, чтобы клиент мог запросить ресурсы, которые ему нужны, на побайтовой основе. Если читатель хочет видеть страницу 12, то клиент запрашивает только данные, которые необхо- необходимы для отображения страницы 12. Проверьте, линеаризуется ли PDF-документ, открывая его в про- программе Acrobat/Reader и просматривая его свойства. Выберите коман-
ду File\Document Properties\Description (Файл\Свойства докумен- та\Описание) в Acrobat 6 или File\Document Properties\Summary (Файл\Свойства документа\Выводы) в Acrobat 5. Линеаризованному PDF-документу соответствует строка Fast Web View: Yes (Быстрый се- сетевой просмотр: Да). Проект Xpdf (http://www.foolabs.com/xpdf/) включает инструмент ко- командной строки под названием pdfinfo, который показывает, линеари- линеаризован ли PDF-документ. Передайте PDF-документ программе pdfinfo следующим образом: pdfinfo mydoc.pdf Программа pdfinfo выдаст на экран текстовое сообщение, содержа- содержащее строку Optimized: Yes (Оптимизированный: Да), если PDF-доку- PDF-документ линеаризован. Эта программа распространяется бесплатно. Чтобы создать линеаризованный PDF-документ, используя про- программу Acrobat, проверьте сначала свои параметры настройки. Коман- Командой меню Edit\Preferences (Правка\Параметры настройки) выберите категорию General (Общие) в Acrobat 6 или Options (Опции) в Acrobat 5. Рядом с Save As установите флажок Optimized for Fast Web View (Сохра- (Сохранить как оптимизированный для быстрого сетевого отображения) и нажмите ОК. Откройте PDF-документ, который хотите линеаризовать, а затем примените команду Save As к тому же файлу. В Acrobat 6 можете изме- изменить уровень совместимости PDF-документов, выбрав File\Reduce File Size (Файл\Уменыыить размер файла) вместо Save As. Откройте доку- документ и проверьте, как он работает. Если вы внесете изменения в PDF-документ в программе Acrobat, a затем просто выполните команду File\Save (Файл\Сохранить), то он больше не будет линеаризоваться. Только использование опции Save As гарантирует, что документ останется линеаризованным. Программа Ghostscript [Совет № 39] включает инструмент командной строки pdfopt, который также линеаризует PDF-документ. Вызовите программу pdfopt из командной строки: pdfopt input.pdf output.linearized.pdf Подготовка сервера Серверы Apache версии 1.3.17 и старше и Microsoft IIS версии 3 и стар- старше должны обслуживать PDF-страницы по требованию без дополни- дополнительного конфигурирования. Необходимой для этого является поддерж- поддержка сервером сети байтового диапазона. Протокол HTTP 1.1 поддерживает байтовый диапазон (http://www.freesoft.org/CIE/RFC/2068/160.htm). Это
означает, что клиент может запросить у сервера сети определенный диа- диапазон байтов. Вместо того, чтобы высылать полный файл, сервер пошлет только эти байты. Сервер должен подтвердить поддержку байтового диапазона сооб- сообщением Accept-Ranges: bytes (Диапазоны ввода: байты) в ответ на за- запрос PDF-файла, иначе Acrobat не будет выполнять постраничную за- загрузку. Если вы хотите отказать клиентам в попытке постраничного обслуживания, используйте сообщение Accept-Ranges: none (Диапазо- (Диапазоны ввода: ни одного). Загрузка документа в формате PDF вместо его чтения (Воспрепятствуйте появлению сетевого PDF-документа в браузере.) Некоторые PDF-документы в интернете предназначены для сетево- сетевого чтения, но большая часть — для загрузки, а затем автономного чте- чтения или печати. Можно предотвратить путаницу, гарантируя, что чита- читатели получат диалоговое окно Save As (Сохранить как) при переходе по ссылке Download Now PDF (Загрузить PDF-документ). Вот несколько способов выполнить это. Любой сетевой PDF-документ может быть загружен. Если ваш сете- сетевой документ имеет гиперссылку для интегрирования с сайтом, необхо- необходимо принять меры против таких ссылок, разрушив их после загрузки. Одним из способов является использование в PDF-документе толь- только абсолютных URL. Другим способом является установка Base URL (Основной URL) PDF-документа. В Acrobat 6 используйте команды File\Document Properties\Advanced\Base URL (Файл\Свойства документа\Дополни- тельно\Основной URL), а в Acrobat 5 — File\Document Properties\Base URL (Файл\Свойства документа\Основной URL). О запрете загрузки документа см. раздел «Веб-обложки для PDF-доку- PDF-документов» [Совет № 71]. Архивирование документа. Самым быстрым решением для отдельного PDF-документа является сжатие его в zip-файл, который не может читаться интерактивно. Это так- также позволяет сократить размер загружаемого файла. Отрицательная сто- сторона — у читателей должна быть программа разархивирования файла. Не- Необходимо включить гиперссылку на место, откуда они могут загрузить такую программу (например, http://www.injb-zip.org/pub/infozipj). Старай- Старайтесь не использовать самораспаковывающиеся исполняемые программы, потому что они работают только на конкретной платформе.
Можно также применить zip-сжатие на лету с помощью сервера. Вот пример на языке РНР. Скорректируйте параметр passthru так, чтобы он указывал на локальную копию программы zip'. <?php // pdfzip.php, архивирует PDF-документ во время загрузки // версия 1.0 // http ://www.pdfhacks. com/serving_pdf/ // // ПРЕДУПРЕЖДЕНИЕ: // Этот сценарий представляет угрозу безопасности сервера. $fh=$_GET['fh']; // в целях безопасности архивируйте только файлы, // расположенные в указанном каталоге if( $fn && $fn=== basename($fn)) { // удостоверьтесь, что архивируется PDF-файл (а не системный файл) if( strtolower( strrchr( $fn, V ) )== '.pdf ) { if( file_exists( $fn )) { header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename='.$fn.'.zip'); header('Accept-Ranges: none'); // мы не поддерживаем байтовое обслуживание passthru(«/usr/bin/zip - $fn»); } } ?> Если PDF-документ находится по адресу http://www.pdfhacks.com/docs/ mydoc.pdf и вы скопировали предьщущий сценарий на http://www.pdfhacks. com/docs/pdfzip.php, то можете загрузить mydoc. pdf.zip с URL http://www. pdfhacks. com/docs/pdfzip.php ?fn =mydoc.pdf Создание папок только для загрузки, используя файлы .htaccess Если у вас на сервере имеется каталог PDF-документов, предназна- предназначенных только для загрузки, можно изменить его файл .htaccess так, что- чтобы посетители всегда запрашивали загрузку PDF-документов. Для этого необходимо послать клиентам подходящие HTTP-сообщения Content- Type (Контент-тип) и Content-Disposition (Контент-расположение). Это работает на серверах Apache и Zeus, использующих .htaccess- функции. Добавьте в свой PDF-каталог файл под названием .htaccess, который содержит следующие строки: <files *.pdf> ForceType application/octet-stream Header set Content-Disposition attachment </files>
Управление PDF-загрузками с помощью РНР-сценария Данный сценарий даст вам возможность управлять PDF-загрузками. Это удобно, когда требуется сделать отдельный PDF-документ доступ- доступным и для интерактивно чтения, и для загрузки. Вы можете использо- использовать сообщения Content-Type (Контент-тип) и Content-Disposition (Контент-расположение) в любом сценарии, который обслуживает PDF-документы, предназначенные только для загрузки. <?php // pdfdownload.php // версия 1.0 //http://www.pdfhacks.com/serving_pdf/ // // ПРЕДУПРЕЖДЕНИЕ: // Этот сценарий представляет угрозу безопасности сервера. $fn=$_GET['fn']; // в цепях безопасности используйте только файлы, // расположенные в указанном каталоге if( $fn && $fn=== basename($fn)) { // удостоверьтесь, что архивируется PDF-файл (а не системный файл) if( strtolower( strrchr( $fn, 7 ) )== '.pdf ) { f( ($num_bytes= @filesize( $fn ))) { // используйте указатели файлов вместо readfile() // для лучшей производительности, особенно для больших PDF-документов if( ($fp= @fopen( $fn, 'rb' ))){// успех чтения // попробуйте скрыть тип контента headerCContent-iype: application/octet-stream'); // ответ клиенту, что это не отображается header('Content-Disposition: attachment; filename='.$fn); // мы не поддерживаем байтовое обслуживание header('Accept-Ranges: none'); header ('Content-Length:'. $num_bytes); fpassthru( $fp ); // это закрывает $fp } } ?> Если PDF-документ находится по адресу: http://www.pdfhacks.com/docs/ mydoc.pdf и вы скопировали предыдущий сценарий на http://www. pdfhacks.com/docs/pdfdownload.php, то URL http://www.pdfhacks.com/docs/pdf- download.php?fn=mydoc.pdf попросит пользователей загрузить mydoc.pdf на их компьютеры.
HTML-гиперссылки к PDF-страницам (Предоставьте читателям информацию, которую они ищут.) Чтобы интегрировать документы в формате PDF с HTML-докумен- HTML-документами, используйте HTML-гиперссылки. Простой ссылки, тем не ме- менее, недостаточно, потому что отдельный PDF-документ может содер- содержать сотни страниц. Это похоже на поиск иголки в стоге сена. Решение состоит в изменении HTML-ссылки таким образом, чтобы она напра- направила читателя непосредственно к интересующей его PDF-странице. Этот вид бесшовной интеграции HTML и PDF-страниц требует неко- некоторой подготовки. См. раздел «Поддержка чтения PDF-документов в сети» [Совет № 67] для получения дополнительной информации. Чтобы настроить гиперссылки к PDF-документам, просто до- добавьте один или несколько суффиксов, перечисленных в таблице 5-3, к пути href. Табл. 5-3. Суффиксы и их воздействие на Acrobat Reader Шрмдениешрогра^ Открывает PDF-документ на странице номер N page=N (первая страница имеет номер 1) Отображает PDF-закладки pagemode=bookmarks Отображает эскизы PDF-документа pagemode=thumbs Скрывает PDF-закладки и эскизы pagemode=none Скрывает полосы прокрутки программы Acrobat scrollbar=false Скрывает инструментальную панель программы Acrobat toolbar=false Они добавляются в конец к пути href с помощью специального приме- примечания. Первый суффикс следует за знаком диез. Каждый дополнитель- дополнительный суффикс следует за амперсендом. Эти опции полностью описаны в документе «PDF Open Parameters», расположенном на веб-странице http://partners.adobe.com/asn/acrobat/sdk/public/docs/PDFOpenParams.pdf Например, чтобы открыть документ mydoc.pdfna странице 17 и ото- отобразить закладки документа, гиперссылка href должна выглядеть сле- следующим образом: http://pdfhacks.com/mydoc.pdf#page=17&pagemode=bookmarks Эти специальные PDF-гиперссылки не работают при использовании Internet Explorer, и если PDF-документ находится на локальном диске. Чтобы обойти эти огра- ограничения, см. раздел «Создание Windows-ярлыков к локальным PDF-страницам» [Совет № 17].
Сохранение параметров настройки отображения в PDF-документе Параметры настройки отображения можно сохранить в PDF-файле. Каждый раз при открытии PDF-документ будет отображаться согласно своим параметрам настройки. См. раздел «Окончательная шлифовка ваше- вашего PDF-издания» [Совет № 62] для получения дополнительной информации. Создание HTML-оглавления на основе PDF-закладок (Дайте пользователям интернета удобный HTML-шлюз к своему документу в формате PDF.) При взгляде на PDF-ссылку невозможно определить содержание и необходимость документа без его полной загрузки и просмотра, хотя автор документа, возможно, приложил много усилий, чтобы обеспе- обеспечить удобное интерактивное чтение с использованием хороших, чет- четких шрифтов, навигационных закладок и постраничного просмотра. Не позволяйте этому случиться со своим сетевым PDF-документом. Если он имеет закладки, используйте этот метод взлома, чтобы создать HTML-оглавление, которое осуществляет гиперссылку каждого заго- заголовка непосредственно к своей PDF-странице (см. рисунок 5-16). В про- противном случае обязательно добавьте их [Совет № 63]. Рис. 5-16. HTML-оглавление, связывающее читателей непосредственно с темами PDF-документа
Этот вид произвольного доступа к сетевому PDF-докумен- PDF-документу удобен, только если он линеаризован и сервер сконфи- сконфигурирован для байтового обслуживания [Совет № 67]. Если это не так, то читателям придется загрузить весь доку- документ, чтобы просмотреть отдельную страницу. Создание оглавления PDF-документа в формате HTML с помощью программ pdftk и pdftoc Программа pdftk [Совет № 79] предоставляет информацию о PDF-дан- PDF-данных, включая закладки. Программа pdftoc конвертирует это сообще- сообщение открытого текста в формат HTML. Посетите сайт http://www.pdf- hacks.com/pdftoc/ и загрузите файл pdftoc-1.0.zip. Разархивируйте его и поместите файл pdftoc.exe в удобный каталог, например: C:\Windows\ system32\. На других платформах создайте программу pdftoc из исход- исходного кода. Используйте программу pdftk для захвата данных закладок из ваше- вашего PDF-документа, например: pdftk mydoc.pdf dump_data output mydoc_data.txt Затем — программу pdftoc для преобразования сообщения открыто- открытого текста в формат HTML: pdftoc mydoc.pdf <mydoc_data.txt> mydoc_toc.html Альтернативно можно выполнить эти два шага вместе следующим образом: pdftk mydoc.pdf dump_data | pdftoc mydoc.pdf > mydoc_toc.html Первый параметр программы pdftoc — это местоположение доку- документа, которое программа должна использовать в своих гиперссылках. Предыдущий пример предполагает, что файлы mydoc.pdf и mydoc_toc.htmlнаходятся в одном каталоге. Можно указать относитель- относительный путь для PDF-документа, например: pdftoc ../pdf/mydoc.pdf < mydoc_data.txt > mydoc_toc.html или полный URL: pdftoc http://pdfhacks.com/pdf/mydoc.pdf < mydoc_data.txt > mydoc_toc.html Как только читатели получают доступ к PDF-документу, они могут использовать его закладки для дальнейшего перемещения. Чтобы обеспечить просмотр закладок, настройте PDF-документ так, чтобы он отображал их после открытия [Совет № 62].
Можно добавить ссылку для загрузки [Совет № 68] с интернет-страни- интернет-страницы, которая приглашает пользователя сохранить PDF-документ на своем локальном диске. В качестве услуги пользователю укажите раз- размер загружаемого файла. Веб-обложки для документов в формате PDF (Разбейте PDF-документ на страницы и вставьте их в HTML-обложку.) HTML-файлы принято называть страницами, а PDF-файлы — доку- документами. Разбивая документ в формате PDF на страницы, мы прибли- приближаемся к HTML-представлению, где его можно программировать по- подобно сайту. Начнем с основной обложки (см. рисунок 5-17), которая помогает просматривать документ и перемещаться по нему. Рис. 5-17. Классическая обложка, содержащая элементы навигации Классическая обложка имеет много полезных встроенных функций: • портальную страницу оглавления, содержащую PDF-закладки; • навигационный блок для просмотра страниц; • полосу прокрутки оглавления, базирующегося на PDF-закладках;
• гиперссылки для загрузки полного PDF-документа, имеющиеся на каждой странице; • удобную ссылку Email This Page (Отправить эту страницу по эле- электронной почте) на каждой странице. Загрузите сетевую версию, имеющуюся на сайте http://www.pdfhacks.com/ епо/ HTML-код, JavaScript-сценарии и значки интерфейса пользователя свободно распространяются с лицензией GPL (General Public License — об- общая открытая лицензия), так что не стесняйтесь использовать их в своих собственных шаблонах. Создание обложки PDF-документа Установите программу pdftk [Совет № 79]. Посетите сайт http://www.pdfliacks.com/skins/и загрузите dpdMJipdfskins-l.l.zip. Разархиви- руйте его и поместите файлpdfskins.exe в каталог, например: C:\Windows\ system32\. На других платформах скомпилируйте pdf-обложки из имею- имеющегося исходного кода и выполните команды cd pdfskins-1.1 и make. Загрузите шаблон обложки с сайта http://www.pdfliacks.com/skins/ Шаблон pdfskins_classicjs для создания динамических блоков исполь- использует JavaScript-сценарий на стороне клиента. Шаблон pdjskins_clas- sic_php использует PHP-сценарий на стороне сервера. Выберите один из них и разархивируйте в новый каталог: unzip pdfskins_classicjs-l.l.zip Скопируйте свой PDF-документ в этот каталог и разбейте на стра- страницы с помощью программы pdftk. Она также создает файл doc_data.txt, который содержит информацию о заголовке документа, метаданных и закладках: pdftk full_doc.pdf burst В этом же каталоге соберите обложки, используя программу pdfskins. Она читает файл doc_data.txt, созданный ранее, для поиска заголовка документа и других данных. Если планируется сделать полный PDF- документ доступным для загрузки, используйте имя PDF-файла в ка- качестве первого параметра. Этот параметр используется только для со- создания гиперссылки Download Full Document (Загрузить полный документ). Это может быть полный или относительный URL. Опусти- Опустите имя файла, и эта гиперссылка не будет отображаться. pdfskins full_doc.pdf Запустите свой веб-браузер и укажите ему на файл index.html, распо- расположенный в текущем каталоге. Должна появиться портальная страни-
ца, показывающая оглавление, графические метки для эмблемы (logo.gif) и эскизы обложки документа (thumb.gif). При использовании шаблонов php или comments страницы обслуживаются сетевым сервером, поддер- поддерживающим язык РНР. PDF-страницы, из которых состоит помещенный в об- обложку документ, не должны линеаризоваться, при этом сервер не требует конфигурирования для байтового об- обслуживания [Совет № 67]. Единственное требование — чтобы пользователи сконфигурировали Adobe Reader для отображения PDF-документа в браузере, который используется заданной по умолчанию конфигурацией программы Reader. Изменение цвета заголовка Можно добавить или изменить данные в файле doc_data.txt или пе- передать дополнительные данные программе pdfskins в командной стро- строке. Это очень удобно для изменения заданного по умолчанию цвета, используемого в обложке Classic (Классическая). Например: pdfskins full_doc.pdf -title «Great American Novel» -colorl #336600 \ -color2 white В обложке colorl — это цвет заголовка, a color2 — цвет фона левой верхней эмблемы. Альтернативно можете добавить или изменить эти строки в файле doc_data.txt InfoKey: Colorl InfoValue: #336600 InfoKey: Color2 InfoValue: white InfoKey: Title InfoValue: Great American Novel PDF-обложки как защита от копирования Разбивая свой PDF-документ на страницы и делая полный документ недоступным для загрузки, вы заставляете читателей возвращаться на свой сайт, когда им потребуется этот материал. Если это — одна из це- целей, то необходимо также защитить страницы от объединения, чтобы никто не смог собрать их в PDF-документ. Сделайте это при разбиении документа. Например: pdftk full_doc.pdf burst encrypt_128bits owner_pw 23@#5dfa \ allow DegradedPrinting
См. раздел «Шифрование и расшифровка PDF-доку- PDF-документов (без помощи Acrobat)» [Совет № 52] для полу- получения дополнительной информации о защите докумен- документов с помощью pdftk. Проверьте основанный на языке РНР метод взлома на своем ком- компьютере с системой Windows, установив сетевой сервер Apache. См. раздел «Сбор данных с помощью сетевых PDF-форм» [Совет № 74], описы- описывающий установку сервера Apache и языка РНР в Windows, используя инсталлятор IndigoPerl. Усовершенствование метода Теперь вы можете управлять документом и использовать его любым необходимым способом. См. раздел «Создание порталов документов» [Совет № 21], содержащий некоторые идеи о добавлении возможности полнотекстового поиска в документе. См. раздел «Совместное исполь- использование PDF-комментариев в сети (без помощи Acrobat)» [Совет № 72], чтобы узнать, как добавить к странице сетевой комментарий. Совместное использование PDF-комментариев в сети (без помощи Acrobat) (Используйте обложки для добавления комментариев к PDF-страницам.) Используя программу Acrobat, можно добавлять различные коммен- комментарии и аннотации к PDF-страницам, а также совместно использовать их с помощью электронной почты или конфигурируя Online Comments (Сетевые комментарии) в Acrobat. Эти инструменты не работают с программой Reader. Все, кто будут работать с этими комментариями, должны иметь одну и ту же версию Acrobat. Вместо этого можно добавить к PDF-страницам интерактивные воз- возможности комментирования с помощью PDF-обложек [Совет № 71] и не- нескольких PHP-сценариев. В этом случае пользователям не нужен Acrobat, независимо от того, работают ли они в Mac, Linux или Windows. Вы можете интегрировать PDF-комментарии с текущей комментирую- комментирующей системой своего сайта. Обложка Comments (Комментарии), пока- показанная на рисунке 5-18, может помочь в этом. Посмотрите сетевой пример на веб-странице http://www.pdfhacks.eom/eno/skinnedj:omments/. Создание PDF-обложек, добавление комментариев См. раздел «Веб-обложки для PDF-документов» [Совет № 71], чтобы на- научиться их создавать. Вместо использования шаблона pdjskins_clas- sic_php-l.O.zip загрузите шаблон pdfskins _classic_comments-1.0.zip. Об-
ложка Comments такая же, как и php-обложка, но содержит дополни- дополнительные файлы showannot.php и saveannot.php. Рис. 5-18. Обложка Comments, добавляющая область комментариев для ввода читательских комментариев (справа) Создайте PDF-обложку с помощью шаблона comments и поместите результат в каталог на своем сервере. Сервер должен иметь права до- доступа для записи в этом каталоге, чтобы создавать и обслуживать ком- комментарии. Укажите своему веб-браузеру на этот URL, и справа откро- откроется поле комментирования. Введите комментарий и нажмите Add Comment (Добавить комментарий). Усовершенствование метода Сценарий сохраняет комментарии к страницам в текстовых файлах. Чтобы упростить доступ к файлу, он копирует текущие комментарии во временный файл перед добавлением нового комментария. Затем заме- заменяет первоначальный файл комментариев модифицированным вре- временным файлом. Чтобы два пользователя, вносящие свои коммента- комментарии, не «столкнулись», измените сценарий для хранения комментариев в базе данных вместо текстового файла.
Определение популярности темы (Используйте щелчки на заголовках страниц документа для определения популярности его тем среди читателей.) Большой документ может охватывать несколько тем. Какие темы чита- читатели находят самыми полезными? Для отслеживания щелчков на отдель- отдельных страницах используйте PDF-обложки [Совет № 71], а затем сценарий hit_report, чтобы отобразить их в заголовках документа, как показано на рисунке 5-19. Вы увидите количество щелчков на темах, а не просто на страницах. Посмотрите пример на сайте http://www.pdfhacks.com/eno/. Рис. 5-19. Сценарий hitjreport показывает количество щелчков для каждой темы Регистрация щелчков на страницах встроена в шаблон pdfskins_clas- sic_php [Совет № 71]. После его распаковки активизируйте регистрацию щелчков, редактируя файл script.include и определяя $log_hits=tme. Это можно сделать в любое время, до или после создания обложки для PDF-документа. Щелчки на страницах регистрируются в текстовых файлах, расположенных в том же каталоге, что и PDF-документы с
обложками, поэтому сервер должен иметь разрешение для записи в этот каталог. Если страница называется pg_0025.pdf, то ее файл регистрации щелч- щелчков называется pg_0025.pdf.hits. Каждый щелчок добавляет к файлу од- одну строку. Каждая строка включает IP-номер, идентифицирующий по- посетителей. После создания обложки PDF-документа и файла регистрации щелчков посетите сайт http://www.pdfhacks.com/skins/vi загрузите архив hit_report.php-1.0.zip. Распакуйте его PHP-файл и скопируйте на свой сервер. Если PDF-документ с обложкой расположен в каталоге: http ://pdfhacks. com/eno/skinned_php/, то передайте его местоположение сценарию hitjreport следующим образом: http://pdfhacks.com/hit_report.php?pdf=/eno/skinned_php В браузере должна появиться иерархическая структура документа аналогичная титульному листу PDF-документа с обложкой. На правой стороне страницы столбец чисел показывает количество щелчков на каждой теме этой иерархической структуры. Для разделов, которые состоят из нескольких страниц, щелчки на страницах суммируются в счетчике щелчков для раздела. Однако сюда не включается число щелчков для подразделов. Если заголовок подраз- подраздела находится на той же странице, что и заголовок раздела, использу- используется тот же счетчик. Сценарий hit_report идентифицирует их, окраши- окрашивая эти разделы в одинаковый фоновый цвет. Например, из отчета, показанного на рисунке 5-19, видно, что заголовки разделов «CHAPTER SIX: THE COMPOSITIONAL PROCESS» и «Equipment» находятся на одной странице. Усовершенствование метода Предоставьте информацию о популярности тем своим читателям, объединяя функции hitjreport с текущими шаблонами обложек index.htmlи index.toc.html
Динамические документы в формате PDF Советы № 74-92 Документ в формате PDF не должен ограничиваться только файлом, однажды созданным и опубликованным. Его можно сделать динамиче- динамическим несколькими способами, начиная с создания интерактивных форм и заканчивая пользовательскими PDF-документами, которые обеспечивают потребности отдельных пользователей. Документ в фор- формате PDF кажется большинству людей статическим , но это скорее во- вопрос его использования, чем технологии. Сбор данных с помощью сетевых PDF-форм (Превратите электронный документ в интерфейс пользователя и собирайте информацию от читателей.) Традиционная бумажная форма использует схему страницы, чтобы показать структуру информации. Иногда, как в налоговых формах, эти связи становятся довольно сложными. PDF-документ сохраняет схему страницы, поэтому он представляет естественный способ публикации форм в интернете. Вопрос в том, какие возможности PDF-форм необ- необходимо добавить? Если ничего не добавляется, то пользователи должны печатать фор- форму и заполнять ее, как и любую другую бумажную форму, а затем от- отправлять ее по почте к вам для обработки. Иногда это все, что вам нуж- нужно, но PDF-документ способен на большее. При добавлении к PDF-документу заполняемых полей формы поль- пользователи смогут заполнить ее, используя программы Acrobat или Adobe Reader. После этого они все еще должны распечатывать ее и отправлять по почте. Пользователи Acrobat могут сохранить заполненную PDF- форму, а пользователи Adobe Reader этого сделать не смогут. При добавлении полей заполняемой формы и кнопки Submit (Предоставить), которая отправляет эти данные на сервер, вы при- присоединитесь к информационной революции. Сервер сможет в ин- ГЛАВА 6
терактивном режиме проверять правильность данных пользователя, обеспечивать обратную связь, записывать информацию в базу дан- данных и предоставить пользователю возможность сохранения копии PDF-формы. Но это позже. Сначала создайте форму, которая предоставляет дан- данные серверу (см. рисунок 6-1). Последующий метод взлома будет основы- основываться на ней. Посетите сайт http://www.pdfhacksxom/form_session/n по- посмотрите примеры интерактивных PDF-форм, а также загрузите пример PDF-формы и PHP-код с этого сайта. Рис. 6-1. PDF-форма, предоставляющая данные серверу Создание формы Откройте исходный документ формы и выведите его в формате PDF [Совет № 39] или просканируйте бумажную копию и создайте PDF-фор- PDF-форму, используя оптическое распознавание символов. Откройте PDF- форму в программе Acrobat, чтобы добавить поля формы.
PDF-формы могут быть мощными JavaScript-програм- JavaScript-программами, но здесь сценарии использоваться не будут. Мы со- создадим PDF-формы, которые позволят всю работу делать серверу. Это позволит программировать логику формы с помощью любого языка или интерфейса базы данных. Поля PDF-формы практически соответствуют полям HTML-фор- HTML-формы, как показано в таблице 6-1. Добавьте их к своей форме, используя один или несколько инструментов Acrobat. Табл. 6-1. Сравнение типов PDF-полей с типами HTML-полей input type=»text» Text (Текст) input type=»password» Text with Password Options (Текст с опциями пароля) input type=»checkbox» Checkbox (Переключатель) input type=»radio» Radio Button (Кнопка выбора) input type=»submit» Button with Submit Form Action (Кнопка с действием Предоставить форму) input type=»reset» Button with Reset Form Action (Кнопка с действием Загрузить форму) input type=»hidden» Text with Hidden Appearance (Скрыть текст) input type=»image» Button with Icon Option (Кнопка с опцией значка) input type=»button» Button (Кнопка) textarea Text with Multiline Option (Текст в несколько строк) select Combo Box or List Box (Поле со списком или список) В Acrobat 6 (см. рисунок 6-2) существует отдельный инструмент для каждого типа поля формы. Откройте эту панель инструментов коман- командой Tools\Advanced Editing\Forms\Show Forms Toolbar (Сервис\До- полнительное редактирование\Формы\Показать панель инструментов формы). Выберите инструмент, например Text Field (Текстовое поле), щелкните на нем и перетащите прямоугольник в местоположение по- поля. Отпустите кнопку мыши — откроется диалоговое окно Field Properties (Свойства поля). Выберите вкладку General (Общие) и вве- введите имя поля. Это имя идентифицирует данные поля при передаче серверу. Настройте вид поля и его поведение, используя другие вклад- вкладки. Нажмите Close (Закрыть). Поле создано. В Acrobat 5 используется инструмент Form (Форма) (см. рисунок 6-2) для создания любого поля формы. Щелкните на нем и перетащите прямо- прямоугольник в местоположение поля. Отпустите кнопку мыши — откроется диалоговое окно Field Properties (Свойства поля). Выберите нужный тип поля, например Text (Текст), и введите его имя. Это имя идентифицирует данные поля при передаче серверу сети. Настройте вид поля и поведение,
используя другие вкладки. Нажмите ОК. Чтобы изменить свойства поля, используя инструмент Form, дважды щелкните на нем кнопкой мыши. Рис. 6-2. Инструменты создания полей формы в Acrobat 6 (слева) и Acrobat 5 (справа) Позаботьтесь о совместимости PDF-формы со старшими версиями программ Acrobat и Adobe Reader [Совет № 41]. Чтобы загружать данные формы на сервер, PDF-форма должна иметь кнопку Submit Form (Предоставить форму). Создайте PDF- кнопку, откройте вкладку Actions (Действия), а затем добавьте дейст- действие Submit a Form (Предоставить форму) в Acrobat 6 или Submit Form (Предоставить форму) в Acrobat 5 событию Mouse Up (Щелчок мы- мышью), как показано на рисунке 6-3. Отредактируйте свойства действия, включив в него URL своего сце- сценария; они должны соответствовать атрибуту action HTML-формы. До- Добавьте в конец этого URL символы #FDF: http:/Aocalhost/pdf_hacks/echo.php#FDF Настройте опцию Field Selection (Выбор поля) для включения по- полей, которые эта кнопка должна передавать серверу; наиболее безопас- безопасным является вариант All Fields (Все поля). Определите опцию Export Format (Формат экспортирования) как HTML, и PDF-форма передаст свои данные, используя HTTP-метод post. После окончания работы сохраните свою PDF-форму и протести- протестируйте ее. Сделайте кнопки формы непечатаемыми. Откройте свойства кнопки и выберите вкладку General (Общие) в Acrobat 6 или Appearance (Вид) в Acrobat 5. В Common Properties (Общие свойства) установите значение Form Field (Поле формы) как Visible but Doesn't Print (Пока- (Показывать, но не печатать). Нажмите ОК.
Рис. 6-3. Добавление действия Submit к событию Mouse Up для создания кнопки Submit (обратите внимание на символы #FDF, добавленные в конец URL сценария). Установка сетевого сервера Apache в Windows Чтобы проверить интерактивную PDF-форму, необходимо иметь доступ к серверу. Многие из этих методов взлома используют РНР- сценарии, выполняемые на стороне сервера, поэтому он должен под- поддерживать язык РНР (http://www.php.net). Windows-пользователи могут загрузить инсталлятор сетевого сервера Apache (http://www.apache.org) под названием IndigoPerl с сайта IndigoSTAR (http://www.indigostar.com). Он содержит РНР и Perl-модули, поэтому позволяет выполнить этот метод взлома. Сервер Apache и язык РНР — бесплатное программное обеспечение. Посетите веб-страницу http://www.indigostar.com/indigoperl.htm и за- загрузите файл indigoperl-2004.02.zip. Разархивируйте его во временный каталог, а затем дважды щелкните на файле setup.bat, чтобы выполнить
установку. На запрос о каталоге установки нажмите клавишу Enter, чтобы выбрать значение по умолчанию: C:\indigoperl\. После установки IndigoPerl откройте веб-браузер и укажите ему на http://localhost/. Это URL вашего локального сервера, и браузер должен отобразить Web Server Test Page (Страница тестирования сетевого сер- сервера) со ссылками к документации. При опросе http://localhost/ Apache обращается к файлу index.html в каталоге C:\indigoperl\apache\htdocs\. Создайте каталог pdfjiacks в каталоге htdocs и используйте это место- местоположение для PHP-сценариев. Обратитесь к этому каталогу из своего браузера с помощью URL: http://localhost/pdf_hacks/. Тестирование PDF-формы Создайте текстовый файл, назовите его echo.php и поместите в него следующий сценарий. IndigoPerl-пользователи могут сохранить его в каталоге C:\indigoperl\apache\htdocs\pdf_hacks\echo.php. Этот РНР-сце- нарий возвращает переданные данные формы вашему браузеру. Со- Создайте кнопку PDF Submit, которая отправляет данные по URL сцена- сценария (например, http://localhost/pdf_hacks/echo.php#FDF), как было описано ранее. <?php // echo.php возвращает данные, которые мы получили echo '<h2>GET Data</h2>'; foreach( $_CET as $key => $value ) { echo '<p>Key: '.$key/, Value: '.$ value.'</p>'; } echo '<h2>POST Data</h2>'; foreach( $_POST as $key => $value ) { echo '<p>Key: '.$key/, Value: '.$ value.'</p>'; } PDF-форма правильно взаимодействует с сервером только тогда, когда отображается в веб-браузере. Поэтому перетащите форму в бра- браузер, заполните некоторые поля, а затем щелкните на кнопке Submit (Предоставить). PDF-форма должна быть заменена на экране сообще- сообщением, подобным показанному на рисунке 6-4. Если перетаскивание PDF-формы в браузер Mozilla от- открывает PDF-форму вне окна браузера, то убедитесь в том, что поддержка языка Java разрешена, выбрав ко- команду меню Edit\Preferences\Advanced (Правка\Пара- метры настройки\Дополнительно). После включения поддержки Java перезапустите браузер Mozilla и повто- повторите попытку.
Рис. 6-4. Отображение передачи данных PDF-формы с использованием локального сетевого сервера и РНР-сценария Сопровождение заполненных PDF-форм (Заполняйте сетевые PDF-формы известными данными.) Для поддержки данных формы необходимо показывать их текущее состояние пользователю. Это дает ему возможность просмотра дан- данных, обновления отдельного поля и передачи этого изменения серверу. В HTML-форме можно настроить значения полей во время работы пользователя. Чтобы заполнять поля PDF-формы данными, исполь- используйте формат Forms Data Format (Формат данных формы, FDF), как показано на рисунке 6-5. FDF - формат данных формы Справочник по формату PDF [Совет № 98] описывает файловый фор- формат FDF (Формат данных формы). Его синтаксис использует для орга- организации данных PDF-объекты [Совет № 80]. В качестве примера открой- откройте PDF-форму в программе Acrobat и заполните некоторые поля. Экспортируйте эти данные в формате FDF, выбирая команды Advanced\Forms\Export Foms Data (Дополнительно\Формы\Экспор-
тировать данные формы) в Acrobat 6 или File\Export\Form Data (Файл\Экспорт\Данные формы) в Acrobat 5. Форма [Совет № 74] преоб- преобразуется в FDF-файл, который перечисляет поля в виде пар имя/зна- имя/значение, а затем ссылается на PDF-форму с помощью имени файла: %FDF-1.2 1 0 obj «/FDF « /Fields [« /Т (text_field_l) /V (Here is some text) » « /T (text_field_2) /V (More nice text) »] /F (http:/^ocalhost/fine_form.pdf) » » endobj trailer « /Root 1 0 R » %%EOF Рис. 6-5. Отображение PDF-формы с активными данными
Раздел «Заполнение PDF-форм» [Совет № 77] предлагает РНР-сцена- рий для создания FDF-файла. Для тех, кому нравится язык XML, существует инстру- инструмент XFDF — основанный на XML набор FDF-функций. Версии 5 и 6 программы Acrobat поддерживают XFDF. Его MIME-типом является application/vnd.adobe.xfdf. Пользователи могут сохранять и управлять данными PDF-формы, ис- используя FDF-файлы. Посетите веб-страницу http://segraves.tripod.com/ index3.htm, чтобы посмотреть примеры. При работе с заполненными формами пользователь никогда не видит и не обрабатывает непосредст- непосредственно FDF-файл. Существует два способа автоматического заполнения сетевой PDF- формы данными. Можно использовать FDF-данные, которые ссыла- ссылаются на PDF-форму, или создать URL, который ссылается как на PDF-форму, так и на FDF-данные. Использование FDF-данных для заполнения форм Один из способов автоматического заполнения сетевой формы состоит в использовании заполненного данными FDF-файла (с MIME-типом appli- cation/vnd.fdf). Браузер пользователя открывает программу Acrobat/Reader и передает ей FDF-данные. Acrobat/Reader читает их, чтобы определить мес- местонахождение PDF-формы, загружает и отображает ее, а затем заполняет поля, используя FDF-файл. Рассматриваемая PDF-форма должна быть до- доступна с вашего сервера, и FDF-данные должны ссылаться на этот URL, используя ключ /F, как показано в предыдущем примере. Убедитесь, что сервер посылает соответствующий заго- заголовок Content-type: application/vnd.fdf при использова- использовании FDF-файлов. Или пошлите заголовок непосредст- непосредственно из сценария. Эта методика проста, но имеет ограничения. Во-первых, не все бра- браузеры знают, как обрабатывать FDF-данные. Во-вторых, она не всегда работает с HTML-окном. Использование следующей методики решает эти проблемы. Объединение URL PDF-формы и FDF-файла для заполнения формы Другой способ автоматического заполнения сетевой PDF-формы — добавление в конец URL PDF-формы ссылки на FDF-файл. В этом
случае файл должен опустить ссылку к форме (ключ /F). Когда пользо- пользователь следует ссылке, программа Acrobat/Reader открывает PDF-фор- PDF-форму и заполняет ее поля, используя данные FDF-файла. Ссылкой на PDF-файл должен быть его полный URL: http.y/localhost/fineJorm.pdf#FDF=http://localhost/fin^ Или же вместо файла она должна ссылаться на PDF-генерирующий сценарий, например: http://localhost/fineJorm.pdf#FDF=http://localhost/fdfjdrt Используйте эту методику ссылки на PDF-форму и на PDF-данные в одном URL при отображении заполненных форм в HTML-виде. Используйте сервер, чтобы проверить эти способы. Windows-пользователи могут загрузить инсталлятор IndigoPerl [Совет № 74] с сайта http://www.indigostar.com. IndigoPerl — это инсталлятор Apache для Windows, под- поддерживающий языки Perl и РНР. Усовершенствование метода Файл формата FDF может содержать информацию, описывающую PDF-форму. Используйте предыдущие методы для динамического до- добавления аннотации к сетевой PDF-форме. Создайте примеры FDF или XFDF-файлов, открывая форму в Acrobat и добавляя аннотации. Затем выберите Document\Export Comments (Документ\Экспорт ком- комментариев) в Acrobat 6 или File\Export\Comments (Файл\Экспорт\Ком- ментарии) в Acrobat 5. Распространение PDF-форм (Преобразуйте данные в формат FDF для объединения их с PDF-формой программами Adobe Acrobat или Adobe Reader.) Как было показано в разделе «Сопровождение заполненных PDF- форм» [Совет № 75], можно распространять заполненные формы в ин- интернете, используя FDF-данные, которые содержат URL PDF-формы. После получения FDF-данных программа Acrobat (или Reader) откро- откроет форму, а затем заполнит ее. Следующая проблема — насколько про- просто создать FDF-данные на сетевом сервере. Справочник по формату PDF [Совет № 98] описывает формат FDF в мельчайших подробностях, a Adobe предлагает бесплатный FDF-инст- рументарий (http://partners.adobe.com/asn/acrobat/forms.jsp). FDF-дан- FDF-данные несложно создать с помощью языка сетевого программирования.
Здесь предлагается сценарий, написанный на языке РНР. Он конвер- конвертирует данные формы в FDF-файл, подходящий для заполнения PDF- формы [Совет № 74]. Для создания или анализа FDF-данных в Java используй- используйте классы FdfWriter и FdfReader в iText (http://www.lowa- gie. com/i Text/). Сложные формы могут потребовать высокоуровневого Adobe PDF- инструментария. Большинство форм требует простого приведения дан- данных полей в соответствие с FDF-синтаксисом. Используйте для этой цели сценарий forge_fdf. В примере раздела «Сопровождение заполнен- заполненных PDF-форм» [Совет № 75] показан образец простого FDF-файла. Вместо использования универсальной FDF-функции или библио- библиотеки можно применить экспорт FDF-файла из формы, а затем преоб- преобразовать его в шаблон. Замените значения формы переменными или другими метками-заполнителями. Используйте этот шаблон в своей форме после заполнения его переменными с пользовательскими дан- данными. Сценарий forge_fdf содержит функции для кодирования PDF- строк и имен [Совет № 80], которые могут быть полезными при запол- заполнении шаблона. Создание FDF-файла с помощью сценария forgejdf Передайте данные формы и ее URL сценарию forge_fdf, и он возвра- возвратит соответствующий ей FDF-код как строку. Создайте с ее помощью FDF-файл или используйте ее непосредственно в браузере клиента с заголовком Content-type: application/vnd.fdf. Соответствующий пример будет приведен ниже. Необходимо помнить некоторые характерные особенности формата FDF при передаче параметров сценарию forge__fdf. $pdf_form_url Обеспечивает URL PDF-формы (или имя файла), если не планиру- планируется передавать эти FDF-данные как часть большего URL, который уже ссылается на PDF-форму. Например, если FDF-данные будут использоваться пользователем следующим образом: http^/localhost/fineJorm.pdf^FDF^ttp^/localhost/fineJiata.fdf, то в качестве параметра $pdf_form_url передается пустая строка. Чтобы выйти из PDF-формы и заменить ее HTML-страницей в бра- браузере пользователя, используйте настройку параметра $pdf_form_url для URL своей HTML-страницы.
$fdf_data_strings Загружает текст и данные полей со списком в эту строку. Это дол- должен быть массив строковых имен полей, отображенных в их значе- значениях. Если хотите, чтобы поле формы было скрыто или предназна- предназначалось только для чтения, добавьте его имя к параметрам $fields_hidden или $fietds_readonly. $fdf_data_names Загружает в строку данные переключателя и кнопки выбора. Это должен быть массив строковых имен полей, отображенных в их значениях. Часто значения true и false соответствуют чувствитель- чувствительным к регистру строкам Yes и Off. Если хотите, чтобы поле формы было скрыто или предназначалось только для чтения, добавьте его имя к параметрам $fields_hidden или $fields_readonly. $fields_hidden Добавьте имя поля к этой строке, если хотите скрыть его. Любое поле, перечисленное здесь, также должно быть указано в парамет- параметрах $fdf_data_strings или $fdf_data_names. $fields_readonly Добавьте имя поля к этой строке, если не хотите, чтобы пользова- пользователь вносил изменения в его данные,. Любое поле, перечисленное здесь, также должно быть указано в параметрах $fdf_data_strings или $fdf_data_names. Следующий сценарий использует forge_fdf для обработки FDF-дан- ных, которые должны заставить браузер пользователя открыть http://localhostfform.pdfn настроить его поля: <?php require_once ('forg e_fdf .php'); $pdf_form_url=«http:^ocalhost/form.pdf»; $fdf_data_strings= array( 'textl' => $_GET['t'], 'text2' => 'Egads!' ); $fdf_data_names= array('checkl' => 'Off, 'check2' => Tes' ); $fields_hidden= array('text2', 'checkl' ); $fields_readonly= array('textl'); header( 'content-type: application/vnd.fdf); echo forge_fdf( $pdf_form_url, $fdf_data_strings, $fdf_data_names,
$fields_hidden, $fields_readonly }; ?> Посетите веб-страницу http//www.pdfhacks.com/form_session/, что- чтобы увидеть более сложный пример работы сценария forgefdf. Ис- Исправьте сетевой пример или загрузите исходный PHP-код с этой веб-страницы. Если сценарий for%e_fdf заполняет форму неправильно, экспортируйте FDF-данные из нее, чтобы точно уви- увидеть, в каком виде форма ожидает данные. Протестируй- Протестируйте свою программу с помощью примеров PDF-файлов. Код Скопируйте этот код в файл, названный forgefdf.php, и включите его в свои PHP-сценарии. Или адаптируйте этот алгоритм под свой лю- любимый язык. Посетите веб-страницу http://www.pdfhacks.com/forge_fdf/, чтобы загрузить последнюю версию. <?php /* forge_fdf от Сида Стюарда версия 1.0 посетите: http://www.pdfhacks.com/forge_fdf/ Для текстовых полей, полей со списком и списков добавьте значения полей как пары имя/значение к $fdf_data_strings. Для переключателей и кнопок выбора добавьте значения полей как пары имя/значение к $fdf_data_names. Как правило, true и false соответствуют чувствительным к регистру именам «Yes» и «Off». Любое поле, которое добавляется к массиву $fields_hidden или $fields_readonly, должно быть ключом в $fdf_data_strings или $fdf_data_names; это можно добавить позже. Имя любого поля, перечисленного в $fdf_data_strings или $fdf_data_names, которое необходимо скрыть или использовать только для чтения, должно быть добавлено к $fields_hidden или $fields_readonly; сделайте это, даже если ваша форма уже настроена для этого Формат PDF может специфически реагировать на символы CR (Возврат каретки) и LF (Перевод строки), поэтому я преобразовал их в шестнадцатеричный вид: CR == \xOd : LF == \x0a v function escape_pdf_string( $ss) { $ss_esc= "; $ss_len= strlen( $ss);
for( $ii= 0; $ii< $ss_len; ++$ii) { if( ord($ss{$ii})== 0x28 | // открыть скобку ord($ss{$ii})== 0x29 | // закрыть скобку ord($ss{$ii})== 0x5c ) // наклонная черта влево { $ss_esc.= chr@x5c).$ss{$ii}; // переход от символа с наклонной // чертой влево } else if( ord($ss{$ii}) < 32 || 126 < ord($ss{$ii})) { $ss_esc.= sprintf( «\\%03o», ord($ss{$ii})); // использовать // восьмеричный код } else{ $ss_esc.= $ss{$ii}; } } return $ss_esc; } function escape_pdf_name( $ss) { $ss_esc= "; $ss_len= strlen( $ss ); for( $ii= 0; $ii< $ss_len; ++$ii) { if( ord($ss{$ii}) < 33 || 126 < ord($ss{$ii}) || ord($ss{$ii})== 0x23 ) // знак диез { $ss_esc.= sprintf( «#%02x»/ ord($ss{$ii}));// использовать //шестнадцатеричный код > else { $ss_esc.= $ss{$ii}; } return $ss_esc; } function forge_fdf( $pdf_form_url, $fdf_data_strings, $fdf_data_names, $fields_hidden, $fields_readonly) { $fdf = «%FDF-1.2\x0d%\xe2\xe3\xcf\xd3\x0d\x0a»; // заголовок $fdf.= «1 0 obj\xOd« «; // открыть корневой словарь $fdf.= «\xOd/FDF « «; // открыть FDF-словарь $fdf.= «/Fields [ «; // открыть массив Fields формы // строковые данные, используемые для текстовых полей, // полей со списком и списков foreach( $fdf_data_strings as $key => $value ) { $fdf.= «« /V («.escape_pdf_string($value).»)>>. «/T («.escape_pdf_string($key).») «; if( in_array( $key, $fields_hidden )) $fdf.= «/SetF 2 «;
else $fdf.» «/CtrF 2 «; if( in_array( $key, $fields_readonly)) $fdf.= «/SetFf 1 «; else $fdf.= «/ClrFf 1 «; $fdf.= «» \xOd»; } // имена, используемые для переключателей и кнопок выбора // (например, / Yes и / Off для true и false) foreach( $fdf_data_names as $key => $value) { $fdf.= «« /V /».escape_pdf_name($value). « /T («,escape_pdf_string($key).»)«; if( in_array( $key, $fields_hidden)) $fdf.= «/SetF 2 «; else $fdf.= «/ClrF 2 «; if( in_array( $key, $fields_readonly)) $fdf.= «/SetFf 1«; else $fdf.= «/ClrFf 1 «; $fdf.= «» \xOd»; } $fdf.= «] \xOd»; // закрыть массив Fields // если имеются, то имена файла PDF-формы или URL if( $pdf_form_url) { $fdf.= «/F («.escape_pdf_string($pdf_form_url).») \xOd»; } $fdf.= «» \xOd»; // закрыть PDF-словарь $fdf.= «» \xOdendobj\xOd»; // закрыть корневой словарь // завершение; обратите внимание, что «1 О R» ссылается на «1 0 obj» выше $fdf.= «trailer\xOd«\xOd/Root I 0 R \x0d\x0d»\x0d»; $fdf.= «%%E0F\x0d\x0a»; return $fdf; ?> Заполнение PDF-форм (Проведите ваших пользователей через процесс заполнения формы.) Сбор информации с помощью сетевых форм — это интерактивный процесс. Вопросы сбора данных [Совет № 74] и управления формами [Со- [Совет № 75] уже рассматривались выше.
Используйте эти знания для программирования интерактивного сете- сетевого сеанса заполнения формы, пример которого показан на рисунке 6-6 (посетите веб-страницу http://www.pdfhacks.com/formjsession/, чтобы по- посмотреть этот пример и загрузить исходный РНР-код). Рис. 6-6. Динамическое состояние PDF-формы Подготовка окна Чтобы предоставить данные серверу, PDF-форма должна отобра- отображаться в веб-браузере. Удобнее отображать ее в HTML-окне. Это поз- позволяет сделать форму с HTML-командами и гиперссылку запасным выходом, чтобы пользователь не чувствовал себя попавшим в ловуш- ловушку. Это также показывает пользователю, что это не старый PDF-доку- PDF-документ, т. к. многие считают PDF-документ предназначенным только для загрузки и распечатки. Мало того, что он будет отличаться по ви- виду, окно также скроет URL PDF-документа и предотвратит рефлек- рефлексивную загрузку.
Ниже представлен код HTML-окна, используемого в примере на веб-странице http://www.pdftiacks.com/form_session/. Обратите внима- внимание, что для описания формы он использует PDF+FDF URL, чтобы воспрепятствовать выходу PDF-документа из окна [Совет № 75]. <?php // Это часть form_session // посетите www.pdfhacks.com/form_session/ // $our_dir='http:///.$_SERVER[/HTTP_HOST'].dimame($_SERVER[THP_SELF]); // PDF+FDF представление URL относится к окнам и процедурам // 'PDF'-ассоциации браузера вместо его 'FDF'-ассоциации // (некоторые браузеры не имеют FDF-ассоциации). // $form_frame_url= "". $our_dir.yform_session.pdf#FDF='. $our_dir.yupdate_state.php?reset=l'"; ?> <!DOCTYPE HTML PUBLIC JJ-//YJ3C//mJ) HTML 4.01 Frameset//EN" /yhttp://www.w3.org/TR/html4/frameset.dtd/'> <html> <head> <title>PDF Form Filling Session Demo</title> </head> <frameset cols="*,200"> <frame src=<?php echo $form_frame_url ?> name="form" scrolling="no" marginwidth=0 marginheight=O frameborder=l> <frame src="sidebar_session.html" name="sidebar" scrolling="auto" marginwidth=5 marginheight=5 frameborder=l> </frameset> </html> Создание интерактивной PDF-формы В разделе представлены некоторые идеи по созданию дизайна ин- интерактивной PDF-формы. Имейте в виду, что форма может иметь лю- любое количество PDF-полей, и эти поля можно скрыть от пользователя или разрешить только их чтение. Сценарий forge_fdf [Совет № 77] дает возможность установить эти флажки так, как необходимо, добавлени- добавлением имени поля к строкам $fields_hidden или $fields_readonly. • Используйте поля скрытого текста, чтобы хранить информацию о сеансе формы и состоянии. • Если форма имеет разделы, которые требуют отдельной сервер- серверной обработки, добавьте кнопку Submit Form (Представить форму) для каждого раздела. Показывайте только одну кнопку, скрывая все другие.
• Не забудьте добавлять в конце действия представления формы #FDF, например, update_state.php#FDF. Выделяйте определенные разделы формы с помощью границ, используя пустое текстовое поле, предназначенное только для чтения, которое показывает цветную границу и прозрачный фон. Нарисуйте сначала декоративные поля формы, чтобы они не стал- сталкивались с другими интерактивными полями, или поместите де- декоративное поле позади других, на более низкий уровень. Измените порядок вкладок поля формы. В Acrobat 6.0.1 командой меню Tools\ Advanced Editing (Сервис\Цо полнительное редактирование) активизируйте инстру- инструмент Select Object Tool (Инструмент выделения объек- объекта), выберите Advanced\Forms\Fields\Set Tab Order (Дополнительно\Формы\Поля\Установить порядок вкладок), а затем щелкните на каждом поле в нужном порядке. В Acrobat 5 активизируйте Form Tool (Инстру- (Инструмент формы), выбирая команды Tools\Forms\Fields\Set Tab Order (Сервис\Формы\Поля\Установить порядок вкладок), а затем щелкните на каждом поле в нужном порядке. • После завершения пользователем работы с разделом его поля должны быть доступны только для чтения, как и поля, содержа- содержащие результаты серверных вычислений. • Распределите поля между двумя-тремя частями PDF-страницы, чтобы они не загромождали страницу формы. • Преобразуйте форму из нескольких страниц в PDF-форму на од- одной странице. • Создайте текстовые поля для выдачи пользователю сообщений, предназначенных только для чтения. Если пользователь пред- представляет недопустимые данные полей, обработайте форму снова и выдайте соответствующее сообщение. При создании этих по- полей сообщений в Acrobat обозначьте их цветом, чтобы они отли- отличались от полей данных. Изменить текст сообщения можно, ис- используя FDF-файл. В сетевом примере на веб-странице http://www.pdfhacks.com/form_ses- sion/ использованы некоторые из этих методов Начало, середина, конец Сеанс заполнения формы имеет начало, середину и конец. Середи- Середина — тяжелая часть, потому что в ней работает логика формы. Сложны- Сложными частями являются начало и конец. Вот они по порядку.
Вход в форму. Начните сеанс, используя PDF +FDF URL [Совет № 75], чтобы от- открыть форму. Например: http:^ocalhost/form_session.pdf#FDF=http:^ocalhost/update_state. php?reset=l FDF-часть — это сценарий, инициализирующий состояние сеанса и использующий FDF-файл для настройки начального вида формы. Если это необходимо, храните идентификатор сеанса и информа- информацию о его состоянии в скрытых текстовых полях. Ответ на представление данных. При каждом представлении формы обновляйте состояние сеанса, а затем ответьте с помощью FDF-файла. Используйте его для обнов- обновления вида формы, чтобы активизировать или скрыть поля, а также для обновления текста в поле, предназначенном только для чтения, вместе с расчетными данными или сообщениями пользователю. Опустите ключ /F ($pdf_form_url в forge_fdf) используемый в FDF- файл е, если не готовы выйти из этого сеанса. Выход из формы. Когда сеанс работы с формой завершен, выйдите из него, исполь- используя FDF Forward. Это FDF-файл содержит только ключ /F ($pdf_form_url в forge_fdf). Установите ключ /F в URL HTML-стра- HTML-страницы или сценария. Этот новый адрес заменит PDF-форму в брау- браузере пользователя. Выполнение кода Посетите веб-страницу http://www.pdfhacks.com/form_session/ и по- посмотрите рабочий пример этой модели. Загрузите с этой страницы ар- архив form_session-l.l.zip, чтобы изучить PHP-сценарии и PDF-формы. Пользователи IndigoPerl [Совет № 74] могут распаковать form_session-1. l.zip в каталог: C:\indigoperl\apache\htdocs\pdf_hacks\form_session-l.l\, а затем выполнить пример на своем компьютере, указывая браузерам ссылку на http://localhost/pdf_ hacks/form_session-1.1/start.html. Объединение PDF-формы и ее данных (Обеспечьте сетевых пользователей копией их заполненной формы.) Программа Adobe Reader дает пользователю возможность добавлять, изменять, просматривать и печатать данные формы, но она не позво-
ляет сохранять заполненную PDF-форму на диске. Сохранение приво- приводит к получению копии пустой формы. Исправьте этот недостаток на стороне сервера, объединяя PDF- форму и ее данные. Затем предложите заполненную форму для загруз- загрузки записей пользователя. После объединения поля формы остаются интерактивными, даже при том что отображают данные пользователя. Сгладьте эту форму так, чтобы данные ее полей стали постоянной час- частью PDF-страниц. После этого заполненные поля не будут интерак- интерактивными. Вы можете объединять и сглаживать формы, используя биб- библиотеку iText или инструмент командной строки pdftk. Они являются бесплатным программным обеспечением. Объединение формы и ее данных с помощью Java Библиотека iText {http://wwwAowagie.com/iText/wm http://itextpdf.sf.net) — замечательный инструмент для управления PDF-документами. Следую- Следующая Java-программа, merge_pdf_fdf, демонстрирует, как объединить или сгладить PDF-форму и FDF-файл ее данных [Совет № 77], используя биб- библиотеку iText. Выполните этот код из командной строки или интегри- интегрируйте его в свое сетевое приложение. /* merge_pdf_fdf, версия 1.0 объединяет входной PDF-файл с входным FDF-файлом для создания заполненной PDF-формы; произвольно сглаживает FDF-данные так, чтобы они стали частью страницы http ://www. pdfhacks. com/merg e_p df_fdf/ вызовите ее из командной строки, например: Java -classpath ./itext-paulo.jar:. \ merge_pdf_fdf input.pdf input.fdf output.pdf или: Java -classpath ./itext-paulo.jar:. \ merge_pdf_fdf input.pdf input.fdf output.pdf flatten скорректируйте classpath к местонахождению iText 7 import java.io.*; import com.lowagie.text.pdf.*; public class merge_pdf_fdf extends Java.lang.Object { public static void main(String args[]) { if ( args.length == 3 || args.length == 4 ) { try{
// входной PDF-файл PdfReader reader = new PdfReader( args[O] ); reader.consolidateNamedDestinations(); reader.removeUnusedObjects(); // входной FDF-файл FdfReader fdf_reader= new FdfReader( args[l] ); // PdfStamper работает подобно PdfWriter PdfStamper pdf_stamper= new PdfStamper( reader, new FileOutputStream( args[2]) ); if( args.length == 4 ) { // «сглаженный» // заполненные данные становятся постоянной частью страницы pdf_stamper.setFormFlattening( true ); > else { // заполненные данные «придерживаются» полей формы, // но остаются интерактивными pdf_stamper.setFormFlattening( false ); > // настройка полей формы с помощью входного FDF-файла AcroFields fields» pdf_stamper.getAcroFields(); fields. setFields( fdfjreader ); // закрытие stamper закрывает // PdfWriter; PDF-документ записан pdf_stamper.close(); } catch( Exception ее ) { ee.printStackTrace(); } else { // ошибка ввода System.err.println(y/arguments: filel.pdf file2.fdf destfile [flatten]"); } } Чтобы создать Java-программу командной строки, скопируйте пре- предыдущий код в файл, названный merge_pdf_fdf.java. Затем скомпили- скомпилируйте merge_pdf_fdf.java, используя javac, настроив classpath для имени и местоположения каталога с iText: javac -classpath ./itext-paulo.jar merge_pdf_fdf.Java
и вызовите merge_pdf_fdf следующим образом: Java -classpath ./itext-paulo.jar:. \ merge_pdf_f df input.pdf input.f df output.pdf Объединение формы и ее данных с помощью pdftk Используйте программу pdftk [Совет № 79], чтобы объединить форму с FDF-файлом данных [Совет № 77] и создать новую PDF-форму. Поля отобразят данные, но останутся интерактивными. Операция fill_form программы pdftk использует имя FDF-файла в качестве параметра. Например: pdftk form.pdf fill_form data.fdf output filled_form.pdf Нельзя объединять операцию fill_form с любой другой операцией (например, cat), но можно добавить дополнительные опции вывода для шифрования [Совет № 52]. Внедрите данные формы в страницу, добавляя опцию вывода flatten_form. Результирующие PDF-данные больше не будут интер- интерактивными: pdftk form.pdf fill_form data.f df output filled_form.pdf flatten_f orm Или, если PDF-форма уже имеет данные полей, просто объедините их: pdftk filled_form.pdf output flattened_form.pdf flatten_form Объединение с помощью pdftk и РНР После установки программы pdftk на своем сетевом сервере вы мо- можете вызвать ее из своих PHP-сценариев, чтобы объединить PDF-фор- PDF-формы с FDF-данными. Используйте сценарий forgefdf [Совет № 77], что- чтобы привести данные к FDF-виду. Затем сохраните их во временном файле и вызовите программу pdftk, чтобы создать новый PDF-доку- PDF-документ из PDF-формы и FDF-данных. Используйте для этой цели следующий РНР-код: <?php // session_fdf является функцией для преобразования // состояния сеанса пользователя в FDF-строку $fdf_ss= session_fdf( $_GET['id'] ); $temp_fn= tempnam( '/tmp', 'tempfdf); $temp_fp= fopen( $temp_fn, W ); if( $temp_fp ) { fwrite( $temp_fp, $fdf_ss ); fclose( $temp_fp );
header( 'Content-type: application/pdf); passthru( yus^ocal/bin/pdftk form.pdf fill_form /.$temp_fn. ' output - flatten'); // вывод в stdout (-) unlink( $temp_fn); } ?> Управление с помощью pdftk (Возьмите под контроль документ в формате PDF с помощью pdftk.) Если PDF-документ — это электронная бумага, то pdftk — это элек- электронный механизм для разгибания скоб на документах, дырокол, скоро- скоросшиватель. Программа pdftk — простой бесплатный инструмент для вы- выполнения повседневных операций с PDF-документами. Она может: • отделять и объединять PDF-страницы [Совет № 51]; • расшифровывать и шифровать PDF-документы [Совет № 52]; • разбивать PDF-документ на отдельные страницы [Совет № 71]; • распаковывать и повторно сжимать потоки страниц [Совет № 80]. На сайте pdftk (http://www.AccessPDF.com/pdftk/) имеются ссылки для загрузки программ и команд, Программа pdftk в настоящее время выполняется в Windows, Linux, Solaris, FreeBSD и Mac OS X. Некото- Некоторые пользователи могут загрузить скомпилированные программы, в то время как другим придется загрузить исходный код и создать pdftk, используя gcc, gcj и libgcj (как описано на интернет-сайте). Програм- Программа pdftk — это бесплатное программное обеспечение. В Windows загрузите файл pdftk_l.O.exe.zip, разархивируйте его и по- поместите файл pdftk.exe в каталог C:\windows\system32\ или C:\winnt\ sys- tem32\. Проверьте программу, выполнив ее из командной строки, введя pdftk—help — появится информация о версии pdftk и использовании программы. Дополнительные бесплатные программные PDF-сред- PDF-средства включают mbtPDFasm (http://thierry.schmit.free.fr/ dev/mbtPdfAsm/enMbtPdfAsm2.html) и Multivalent Tools (http://multivalent.sourceforge.net/Tools/index.html), pdfmeld (http://www.fytek.com/) является коммерческим продуктом. Командная строка для Windows Приглашения к вводу команд не совсем подходят для управления большими сложными файловыми системами. Сконфигурируйте
Windows File Explorer, чтобы открывать приглашение к вводу команды в выбранном рабочем каталоге. Убедитесь, что добавили это новое действие к типу файла Folder (Папка), а не к типу файла File Folder (Папка файлов). В Windows XP и Windows 2000: 1. В меню Windows File Explorer командой Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options, выберите вкладку File Types (Типы файлов), а затем тип файла Folder (Папка) и щелкните на кнопке Advanced (Дополни- (Дополнительно). 2. Нажмите кнопку New (Создать), откройте диалоговое окно New Action (Новое действие) и присвойте новому действию имя Command (Команда). 3. Передайте действие приложению, которое будет его использо- использовать, щелкнув на кнопке Browse (Просмотреть) и выбрав файл cmd.exe, расположенный в каталоге C:\windows\ system32\ или С: \winnt\system32\. 4. Добавьте следующие параметры после cmd.exe: C:\windows\system32\cmd.exe /К cd "%1" 5. Нажмите три раза ОК, чтобы сохранить произведенные измене- изменения и закрыть диалоговые окна. В Windows 98: 1. В меню Windows File Explorer командой Tools\Folder Options (Сервис\Свойства папки) откройте диалоговое окно Folder Options, выберите вкладку File Types (Типы файлов), а затем тип файла Folder (Папка) и щелкните на кнопке Edit (Правка). 2. Нажмите на кнопку New (Создать) — появится диалоговое окно New Action (Новое действие). Присвойте новому действию имя Command (Команда). 3. Передайте действие приложению, которое будет его использо- использовать, нажав на кнопку Browse (Просмотреть) и выбрав файл com- command.com, расположенный в каталоге C:\windows\. 4. Добавьте следующие параметры после command.com: C:\windows\command.com /К cd "%1" 5. Нажмите три раза ОК, чтобы сохранить произведенные измене- изменения и закрыть диалоговые окна.
Проверьте конфигурацию, щелкнув правой кнопкой мыши на пап- папке в File Explorer. Контекстное меню должно содержать новое действие Command (Команда) (см. рисунок 6-7). Выберите его — появится пригла- приглашение к вводу команды, содержащее имя выбранной папки. Рис. 6-7. Открытие приглашения к вводу команды Вместо того чтобы вводить длинные имена файлов в ок- окно командной строки, выберите файл в File Explorer и перетащите его в окно. Отпустите кнопку мыши, и в ок- окне командной строки появится полное имя файла. Декодирование и управление документом в формате PDF на текстовом уровне (Превратите запутанный PDF-код в данные, с которыми можно работать напрямую.) Документ в формате PDF использует для организации данных эле- элементную структуру. При редактировании документов на текстовом уровне это помогает управлять заданными узлами. Данные, как прави- правило, сжаты и недоступны для чтения. Программа pdftk [Совет № 79] может распаковывать эти потоки, делая PDF-документ более интересным для чтения и доступным для взлома. Сначала распакуйте свой PDF-документ, используя программу pdftk: pdftk mydoc.pdf output mydoc.uncompressed.pdf uncompress He все текстовые редакторы могут обрабатывать смесь текстовых и двоичных данных, которые содержит PDF-документ. Некоторые ре-
дакторы могут читать и отображать эти данные, но не могут сохранять их должным образом. Рекомендуется использовать программу gVim [Совет №82]. Для получения дополнительной информации читайте до- документацию на веб-странице http://partners.adobe.com/asn/ acrobat/sdk/public/docs/PDFReference 15_y5.pdf. Откройте PDF-документ в своем текстовом редакторе, и вы увидите фрагменты открытого текста и нечитабельные двоичные данные. Эти данные организованы с использованием нескольких основных объек- объектов. PDF Reference (Справочник по формату PDF) 1.5 в разделе 3.2 по- подробно описывает их. Вот краткие сведения, которые могут вам помочь. Имена:/... Наклонная черта вправо указывает начало имени. Например: /Туре и /Раде. Большинство имен имеет специфические значения, опи- описанные в справочнике по формату PDF. Они никогда не сжимают- сжимаются и не шифруются. Строки: (...) Строки заключены в круглые скобки. Например: (Now is the time). Они используются для помещения данных открытого текста в ан- аннотациях и закладках. Их можно зашифровать, но нельзя сжать. Следите за символами \), \( или \\. Словари:« ключ1 значение1 ключ2 значение2 ... » Словари отображают ключи и значения. Ключи должны быть име- именами, а значения могут быть или словарями, или массивами. Массивы: [объект1 объект2 ...] Массивы представляют собой список объектов. Все PDF-объекты — часть одного большого дерева, связанного массивами и словарями. Потоки:« ... » stream...endstream Большинство PDF-данных помещены в потоки. Данные словаря предшествуют потоковым данным и содержат информацию о потоке, такую как его длина и щифрование. В скобки stream и endstream заклю- заключены потоковые данные. Потоки используются для представления растровых изображений и команд рисования страницы среди других данных. Используйте программу pdftk, чтобы сделать сжатые потоки страниц читаемыми. Некоторые потоки используют PDF-объекты (словари, строки, массивы и т. д.) для представления информации.
Косвенные объектные описания: mnR Косвенные объектные описания позволяют разнести объект и его описание. Описание — это пара чисел, сопровождаемых символом R, например, 3528 О R. Их можно найти в словарях и массивах. Чтобы определить местонахождение объекта, описанного т п R, ищите т п obj. Идентификаторы косвенных объектов: т п obj... endobj Косвенный объект — любой объект, которому предшествует иден- идентификатор т п obj, где тип — числа, однозначно определяющие объект. Другой объект может ссылаться на него, вызывая описание т п R, упомянутое ранее. Словари являются самыми интересными объектами. Они представ- представляют страницы и аннотации. Вы можете определить, что описывает словарь, проверяя его ключи /Туре и /Subtype. И наоборот, вы можете найти что-то в PDF-документе по его типу. Например, найти любую страницу в PDF-документе, выполняя поиск текста: /Page. Для поиска аннотаций ищите /Annot, а для изображений — /Image. В конце PDF-файла находится поисковая таблица XREF, которая указывает байтовое смещение для каждого косвенного объекта PDF-файла и позволяет выполнять быстрый произвольный доступ к PDF-страницам и другим данным. Редактирование PDF-документа на текстовом уровне может повредить таблицу XREF, что разрушит PDF- документ. Метод, описанный в разделе «Редактирование PDF-кода» [Совет № 81], решает эту проблему. Редактирование PDF-кода (Возьмите под контроль PDF-код с помощью таблицы XREF.) Раздел «Декодирование и управление PDF-документом на текстовом уровне» [Совет № 80] показал взломанный, преобразованный в открытый текст PDF-документ. В этом разделе мы отредактируем PDF-текст, а затем используем программу pdftk [Совет № 79], чтобы внести изменения и сжать потоки страниц после завершения работы. Неподходящий текстовый редактор может легко повре- повредить PDF-документ. Проверьте его, открывая PDF-до- PDF-документ, сохраняя его в новом файле, а затем пробуя от- открыть этот файл в программах Acrobat или Adobe Reader. Если редактор разрушил данные PDF-докумен- PDF-документа, то программы должны выдать предупреждающее со-
общение перед его открытием. Иногда, однако, эти предупреждения появляются на слишком короткое время, чтобы успеть обратить на них внимание. После того как PDF-документ будет восстановлен, програм- программы Acrobat и Adobe Reader отобразят его, как будто ни- ничего не случилось. Так как эти программы не являются самыми надежными инстру- инструментами для проверки PDF-документов, необходимо рассмотреть не- некоторые альтернативы. Бесплатная программа командной строки pdfinfo из проекта Xpdf (http://www.foolabs.com/xpdf/) выдает сообщение о повреждении PDF-документа, а программа Multivalent Tools (http://multivalent.sourceforge.net/Tools/index.html) обеспечивает бесплат- бесплатный инструмент для проверки правильности PDF-документа. Если требуется хороший текстовый редактор, попробуйте gVim [Совет № 82]. Сначала распакуйте потоки страниц своего PDF-документа [Совет № 80]: pdftk mydoc.pdf output mydoc.uncompressed.pdf uncompress Затем откройте его в текстовом редакторе. Определите местонахож- местонахождение страницы, представляющей интерес, выполняя поиск текста/pdf tk_pageNum N, где N — номер страницы (первая страница имеет номер 1, а не 0). Этот текст добавится к словарям страниц программы pdftk. Найдите ключ /Contents в словаре страницы. Он, вероятно, преобра- преобразован в описание косвенного объекта: m n R. Определите его местона- местонахождение, выполнив поиск текста m n obj. Это приведет вас к потоку или к массиву потоков. Если это массив, то отыщите любой из его опи- описанных потоков тем же способом. Теперь нужно посмотреть на поток операций рисования PDF-доку- PDF-документа, которые описывают страницу. Эти операции и их взаимодейст- взаимодействие подробно описаны в справочнике по формату PDF [Совет № 98]. Если страница содержит много текста, его можно разбить. Примером допус- допустимого изменения в тексте страницы является замена [(grI7.7(oup)] на [(grip)] или (storey) на (story). Помещение текста в круглые скобки соот- соответствует правилам. Внесите изменения и сохраните свою работу. Редактирование PDF-документа на текстовом уровне повреждает по- поисковую таблицу XREF в конце файла. Восстановите отредактирован- отредактированный PDF-документ, используя программу pdftk следующим образом: pdftk mydoc.edited.pdf output mydoc.fixed.pdf Или, если хотите сжать вывод и удалить входы /pdftk_pageNum, до- добавьте в конце команду compress, например: pdftk mydoc.edited.pdf output mydoc.fixed.pdf compress
Откройте PDF-документ в Adobe Reader и посмотрите страницу. Ви- Видите внесенные изменения? Если они были в середине абзаца, то вы можете с удивлением обнаружить, что абзац не изменен в соответствии с внесенными коррективами. Большинство PDF-документов не имеет понятия абзац, так как же быть? Описанная процедура — не лучший способ устранения опечаток. Она приведена, чтобы лучше использовать в разделе «Объединениеpdftk cgVim для редактирования PDF-документов» [Совет № 82]. Объединение pdftk с gVim для редактирования документов в формате PDF (Превратите gVim в PDF-редактор.) Текстовый редактор gVim удобен для просмотра и редактирования PDF-кода. Он прекрасно обрабатывает двоичные данные и является бесплатным. Его можно расширить с помощью дополнений, соответ- соответствующих вашим запросам. Сначала загрузите и установите gVim. Посетите сайт http://www.vim.org. Страница загрузки предлагает ссыл- ссылки и команды для многочисленных платформ. Windows-пользователи могут загрузить инсталлятор с веб-страницы http://www.vim.org/down- load.php. Сейчас он называется gvim63.exe. Параметры, установленные по умолчанию, удовлетворяют большинство потребностей. Установите программу, и она создаст меню Programs (Программы), из которого за- запускается редактор gVim. Новый пользователь gVim должен выполнять эту программу в режи- режиме Easy (Облегченный), который позволяет ей работать подобно боль- большинству других текстовых редакторов. В Windows сделайте это, запус- запуская gVim Easy из меню Programs (Программы). Можно активизировать этот режим изнутри программы, вводя (начальное двоеточие является обязательным) rsource SVIMRUNTIME/evim.vim в окне сеанса gVim. Программа gVim поставляется с интерактивной обучающей программой и хорошей системой встроенной подсказки. Узнайте о ней, вызвав :help. Если программа gVim выдает сообщение об ошибке Illegal Back Reference (Незаконная обратная ссылка), проверьте переменную окружения НОМЕ командой меню Start\Settings\Control Panel\System\Advanced\ Environment Variables (Пуск\Настройки\Панель управ- ления\Система\Дополнительно\Переменные окруже- окружения). Некоторые комбинации символа наклонной чер- черты влево в НОМЕ типа \1 или \2 вызывают эти ошибки. Попробуйте заменить в переменной НОМЕ все наклон- наклонные черты влево наклонными чертами вправо.
Включение pdftk в gVim Дополнение pdftk преобразует программу gVim в PDF-редактор. При открытии PDF-документа оно автоматически распаковывает по- потоки страниц так, чтобы можно было читать и изменять их [Совет № 80]. При закрытии PDF-документа оно автоматически сжимает потоки страниц. Любые изменения, сделанные в PDF-документах, приводят к внутреннему байтовому смещению [Совет № 81]. Посетите сайт http://www.AccessPDF.com/pdftk/ и загрузите файл pdftk.vim.zip. Разархивируйте, а затем поместите результирующий файл pdftk.vim в каталог дополнений программы gVim. Он обычно располо- расположен в C:\Vim\vim63\plugin\. Чтобы быстрее найти этот каталог, отыщи- отыщите файл gzip.vim, который должен уже находиться там. Дополнение pdftk будет активировано при перезапуске программы gVim. Будьте осторожны при тестировании этого дополнения в первый раз. Скопируйте PDF-документ, чтобы создать тестовый файл под на- названием testl.pdf. Запустите программу gVim и откройте этот файл. Произойдет небольшая задержка на время распаковки файла програм- программой pdftk. Затем данные должны появиться в редакторе в виде читае- читаемого текста, как показано на рисунке 6-8. Любые точечные рисунки бу- будут отображаться как нечитабельная смесь символов. Рис. 6-8. Открытый текст, полученный из PDF-потоков с помощью дополнения к программе gVim
Не делая в файле никаких изменений, сохраните его как test2.pdf а затем закройте его. Программа gVim снова сделает паузу на время сжатия файла test2.pdf. Теперь откройте файл test2.pdf в программе Acrobat или Reader. Если все в порядке, то файл откроется. Если Acrobat или Reader выдают сообщение о повреждении файла, перепро- перепроверьте установку. Программы Acrobat и Reader выдают предупрежде- предупреждение при восстановлении поврежденного PDF-фай- PDF-файла, но иногда эти предупреждения мелькают слиш- слишком быстро, чтобы успеть обратить на них внимание. После того как документ будет восстановлен, про- программы отобразят его так, как будто ничего не случи- случилось. Acrobat и Reader — не самые надежные инстру- инструментальные средства для проверки PDF-документов. Попробуйте воспользоваться альтернативными средствами. Бесплатная программа командной строки pdfinfo из проекта Xpdf (http://www.foolabs.com/xpdf/) может сообщить о повреждении PDF-доку- PDF-документа. Программа Multivalent Tools (http://multivalent.sourceforge.net/Tools/ index.html) также является бесплатным инструментом для проверки пра- правильности PDF-документа. Усовершенствование метода С помощью PDF-дополнений программа gVim позволяет редакти- редактировать PDF-код. Объедините силу и красоту, конфигурируя инстру- инструмент TouchUp в Acrobat, чтобы использовать программу gVim для ре- редактирования PDF-объектов. В программе Acrobat командой меню Edit\Preferences\General (Правка\Параметры настройки\Общие) выберите TouchUp. Щелкни- Щелкните на Choose Page/Object Editor (Выбрать страницу/Редактор объектов) и в раскрывающемся списке выберите файл gvim.exe, который обычно находится в каталоге C:\Vim\vim63\, и нажмите ОК. Проверьте свою новую конфигурацию: откройте PDF-документ в программе Acrobat и выберите инструмент TouchUp Object (он может быть скрыт в панели Text Tool [Инструмент текста]), как показано на рисунке 6-9. Щелкните на абзаце — появится раскрывающийся блок. Щелкните правой кнопкой мыши на этом блоке, и выберите в контекстном меню Edit Object (Редактирование объекта). Откроется программа gVim, ото- отображая PDF-код, описывающий данный выбор (см. рисунок 6-10). Это будет полный PDF-документ со шрифтами и таблицей XREF.
Рис. 6-9. Кнопка инструмента Touch Up Object, которая может находиться в меню панели Text Tool в Acrobat 6 (слева) и Acrobat 5 (справа) Выберите фрагмент текста и сделайте в нем небольшие изменения [Совет № 80]. При сохранении gVim-файла Acrobat должен быстро обно- обновить видимую страницу, чтобы отобразить сделанное изменение. Та- Таким способом проводите редактирование в PDF-документах. Рис. 6-10. PDF-код выделенных разделов Иногда программа gVim выдает случайные предупреждения о дан- данных, которые изменены на диске другой программой. Их можно игно- игнорировать.
Изменение PDF-гиперссылок (Добавьте оперативные данные сеанса к PDF-документу.) После публикации PDF-документа в сети было бы интересно уз- узнать, какое воздействие он имел на читателей. Получите более ясное отображение ответа читателя, изменяя PDF-гиперссылки так, чтобы они передавали информацию о документе на ваш сервер. Например, если ваш информационный PDF-бюллетень за июль имеет гиперссылки на: http://www.pdfhacks.com/index.html, то можно добавить PDF-гиперссылки в конец информационного бюл- бюллетеня, используя вопросительный знак: http://www.pdfhacks.com/index.html?edition=:0407 Когда кто-то, читая информационный PDF-бюллетень, следует по этой ссылке на ваш сайт, то сетевой журнал фиксирует, какой инфор- информационный бюллетень он читал. Расширьте идею ответа читателя, добавляя к PDF-гиперссылкам данные, идентифицирующие пользователя, первоначально загру- загрузившего PDF-документ. Это легко сделать при обслуживании PDF- документа. Добавление гиперссылок на PDF-документы с помощью ссылок или кнопок Страница формата PDF может содержать гиперссылки на контент сети. Создайте их, используя инструмент Link Tool (Инструмент ссылок), Button Tool (Инструмент кнопок) в Acrobat 6 или Form Tool (Инструмент формы) в Acrobat 5. Используйте инструмент Link Tool (см. рисунок 6-11), если хотите добавить гиперссылку к существующе- существующему тексту или графике, или инструменты Button Tool и Form Tool, если хотите добавить гиперссылку и добавить текст/графику к стра- странице, как показано на рисунке 6-12. Например, создать с помощью инструментов Button Tool и Form Tool навигационную панель веб- стиля [Совет № 65]. Чтобы создать кнопку гиперссылки в Acrobat 6, командой меню Tools\Advanced Editing\Forms (Сервис\Дополнительное редактирова- ние\Формы) выберите Button Tool (Инструмент кнопок). Щелкните на PDF-странице и растяните прямоугольник. Отпустите кнопку мы- мыши — откроется диалоговое окно Field Properties (Свойства полей). На- Настройте вид кнопки, используя вкладки General (Общие), Appearance (Вид) и Options (Опции).
Рис. 6-11. Инструмент Button Tool в Acrobat 6 (слева внизу) и универсальный инструмент Form Tool в Acrobat 5 (справа) Рис. 6-12. Добавление гиперссылки (вверху) к существующему тексту страницы и использование кнопки (внизу) для добавления гиперссылки и текста/графики к странице Выберите вкладку Actions (Действия). Установите значение опции Trigger (Триггер) как Mouse Up (Щелчок мышью), а опцию Action (Действие) как Open a Web Link (Открыть сетевую ссылку), а затем щелкните Add (Добавить). Откроется диалоговое окно, в котором мож- можно ввести URL гиперссылки.
При создании кнопок гиперссылок кнопка Name (Имя) не важна, однако ее нельзя оставлять пустой. Присвой- Присвойте ей любой уникальный идентификатор. В Acrobat 6 это делается автоматически. Чтобы создать кнопку гиперссылки в Acrobat 5, выберите Form Tool (Инструмент формы), щелкните на PDF-странице и растяните прямо- прямоугольник. Отпустите кнопку мыши — откроется диалоговое окно Field Properties (Свойства полей). Определите тип поля как Button (Кнопка) и введите уникальное имя Name (Имя). Настройте вид кнопки, ис- используя вкладки Appearance (Вид) и Options (Опции). Откройте вкладку Actions (Действия), выберите опцию Mouse Up (Щелчок мышью) и нажмите Add (Добавить). Установите опцию Action Туре (Тип действия) как World Wide Web Link (Ссылка WWW), нажми- нажмите Edit URL (Отредактировать URL) и введите URL гиперссылки. Использование меток-заполнителей для URL гиперссылки При вводе своей ссылки или кнопки URL используйте идентифика- идентификационное имя типа urlbeg_userhome вместо фактического URL. Заполни- Заполните эту метку-заполнитель звездочками (*) так, чтобы она была не коро- короче самого длинного из возможных URL (см. рисунок 6-13). Используйте постоянный префикс для всех этих имен (например, urlbeg), чтобы поз- позже их было проще найти, используя grep. Рис. 6-13. Идентификация меток-заполнителей для URL, дополняемых звездочками, для соответствия самому длинному из возможных URL Форматирование PDF-кода с помощью pdftk Когда PDF-документ готов к сетевому распространению, обрабо- обработайте его с помощью программы pdftk [Совет № 79]. Она форматирует PDF-код, гарантирующий, что каждый URL находится в своей соб-
ственной строке. Добавьте к имени выходного файла расширение pdfsrc вместо pdf: pdftk mydocument.pdf output mydocument.pdfsrc С этого момента данный файл не должен обрабатываться подобно PDF-файлу, и расширение pdfsrc напоминает об этом. Добавление меток-заполнителей к PDF-документу Найдите байтовое смещение для меток-заполнителей URL с помо- помощью программы grep (Windows-пользователи могут посетить веб-стра- веб-страницу http://gnuwin32.sf.net/packages/grep.htm или установить MSYS [Со- [Совет № 97], чтобы получить grep). Программа grep покажет байтовое смещение и отобразит определенную метку-заполнитель, расположен- расположенную на этой строке PDF-документа. Например: ssteward@armand:~$ grep -ab urlbeg mydocument.pdfsrc 9202:«/URI(urlbeg_userhome*******************) 11793:«/URI (urlbeg_userhome*******************) 17046:«/URI(urlbeg_newsletters*******************) В текстовом редакторе [Совет № 82] откройте свой pdfsrc-фшл и до- добавьте к началу по одной строке для каждого смещения. Каждая стро- строка должна выглядеть следующим образом: #-urlname-urloffset Вот как предыдущий вывод grep появился бы в начале mydocument.pdfsrc: #-userhome-9202 #-userhome-11793 #-newsletters-17046 %PDF-1.3... После добавления этих строк не сохраняйте PDF-документ с по- помощью pdftk, gVim или Acrobat. Расширение имени pdfsrc должно напомнить вам, что не нужно обрабатывать этот файл подобно PDF-файлу. Изменение PDF-документа может нарушить байтовые смещения. Код Этот пример PHP-сценария, serve_newsletter.php, открывает pdfsrc- файл, читает данные смещения, которые мы добавили, а затем обслу- обслуживает PDF-документ. Во время сопровождения PDF-документа он
заменяет метки-заполнители гиперссылками и использует значения edition и user строки запроса GET для присоединения PDF-гиперссылок. Например, когда запрос имеет вид: http://www.pdfhacks. com/serve_newsletter.php ?edition =0307&user=84, сценарий открывает PDF-файл newsletter. 0307.pdfsrc и обрабатывает его, заменяя все метки-заполнители userhome гиперссылки следую- следующим URL: http://www.pdfhacks.com/user_home.php ?user—84, а все метки-заполнители newsletters следующим URL: http://www.pdfhacksxom/newsletter_home.php ?user=84&edition =0307 Адаптируйте сценарий serve_newsletter.php для своих целей: <?php // serve_newsletter.php, версия 1.0 //http://www.pdfhacks.com/dynamic_links/ $fp= @fopen( //./newsletter.{$_GET[/edition']}.pdfsrc"/ Y); if($fp){ if( $_CET['debug']) { header("Content-Type: text/plain"); // отладка else{ header('Content-Type: application/pdf); } $pdf_offset= 0; $url_offsets= array (); // выполнение итераций в первых строках pdfsrc-файла // для загрузки $url_offsets while( $cc= fgets($fp, 1024)) { if( $cc{0}== '#') { // один из комментариев list($comment/ $name, $offset)= explode('-', $cc ); if( $name== 'userhome') { $url_offsets[(int)$offset]= /http://www.pdfhacks.com/user_home.php?user=/. S.GETf'user']; > else if( $name== 'newsletters') { $url_offsets[(int)$offset]= yhttp://www.pdfhacks.com/newsletter_home.php?user='. $_GET[yuser/] . '&edition='. $_GET['edition']; } else { // значение по умолчанию $url_offsets[(int)$offset]='http://www.pdfhacks.com/; }
} else { // конец комментариев echo $cc; $pdf_offset= strlen($cc)+1; break; } // сортировка по увеличению смещения ksort( $url_offsets, SORT_NUMERIC); reset($url_offsets ); $output_url_line_b= false; $output_url_b= false; $closed_string_b= false; list( $offset, $url )= each( $url_offsets ); $url_ii= 0; $url_len= strlen($url); // выполнение итераций в оставшейся части файла while( ($cc= fgetc($fp))!= "") { if( $output_url_line_b && $сс=='(') { // мы достигли начала URL SoutpuOirLlineJa^ false; $output_url_b= true; echo'('; else if( $output_url_b ) { if( $cc==')'){// окончание работы с этим URL if( $closed_string_b ) { // строка уже была завершена echo"; } else { echo')'; > // получение следующей пары смещение/URL list( $offset $url )= each( $url_offsets ); $url_ii= 0; $url_len= strlen($url); // сброс $output_url_b= false; $closed_string_b= false; > else if( $url_ii< $url_len ) { // вывод одного символа $url echo $url{$url_ii++}; > else if( $url_ii== $url_len ) { // окончание работы с $url, закрытие этой строки
echo')'; $closed_string_b= true; $url_ii++; } else { echo''; // замена общих фраз пробелами } eise{ // вывод этого символа echo $cc; if( $offeet" $pdf_offset) { // мы достигли строки в pdfsrc, где должен быть // URL; начало поиска символов'(' $output_url_line_b= true; ++$pdf_offset; fclose( $fp ); } else { // неудачное открытие файла echo 'Error: failed to open:'."./newsletter.{$_GET['edition']}.pdfsrc"; } Выполнение кода Загрузите этот файл на сетевой сервер вместе со своим измененным PDF-файлом. Вызовите сценарий с содержащим информацию URL следующим образом: http://www.pdfhacks.com/newsletters.php ?ed=0307&u=84572 Изменение PDF-текста во время сеанса (Создайте PDF-шаблон, заполняемый во время сеанса.) Иногда PDF-документ должен содержать динамическую информа- информацию. Например, обложка PDF-брошюры [Совет № 89] может включать имя клиента: «Создана для Мэри Джейн Доэ 15 марта 2005 г.». Чтобы сделать это, используйте знания об изменении PDF-текста в редакторе открытого текста [Совет № 80] для создания PDF-шаблона, а затем за- заполните его, используя сценарий для сетевого сервера. Полный процесс напоминает описанный в разделе «Изменение PDF-гиперссылок во время сеанса» [Совет № 83]. Вместо PDF-ссылок до-
бавьте к потокам страниц заполнители, которые во время сеанса заме- заменяются данными. Создание документа в формате PDF Разработайте документ, добавьте заполнители там, где хотите ис- использовать динамические данные. Заполнители должны иметь общий префикс, например textbeg_customer. Стилизуйте этот текст по своему вкусу, но выровняйте его по левому краю (не по центру). Перед созда- созданием PDF-документа будьте внимательны со шрифтами заполните- заполнителей, чтобы избежать результатов, показанных на рисунке 6-14. Рис. 6-14. Программа Acrobat, отображающая круглые скобки вокруг «Jane» как пустые прямоугольники, потому что они не включены в шрифты Какой бы ни был выбран шрифт для заполнителей, убедитесь, что он встроен в PDF-документ [Совет № 43]. Внедренный шрифт — это ча- часто подмножество, которое включает только те символы, которые ис- используются в документе. Если текст заполнителя использует шрифт Туре 1, то сконфигуриройте программу Distiller так, чтобы не разби- разбивать этот шрифт [Совет № 43]. Если текст заполнителя использует шрифт TrueType или ОрепТуре, то убедитесь, что каждый нужный
символ присутствует в документе. Для этого создайте отдельную стра- страницу, включающую каждый символ алфавита, цифру и знак препина- препинания, который будет нужен. Используйте эту смесь символов в шрифте своего заполнителя. Отобразите эту страницу в PDF-документе, а затем удалите ее. Преобразование PDF-документа в шаблон Подготовьте документ для редактирования текста с помощью программы pdttk [Совет № 79] наподобие следующей записи (если ис- используется редактор gVim и дополнение к нему [Совет № 82], этот шаг не нужен): pdftk mydoc.pdf output mydoc.plain.pdf uncompress Откройте в своем редакторе результирующий файл и найдите текст- заполнитель. Если вы не можете найти его, выполните поиск по номе- номеру страницы, например pageNum 5, а затем просмотрите ее сверху вниз [Совет № 81], чтобы найти поток страницы, который содержит заполни- заполнитель. Программа Distiller, вероятно, разобьет его на части, например, textbeg_customer может стать [(textM(b)-1.7(eg_custM(o)-1.7(mer)]. При создании PDF-документа с помощью программы Ghostscript текст, использующий шрифты TrueType, по- получает непонятную кодировку. Это означает, что такой PDF-код невозможно обработать. Решение состоит в ис- использовании шрифтов Туре 1 вместо TrueType. Сделайте несколько изменений в этом потоке страниц. Сначала восста- восстановите текст-заполнитель так, чтобы программа grep могла найти его: [(textM(b)-1.7(eg_custM(o)-1.7(mer)]TJ становится: [ (textbeg_customer) ] TJ Или, если строка заканчивается на Tj: (Created for textbeg_customer on textbeg_date)Tj перепишите ее следующим образом, добавляя квадратные скобки и за- заменяя Tj в конце на TJ: [(Created for textbeg_customer on textbeg_date)]TJ Затем, в случае необходимости, поместите каждый заполнитель в от- отдельной строке. Так, предыдущая строка примет вид:
[(Created for) (textbeg_customer) (on) (textbeg_date)]JT Дополните заполнители звездочками (*). Добавьте такое количество звездочек, чтобы заполнитель был длиннее любых данных, которые там могли быть записаны. Предыдущие строки примут вид: [(Created for) (textbeg customer***********************************) (on) (textbeg_date**********************)]JT Сохраните и закройте измененный PDF-документ. Что произойдет с избыточным заполнением во время сеанса? Сценарий заменяет его пробелами вне PDF- строки, поэтому оно не будет представлено на страни- странице. Предыдущий пример после обработки сценарием может выглядеть так: [(Created for) (Mary Jane Doe) (on) (March 15, 2005) ]JT где строки (Mary Jane Doe) и (March 15, 2005) сопро- сопровождаются многочисленными пробелами. Добавление смещений заполнителя к PDF-документу Если вы использовали редактор gVim и дополнение для редактиро- редактирования PDF-документа, то теперь его нужно распаковать. В противном случае нужно восстановить таблицу XREF PDF-документа и длину по- потоков. Одна команда выполняет обе задачи: pdftk mydoc.plain.pdf output mydoc.pdfsrc uncompress С этого момента нельзя обрабатывать файл подобно PDF-файлу, и расширение имени pdfsrc напомнит об этом. Найдите байтовые смещения к заполнителям с помощью grep (Windows- пользователи могут посетить веб-страницу http://gnuwin32.sf.net/packages/ grep.htm или установить MSYS [Совет № 97], чтобы получить программу grep): ssteward@armand:~$ grep -ab textbeg mydoc.pdfsrc 9202:(textbeg_customer*********** ****************) 9247:(textbeg_date***************************)]TJ 11793:(textbeg_customer******************* ********)
В текстовом редакторе добавьте по одной строке для каждого смеще- смещения к началу своего pdfsrc-фшла. Каждая строка должна выглядеть сле- следующим образом: #-dataname-dataoffset Переменная dataname используется в следующем коде сценария для идентификации данных, которые будут записаны в PDF-документ. В этом примере переменная customer будет заменена именем клиента. Например, предыдущий вывод grep появился бы в начале pdfsrc-файла в следующем виде: #-customer-9202 #-date-9247 #-customer-11793 %PDF-1.3... После добавления этих строк не изменяйте PDF-документ с помо- помощью программ pdftk, gVim или Acrobat. Расширение имени файла pdfsrc должно напомнить вам, что не нужно обрабатывать его подобно PDF- файлу, т. к. может лишить законной силы байтовые смещения. Код Этот пример PHP-сценария, alter_pdf_text_example.php, открывает pdfsrc-фшл, читает добавленные данные смещения, а затем обслужи- обслуживает PDF-документ и заменяет заполнители заданным текстом. Обра- Обратите внимание, как происходит замена текста с использованием escape_pdf_string. <?php // alter_pdf_text_example.php, версия 1.0 //http ://www.p dfhacks. com/dynamic_text/ // имя PDF-файла, который содержит заполнители // для динамического текста $pdfsrc_fn= './cover.pdfsrc'; // данные, которые будут помещены в PDF-текст; $customer_text= «Mary Jane Doe»; $date_text= «March 15, 2005»; function escape_pdf_string( $ss) { $ss_esc= "; $ss_len= strlen( $ss); for( $ii= 0; $ii< $ss_len; ++$ii) { if( ord($ss{$ii})== 0x28 || // открытие круглых скобок ord($ss{$ii})== 0x29 jj // закрытие круглых скобок
ord($ss{$ii})== Ox5c ) // наклонная черта влево { $ss_esc.= chr(Ox5c).$ss{$ii}; // знак перехода в виде наклонной // черты влево } else if( ord($ss{$ii}) < 32 || 126 < ord($ss{$ii})) { $ss_esc.= sprintf( «\\%03o», ord($ss{$ii})); // использование // восьмеричного кода > else { $ss_esc.= $ss{$ii}; } return $ss_esc; > // открытие исходного PDF-файла, который содержит заполнители $fp= @>fopen( $pdfsrc_fn, Y ); if($fp){ if( $_GET['debug']) { header(«Content-Type: text/plain»); // отладка } else { header('Content-Type: application/pdf); } $pdf_offset= 0; $text_offsets= array (); // выполнение итераций в первых строках pdfsrc-файла для загрузки $text_offsets; while( $cc= fgets($fp, 1024)) { if( $cc{0}== '#') { // один из комментариев list($comment, $name, $offset)= explode('-', $cc ); if( $name== 'customer') { $text_offsets [ (int) $offset]= escape_pdf_string( $customer_text); } else if( $name== 'date') { $text_offsets[(int)$offset]= escape_pdf_string( $date_text); > else { // по умолчанию $text_offsets[(int)$offset]= escape_pdf_string( '[ERROR]' ); } } else { // конец комментариев echo $cc; $pdf_offset= strlen($cc)+ 1; break;
// сортировка по увеличению смещения ksort( $text_offsets, SORT_NUMERIC ); reset($text_offsets); $output_text_line_b= false; $output_text_b= false; $closed_string_b= false; list( $offset, $text )= each( $text_offsets ); $text_ii= 0; $text_len= strlen($text); // выполнение итераций в оставшейся части файла while( ($cc= fgetc($fp))!= «» ) { if( $output_text_line_b && $сс=='(') { // начало текста $output_text_line_b= false; $output_text_b= true; echo'('; } else if( $output_text_b ) { if( $cc==')'){// окончание работы с текстом if( $closed_string_b) { // строка завершена echo' '; } else { echo')'; > // получение следующей пары смещение/текст list( $offset, $text )= each( $text_offsets ); $text_ii= 0; $text_len= strlen($text); // сброс $output_text_b= false; $closed_string_b= false; } else if( $text_ii< $text_len ) { // вывод символа $text echo $text{$text_ii++}; } else if( $text_ii== $text_len ) { // окончание работы с $text, завершение строки echo ')'; $closed_string_b= true; $text_ii++; else { echo''; // замена дополнения пробелом
else { // вывод этого символа echo $cc; if( $offset== $pdf_offset) { // найдена строка в pdfsrc-файле, где // должен находиться текст; начало поиска символов'(' $output_text_line_b= true; } ++$pdf_offset; } fclose( $fp ); } else { // ошибка открытия файла echo 'Error: failed to open: '.$pdfsrc_fn; } ?> Выполнение кода Пользователи IndigoPerl (см. параграф «Установка сетевого сервера Apache в Windows» в разделе «Сбор данных с помощью сетевых PDF- форм» [Совет № 74]) могут скопировать файл alterjpdf_text_ example.php в каталог C:\indigoperl\apache\htdocsdf_hacksBMtCTC с PDF-шаблоном под названием cover.pdfsrc. Укажите своему браузеру на http://localhost/ pdfjiacks/alter_pdf_text_example.php, и должен появиться PDF-доку- PDF-документ. Все заполнители textbeg_customer должны быть заменены «Магу Jane Doe», а все заполнители textbeg_date должны быть заменены «March 15,2005». Естественно, необходимо адаптировать этот сцена- сценарий для своих целей. Использование HTML для создания документов в формате PDF (Преобразуйте свой контент в формат HTML, а затем - в формат PDF.) HTML-страницы легко создавать «на лету». PDF-страницы являют- являются более жесткими. Один из способов создания динамического PDF- документа состоит в том, чтобы сначала создать документ в формате HTML, а затем использовать программу HTMLDOC для его преобра- преобразования в формат PDF, как показано на рисунке 6-15. Это работает и для отдельных страниц, и для документов в целом.
Рис. 6-15. Использование программы HTMLDOC для создания закладок и ТОС-страниц из HTML-заголовков и преобразования гиперссылок в оперативные PDF-ссылки Программа HTMLDOC создает PDF-документы из данных формата HTML 3.2. Она обеспечивает опции создания заголовков и нижних ко- колонтитулов, добавляет PDF-функции: закладки, ссылки, метаданные и шифрование. Вызовите программу HTMLDOC из командной строки или используйте ее GUI (Графический интерфейс пользователя). Посе- Посетите веб-страницу http://www.easysw.com/htmldoc/software.php, чтобы за- загрузить двоичный Windows-код или исходный код, который можно скомпилировать в Linux, Mac OS X или других операционных системах. Подробная документация, поставляемая вместе с программой, до- доступна на веб-странице http://www.easysw.com/htmldoc/documentation.php. В Perl с помощью программы HTMLDOC можно автоматизировать создание PDF-документа, используя модуль HTML::HTMLDoc для обеспечения связи с ней. Использование Perl для создания документов в формате PDF (Создайте или измените документ с помощью Perl-сценария.) Многие сайты используют язык Perl для создания динамического кон- контента. Используйте его, чтобы написать сценарий для программы Acrobat [Совет № 95]. Существует большое количество пакетов, расширяющих Perl, в т. ч. позволяющих создавать PDF-документы и управлять ими.
Установка Perl и пакета PDF::API2 в Windows Раздел «Создание сценариев для Acrobat в Windows с помощью Perl» [Со- [Совет № 95] объясняет, как установить язык Perl в Windows. После уста- установки Perl используйте Perl Package Manager (Менеджер Perl-пакетов), инсталляцию пакета PDF::API2. Запустите Programmer's Package Manager (Менеджер пакетов про- программиста) — РРМ, раньше называвшийся Perl Package Manager (Ме- (Менеджер Perl-пакетов), командой Start\ Programs\ActiveState ActivePerl 5.8\Perl Package Manager (IlycK\nporpaMMbi\ActiveState ActivePerl 5.8\Менеджер Perl-пакетов). Откроется приглашение к вводу команды с подсказкой ррт>. Введите help, чтобы увидеть список команд, и search pdf, чтобы увидеть список доступных пакетов. Чтобы установить пакет PDF::API2, введите install pdf-api2. Package Manager (Менеджер паке- пакетов) найдет пакет в интернете и установит его на вашей машине. Пол- Полный сеанс выглядит примерно так: PPM - Programmer's Package Manager version 3.1. Copyright (с) 2001 ActiveState SRL. All Rights Reserved. Entering interactive shell. Using Term::ReadLine::Stub as readline library. Type Tielp' to get started. ppm> install pdf-api2 Install 'pdf-api2' version 0.3r77 in ActivePerl 5.8.3.809. Transferring data: 74162/1028845 bytes. Installing C:\Perl\site\lib\PDF\API2\CoreFont\verdanaitalic.pm Installing C:\Perl\site\lib\PDF\API2\CoreFont\webdings.pm Installing C:\Perl\site\lib\PDF\API2\CoreFont\wingdings.pm Installing C:\Perl\site\lib\PDF\API2\CoreFont\zapfdingbats.pm Installing C:\Perl\site\Ub\PDF\API2\Chart\Pie.pm Successfully installed pdf-api2 version 0.3r77 in ActivePerl 5.8.3.809. ppm> quit Пакет PDF::API2 широко используется для создания и управления PDF-документами. Загрузить документацию и примеры можно с веб- вебстраницы http://pdfapi2.sourceforge. net/dl/. «Hello World!» в Perl Этот Perl-сценарий создает документ в формате PDF под названием HelloWorld.pdf, добавляет страницу, а затем добавляет к этой странице текст. На рисунке 6-16 показан PDF-документ, созданный этим сценарием.
Рис. 6-16. Создание PDF-контента с помощью Perl #!/usr/bin/perl # HelloWorld.pl; адаптирован из Ox_test-pl use PDF::API2; my $pdf = PDF::API2->new(-file => «HelloWorld.pdf»); $pdf->mediaboxE95,842); my $page = $pdf->page; my $fnt = $pdf->corefont(/AriaV,-encoding => latinl'); my $txt = $page->hybrid; $txt->textstart; $txt->font($fnt, 20); $txt->translateA00,800); $txt»text(«Hello World! left-aligned»); $txt->translateE00,750); $txt->text_right(«Hello World! right-aligned»); $txt->translateC00,700); $txt->text_center(«Hello World! center-aligned»); $txt->textend; $pdf->save; $pdf->end(); Поиск Perl-пакетов с помощью CPAN Сеть CPAN (http://www.cpan.org), Comprehensive Perl Archive Network (Всеобщая архивная Perl-сеть) — это сеть, в которой можно найти все, относящееся к языку Perl. Посетите сайт http://search.cpan.org, чтобы найти еще несколько PDF-пакетов, подробную информацию о них, документацию и файлы для загрузки. Например, пакет PDF::Extract
(http://search.cpan.org/-nsharrock/) создает новый PDF-документ из стра- страниц большего входного PDF-документа. Использование РНР для создания документов в формате PDF (Генерируйте PDF-документ внутри РНР-сценария.) Создать PDF-документ можно с помощью языка РНР. Стандартная PHP-документация содержит раздел PDF Functions (PDF-функции), описывающий популярный модуль PDFlib (http://www.pcfflib.com). Од- Однако он не является бесплатным программным обеспечением. Как правило, необходимо купить лицензию, а затем перекомпилировать PHP-файл, чтобы использовать его функции в своих интересах. Рассмотрим некоторые бесплатные альтернативы. Это РНР-файлы, поэтому просто включите один из них в свой сценарий. Библиотека R&OS PDF-PHP С помощью библиотеки R&OS PDF-PHP (http://www.ros.co.nz/pdf/) производится добавление текста и рисунков к новым PDF-страницам. Форматирование включает использование заголовков и нижних ко- колонтитулов, многоколоночное размещение и таблицы. PDF-функции включают метки страниц, ссылки и шифрование. Возможности про- программирования включают повторные вызовы и транзакции. <?php // hello world с R&OS из readme.pdf include ('class.ezpdf.php'); $pdf =& new Cezpdf(); $pdf->selectFont(Vfonts/Helvetica.afm'); $pdf->ezText('Hello World!', 50); $pdf->ezStream(); ?> Библиотека FPDF Библиотека FPDF (http://www.fpdf.org) дает возможность добавлять текст, точечные рисунки, строки и прямоугольники к новым PDF- страницам. Форматирование включает использование заголовков и нижних колонтитулов, многоколоночное размещение и таблицы. PDF-функции включают метаданные и ссылки. Домашняя страница обеспечивает активный пользовательский форум и пользовательские сценарии. Следующий сценарий создает PDF-документ, показанный на рисунке 6-17.
Рис. 6-17. PDF-документ, динамически генерируемый с помощью библиотеки FPDF <?php // hello world with FPDF, adapted from the tutorial for IndigoPerl users defineCTPDF.FONTPATHMCrWindigoperlWapacheWhtdocsWpdLhacksWfpdfW font\V); requireCCiWindigoperlWapacheWhtdocsWpd^hacksWfpdfWfpdf.php'); $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->CellD0/10/Hello world!'); $pdf->Output(); ?> Библиотека pdf4php Библиотека pdf4php (http://www.gnuvox.com/pdf4php/) обеспечивает основные операции для создания PDF-документов. Добавляет текст, JPEG-рисунки, линии и прямоугольники к новым PDF-страницам. PDF-функции включают сжатие. Размер файла PHP-библиотеки явля- является небольшим, поэтому его анализ идет быстрее. <?php // hello world with pdf4php/ adapted from the home page include('pdf4php.php'); $pdf=new PDFClassQ;
$pdf->startPage(8.5 * 72,11 * 72); $pdf->SetFontD8, 'Helvetica'); $pdf->SetStrokeColor(l,0,0); $pdf->DrawTextAtD.25*72,45, «Hello World!», ALIGN_CENTER); $pdf->endPage(); $pdf->end(); ?> Библиотека phppddib Библиотека phppdflib (http://www.potentialtech.com/ppl.php) обеспечи- обеспечивает основные операции для создания PDF-документов, добавляет текст, точечные рисунки, линии, прямоугольники и окружности к но- новым PDF-страницам. Специальные функции включают шаблоны. <?php // hello world with phppdflib, adapted from example.php require ('phpp dflib. class. php'); $pdf=new pdffile; $pdf->set_default(/margin/, 0); $firstpage=$pdf->new_page(«letter»); $pdf->draw_textA0,100, «Hello World!», $firstpage); $temp=$pdf->generate(); header(«Content-type: application/pdf»); header(«Content-length:' .strlen($temp)); echo $temp; ?> Использование Java для создания документов в формате PDF (Генерируйте PDF-документ с помощью Java-программы.) При программировании на языке Java бесплатная библиотека iText удовлетворяет большинству потребностей для создания динамических PDF-документов. Вы можете создать PDF-документ, а также читать существующие PDF-документы и включать их страницы в свой новый документ. Посетите сайт http://www.lowagie.com/iText/ для получения документации и файлов для загрузки. С сайта http://itextpdf.source- forge.net можно загрузить альтернативный комплект Еще одна бесплатная PDF-библиотека, написанная на языке Java — PJX от Etymon (http://etymon.com/epub.html). Она поддерживает чтение, объединение, управление и запись документов в формате PDF. При создании нового документа библиотека iText может добавлять текст и рисунки. Форматирование включает использование заголовков и
нижних колонтитулов, списков и таблиц. PDF-функции включают метки страниц, ссылки, шифрование, метаданные, закладки и аннотации. Воз- Возможности программирования включают повторные вызовы и шаблоны. Библиотека iText позволяет управлять существующими PDF-стра- PDF-страницами, например, объединить страницы для создания нового доку- документа [Совет № 89] или использовать PDF-страницу как фон для нового документа [Совет № 90]. Вот программа Hello World!, использующая библиотеку iText: // Hello World на Java, использующая iText адаптирована // из обучающей программы iText import java.io.FileOutputStream; import java.io.IOException; // импорт iText import com.lowagie.txt.*; import com.lowagie.text.pdf.PdfWriter; public class HelloWorld { public static void main(String[] args) { Document pdf= new Document(); PdfWriter.getInstance(pdff new FileOutputStream(«HelloWorld.pdf»)); pdf.open(); pdf.add(new Paragraph(«Hello World!»)); pdf.close(); } } Компоновка страниц и управление документом в формате PDF (Скомпонуйте сетевой документ во время сеанса.) Представьте, что вы владелец туристического сайта. Пользователь по- посещает его, чтобы увидеть предложения туров. Он вводит свои предпочте- предпочтения и вкусы в сетевую форму, и сайт возвращает несколько предложений. Используйте этот сценарий для следующего уровня. Создайте заказное PDF-сообщение, основанное на этих предложениях, собрав все фрагмен- фрагменты в один документ. Пользователь может загрузить и распечатать это со- сообщение, чтобы позднее изучить его в подходящих условиях. Компоновка нескольких PDF-документов в один общий должна быть простой. Для программирования на Java используйте библиотеку iText или программу командной строки pdftk [Совет № 79]. Компоновка страниц с помощью Java и iText Если ваш сайт поддерживает Java, то используйте для компоновки PDF-документов библиотеку iText (http://www.lowagie.com/iText/). Сле-
дующий код демонстрирует использование iText для объединения PDF-страниц. Скомпилируйте и выполните эту Java-программу из ко- командной строки или используйте ее код в своем Java-приложении: /* concat_pdf, версия 1.0, адаптирована из инструментов iText объединяет входные PDF-файлы и записывает результаты в новый PDF-документ http://www.pdfhacks.com/concat/ Этот код - бесплатное программное обеспечение. Он может быть скопирован или изменен, если в него включено следующее сообщение об авторском праве: Этот модуль от Марка Томсона. Copyright (с) 2004 Mark Thompson. Надеемся, что код будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. 7 import java.io.*; import com.lowagie.text.*; import com.lowagie.text.pdf.*; public class concat_pdf extends java.lang.Object { public static void main( String args[]) { if( 2<= args.length ) { try{ int input_pdf_ii= 0; String outFile= args[ args.length-1 ]; Document document= null; PdfCopy writer= null; while( input_pdf_ii < args.length-1) { // создание программы для чтения некоторого документа PdfReader reader= new PdfReader( args[input_pdf_ii] ); reader.consolidateNamedDestinations(); // определение общего количества страниц int num_pages= reader.getNumberOfPages(); System.out.println( «There are «+ num_pages+ « pages in «+ args[input_pdf_ii] ); if (input_pdf_ii== 0 ) { // шаг 1: создание документа-объекта document= new Document( reader.getPageSizeWithRotation(l)); // шаг 2: создание программы записи, просматривающей документ writer= new PdfCopy( document, new FileOutputStream(outFile)); // шаг З: открытие документа document.open();
// шаг 4: добавление контента PdflmportedPage page; for( int ii= 0; ii< num_pages;) { ++ii; page= writer.getImportedPage( reader, ii ); writer.addPage( page ); System.out.println( «Processed page»+ ii); } PRAcroForm form= reader. getAcroF6rm(); if( form!= null) { writer.copyAcroForm( reader ); } ++input_pdf_ii; } // шаг 5: закрытие документа document.close(); > catch( Exception ее ) { ee.printStackTrace(); } else { // ошибка ввода System.err.println(«arguments: filel [file2 ...] destfile»); } } Чтобы создать Java-программу командной строки, скопируйте пре- предыдущий код в файл под названием concatjpdf.java, а затем скомпили- скомпилируйте файл concatjpdf.java, используя javac и настраивая classpath для имени и местонахождения своей библиотеки iText: javac -classpath ./itext-paulo.jar concat_pdf.Java Вызовите программу concat_pdf, чтобы объединить PDF-докумен- PDF-документы, например, так: Java -classpath ./itext-paulo.jar:. \ concat_pdf inl.pdf in2.pdf in3.pdf outl23.pdf Компоновка страниц на языке РНР с помощью pdftk Следующий пример использования программы pdftk с языком РНР демонстрирует сборку PDF-документа на стороне сервера. Передайте программе pdftk дефис вместо имени выходного файла, и она будет ра- работать на stdout. <?php // имена файлов входных PDF-документов
$brochure_dir=yvar/www/brochures/'; $report_pieces= array( 'our_cover.pdf, Ъ oston.pdf, 'yorktown.pdf, 'our_info.pdf ); // команда и ее параметры $cmd= '/usiyiocal/bin/pdftk '; foreach( $report_pieces as $ii => $piece ) { $full_fn= $brochure_dir.$piece; if(is_readable( $full_fn )) { $cmd.= ".$full_fn; } $cmd.=' cat output -'; // дефис означает вывод в stdout // выполнение команды header( 'Content-type: application/pdf); passthru( $cmd ); // вывод передается клиенту ?> Дополнительная информация Используйте некоторые из этих бесплатных средств разработки для компоновки PDF-документа: • Multivalent Document Tools (http://multivalent.sourceforge.net/Tools/ index.html) — Java-средства для управления PDF-документами. • PDFBox (http://www.pdfbox.org) — Java-библиотека, которая мо- может объединять PDF-документы. • PDF::Extract (http://search.cpan.org/-nsharrock/) — Perl-модуль для извлечения страниц из PDF-документа. • PDF::Reuse (http://search.cpan.org/~larslundf) — Perl-модуль, предназначенный для массового создания PDF-документов из шаблонов. Наложение PDF-страниц (Объедините PDF-страницы с фоновым бланком, формой или водяным знаком.) Иногда имеет смысл разделить создание документа на слои, напри- например, создать фоновую форму счета с эмблемой и правилами заполне- заполнения. Создавать данные счета можно динамически, а затем размещать их на поверхности этой формы для получения итогового бланка счета. Выполните это заключительное слияние, используя Java и библио- библиотеку iText, или с помощью инструмента командной строки pdftk [Совет № 79], результат работы которого показан на рисунке 6-18.
Рис. 6-18. Создание документа по слоям Наложение страниц с помощью Java и iText Библиотека iText (http://www.lowagie.com/iText/) — это мощная биб- библиотека для создания и управления PDF-документами. Следующая Java-программа использует iText для наложения PDF-страницы с во- водяными знаками на каждую страницу документа. Страница с водяны- водяными знаками может быть PDF-страницей типа фирменного бланка ком- компании или бланка счета. Водяной знак находится позади контента каждой страницы. Скомпилируйте и выполните следующую програм- программу или используйте ее код в своем Java-приложении. /* watermark_pdf, версия 1.0 http://www.pdfhacks.com/watermark/ помещает PDF-страницу с водяными знаками под всеми страницами входного документа после компилирования вызовите ее из командной строки: Java -classpath ./itext-paulo.jar:. \ watermarkjpdf doc.pdf watermark.pdf output.pdf используется только первая страница watermark.pdf v import java.io.*;
import com.lowagie.text.*; import com.lowagie.text.pdf.*; public class watermark_pdf { public static void main( String [] args ) { if( args.length== 3 ) { try{ // маркируемый водяным знаком документ PdfReader document= new PdfReader( args[O] ); int num_pages= document.getNumberOfPages(); // водяной знак (или фирменный бланк) PdfReader mark= new PdfReader( args[l]); Rectangle mark_page_size= mark.getPageSize( 1); // выходной документ PdfStamper writer= new PdfStamper( document, new FileOutputStream( args[2])); // создание PdfTemplate из первой маркированной страницы // (PdflmportedPage получен из PdfTemplate) PdflmportedPage mark_page= writer.getImportedPage( mark, 1); for( int ii= 0; ii< num_pages;) { // выполнение итераций по страницам документа, // добавляя mark_page // как слой под контентом страницы; масштабирование // и перемещение страницы mark_page так, чтобы // она помещалась в пределах страницы документа; // если страница документа обрезана, это масштабирование // может быть достаточно небольшим ++И; Rectangle doc_page_size= document.getPageSize( ii); float h_scale= doc_page_size.width()/mark_page_size.width(); float v_scale= doc_page_size.height()/mark_page_size.rieight(); float mark_scale= (h_scale< v_scale) ? h_scale : v_scale; float h_trans= (float) ((doc_page_size.width()- mark_page_size.width()* mark_scale)/2.0); float v_trans= (float)((doc_page_size.height()- mark_page_size.height() * mark_scale)/2.0); PdfContentByte contentByte= writer.getUnderContent( ii); contentByte.addTemplate( mark_page, mark_scale, 0, 0, mark_scale, h_trans, v_trans); > writer, close ();
catch( Exception ее ) { ee.printStackTrace(); } } else { // ошибка ввода System.err.println(«arguments: in_document in_watermark out_pdf_fn»); } } Чтобы создать Java-программу командной строки, скопируйте пре- предыдущий код в файл под названием watermark_pdf.java. Затем скомпи- скомпилируйте watermark_pdf.java, используя компилятор javac и настраивая classpath для имени и местонахождения библиотеки iText: javac -classpath ./itext-paulo.jar watermark_pdf.java Вызовите программу watermark_pdf, чтобы наложить первую стра- страницу form.pdfHa каждую страницу invoice.pdfдля создания файла water- marked.pdf, например: Java -classpath ./itext-paulo.jar:. \ watermark_pdf invoice.pdf f orm.pdf watermarked.pdf Наложение страниц с помощью pdftk Программа pdftk объединяет возможности iText в автономную про- программу. Наложите отдельную PDF-страницу как фон ко всем страни- страницам полного документа следующим образом: pdftk mydoc.pdf output mydoc.marked.pdf background watermark.pdf Программа pdftk будет использовать первую страницу файла water- watermark.pdf, если он содержит больше чем одну страницу. Объедините эту фоновую опцию с дополнительными входными операциями (типа компоновки PDF-документов [Совет № 51]) и опциями вывода, напри- например, шифрованием [Совет № 52]. Генерирование документов в формате PDF из XML и CSS (Создавайте PDF-документы для XML-документов, CSS-стилизованные с помощью YesLogic Prince.) Компания YesLogic (http://www.yeslogic.com) из Мельбурна, Австра- Австралия, предлагает небольшой и чрезвычайно простой инструмент для то- того, чтобы конвертировать XML-документы, CSS-стилизованные, в формат PDF или PostScript. Она называется Prince и в настоящее вре- время существует в версии 3.0. Эта программа выполняется в Windows или
Red Hat Linux (версии 7.3 и 8.0). Prince поставляется с набором приме- примеров, заданных по умолчанию таблиц стилей и DTD. Загрузить бесплатную демонстрационную версию можно с веб- вебстраницы http://yeslogic.com/prince/demo/. Эта демонстрационная версия полностью работоспособна, но выводит слово Demo в контур- контурном шрифте поперек каждой создаваемой страницы. Если она вам понравится, купить копию можно на веб-странице http://yeslogic.com/ prince/purchasing/. Этот простой XML-документ отображает время: <?xml version=»1.0» encoding=»UTF-8»?> <!— a time instant —> <time timezone=»PST»> <hour>ll</hour> <minute>5 9</minute> <second>5 9</second> <meridiem>p.m.</meridiem> <atomic signal=»true» symbol=»&#x25Dl;»/> </time> Таблица CSS-стилей обеспечивает детальную информацию для фор- форматирования: time {font-size:40pt; text-align: center } timeibefore {content: «The time is now: «} hour {font-family: sans-serif; color: gray} hounafter {content: «:»; color: black} minute {font-family: sans-serif; color: gray} minute:after {content: «:»; color: black} second {font-family: sans-serif; color: gray} second:after {content: « «; color: black} meridiem {font-variant: small-caps} После загрузки и установки программы Prince откройте приложение и проделайте следующие шаги: 1. Выберите командой Documents\Add (Документы\Добавить) до- документ time.xml из каталога рабочих примеров. 2. Командой Stylesheets\Add (Таблицы стилей\Добавить) выберите из этого каталога файл time.ess. 3. Выберите пункт меню Output (Вывод) формат PDF. 4. Нажмите Go (Вперед), и Prince создаст PDF-документ, основан- основанный на файле time.xml, объединенном с файлом time.ess. Резуль- Результат показан на рисунке 6-19. 5. Выберите файл time.pdf в левой нижней области окна и щелкните на нем правой кнопкой мыши. Если программа Adobe Reader ус- установлена на вашем компьютере, то файл time.pdf откроется. Ее-
ли она не установлена, загрузите бесплатную копию с веб-стра- веб-страницы http://www. adobe, com/'products/facrobat/readstep2.html. Рис. 6-19. YesLogic Prince после преобразования файла time.xml, стилизованного с помощью time.ess в time.pdf На рисунок 6-20 показан файл time.pdf в Adobe Reader версии 6.0 Рис. 6-20. Файл time.pdfy открытый в Adobe Reader версии 6.0 Майкл Фитцджеральд
Создание документов в формате PDF с помощью XSL-FO и FOP (Используйте Apache FOP-механизм совместно со словарем XSL-FO для вывода в формате PDF.) Программа Formatting Objects Processor (Процессор форматирования объектов) для Apache (доступна на сайте http://xml.apache.org/fop/), — это Java-приложение с открытым кодом, которое читает дерево XSL-FO (http://www.w3.org/TR/xsl/) и выводит результат в формате PDF, хотя ему до- доступны и другие форматы: Printer Control Language (PCL), PostScript (PS), Scalable Vector Graphics (SVG), представление дерева областей на XML, Java Abstract Windows Toolkit (AWT), Maker Interchange Format (MIF) для FrameMaker и текст. Словарь XSL-FO определяет объекты форматирования, которые описывают блоки, параграфы, страницы, таблицы и т. д. Эти объекты обладают большим набором свойств форматирования, управляющим шрифтами, выравниванием текста, интервалами и т. п., многие из ко- которых соответствуют свойствам CSS (http://www.w3.org/Style/CSS/). XSL-FO-форматирование объектов и их свойства позволяют создавать профессиональные документы. XSL-FO — это огромный детализированный XML-словарь для фор- форматирования документов. XSL-FO — общее имя для XSL-специфика- ции, созданной консорциумом W3C. Спецификация имеет длину почти в 400 страниц. Когда-то XSL-FO и XSLT были частями одной спецификации, разбитой на две в апреле 1999 г. Язык XSLT был ре- рекомендован к использованию в ноябре 1999 г., a XSL-FO — в октяб- октябре 2001 г. Для начала рассмотрим несколько простых примеров. Первый пример, time.fo, является XSL-FO-документом, который форматирует элементы в файле timcxml. <fo:rootxmlns:fo=»http://www.w3.org/1999/XSL/Format>» <fo:layout-master-set> <fo: simple-page-master master-reference=»Time»page-height=»llin» page-width=»8.5in» margin-top=»lin» margin-bottom=»lin» margin-left=»lin» margin-right=»lin»> <fo:region-bodymargin-top=».5in»/> <fo:region-before extent=»1.5in»/> <fo:region-after extent=»1.5in»/> </f о: simple-pag e-master> </fo:layout-master-set> <fo:page-sequence master-name=»Time»> <fo:flowflow-name=»xsl-region-body»> <!— Heading —> <fo:block font-size=»24px» font-family=»sans-serif» line-height=»26px»
space-after.optimum=»20px» text-align=»center» font-weight=»bold» color=»#0050B2>»Time</fo:block> <!— Blocks for hour/minute/second/atomic status —> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start»>Hour: 11 </fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start»>Minute: 59</fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start»>Second: 59</fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start>»Meridiem: p. m.</fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px»text-align=»start»>Atomic? true</fo:block> </fo:flow> </fo:page-sequence> </fo:root> Основы XSL-FO Корневым элементом XSL-FO-документа является root. Именем массива имен является http://www.w3.org/1999/XSL/Format, а обычным префиксом - fo. Следующим элементом root является layout-master-set, определяющий основную компоновку страницы. Элемент simple-page- master содержит несколько свойств форматирования, таких как page- width и page-height, и некоторые настройки полей (можно использовать элемент page-sequence-master для более сложной компоновки страницы вместо элемента simple-page-master). Элементы, связанные с областью, такие как region-body, используются для компоновки основных облас- областей простого мастера страницы. Атрибут master-reference связывается с атрибутом master-name в элементе page-sequence. Элемент page-sequence содержит элемент flow, представлющий поток текста, который появится на странице. Следующим является ряд эле- элементов block, содержащих свойства помещенного в них текста (блоки используются для форматирования заголовков, абзацев и названий ри- рисунков). Свойства определяют семейства шрифтов, форматирование размера шрифта, выравнивание текста и т. д. Создание PDF-документа Программа FOP (Процессор форматирования объектов) довольно удобна. Чтобы сгенерировать PDF-документ из XSL-FO-файла, загру- загрузите FOP с веб-страницы http://xml.apache.org/fop/download.html и уста- новите его. Существующий сейчас FOP имеет версию 20.5. В главном каталоге находится файл fop.bat для Windows или файл fop.sh для Unix. Ниже представлено несколько сценариев использования FOP.
Для создания PDF-документа из файла time.fo введите команду: fop time.fo time-fo.pdf Файл time.fo — это входной файл, a time-fo.pdf— выходной файл. FOP сообщает о своей работе примерно так: [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser [INFO] FOP 0.20.5 [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser [INFO] building formatting object tree [INFO] setting up fonts [INFO] [1] [INFO] Parsing of document complete, stopping renderer На рисунке 6-21 показаны результаты форматирования файла time.fo с помощью FOP в Adobe Acrobat. Рис. 6-21. PDF-файл time.fo в Adobe Acrobat 6.0.1 Можно включить XSL-FO-разметку в таблицу стилей XSLT, а затем преобразовывать и форматировать документ только одной FOP-ko- мандой. Ниже представлена таблица стилей (time-fo.xsl), объединенная cXSL-FO: <xsl: stylesheet version=»l. 0» xmlns:xsl=»http ://www. w3. org Д 99 9/XSL/ Transform» xmlns: f о=»http ://www. w3. org Д 9 9 9/XSL/Format»>
<xsl:output method=»xml» encoding=»utf-8» indent=»yes»/> <xsl:template match=»/»> <fo:root> <fо :lay out-master-set> <fo:simple-page-master master-reference=»Time» page-height=»llin» page-width=»8.5in» margin-top=»lin» margin-bottom=»lin» margin-left=»lin»margin-right=»lin>» <fo:region-body margin-top=».5in»/> <fo:region-before extent=»1.5in»/> <fо: region-after extent=»1.5in»/> </f о: simple-p ag e-master> </fo:layout-master-set> <fo:page-sequencemaster-name=»Time»> <fo:flowflow-name=»xsl-region-body»> <xsl:apply-templates select=»time»/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match=»time»> <!— Heading —> <fo:block font-size=»24px» font-family=»sans-serif» line-height=»26px» space-after.optimum=»20px» text-align=»center» font-weight=»bold» color=»#0050B2»> Time </fo:block> <!— Blocks for hour/minute/second/atomic status —> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start»> Hour: <xsl:value-of select=»hour»/> </fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after. optimum=»10px» text-align=»start»> Minute: <xsl:value-of select=»minute»/> </fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after. optimum=»10px» text-align=»start»> Second: <xsl:value-of select=»second»/> </fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after. optimum=»10px»text-align=»start»> Meridiem: <xsl:value-of select=»meridiem»/> </fo:block> <fo:block font-size=»12px» font-family=»sans-serif» line-height=»16px» space-after.optimum=»10px» text-align=»start»> Atomic? <xsl:value-of select=»atomic/@signal»/> </fo:block> </xsl:template> </xsl:stylesheet>
Разметка XSL-FO, содержащаяся в файле time.fo, преобразовывает файл time.xml. С ее помощью можно генерировать PDF-документы аналогично генерации с использованием time.fo: Fop -xsl time-fo.xsl -xml time.xml -pdf time-fo.pdf Для получения подробной информации об этих технологиях см. книгу Майкла Фитцджеральда «Learning XSLT» (O'Reilly) или книгу Дейва Паусона «XSL-FO» (O'Reilly). Майкл Фитцджеральд
ГЛАВА 7 Создание сценариев и программирование Adobe Acrobat Советы №93-100 Несмотря на то, что большинство пользователей считает програм- программу Acrobat графическим интерфейсом PDF-документов, можно ав- автоматизировать и расширить ее применение. Некоторые возможно- возможности автоматизации встроены в Acrobat, особенно в Acrobat 6 Professional, но можно создать свои собственные автоматизирован- автоматизированные последовательности обработки, используя разнообразие про- программных средств. Изменение или конвертирование пакетов документов (Автоматизируйте повторяющиеся задачи.) Если у вас есть папка с документами в формате PDF, которые нужно изменить или преобразовать, используйте встроенную в Acrobat воз- возможность пакетной обработки. После создания пакетной последова- последовательности используйте ее для автоматической обработки большого ко- количества PDF-документов. Ее можно применить и к отдельному PDF-документу, т. е. использовать как макрос. Пакетная обработка в Acrobat предназначена не только для управле- управления PDF-документами, но и для конвертирования документов Microsoft Office, файлов PostScript или точечных рисунков в PDF-доку- PDF-документы, а также для конвертирования PDF-документов в формат HTML, PostScript, RTF, текст или точечные рисунки. Многие из этих опций недоступны в Acrobat 5. В Acrobat 6, кроме того, можно приме- применить оптическое распознавание символов к точечным рисункам или повторно обработать PDF-документы, чтобы подготовить их к сетево- сетевому распространению [Совет № 60]. С помощью пакетной обработки автоматизируются многие из основных задач, выполняемых в Acrobat. Предлагаем несколько примеров.
Оптимизация папки с документами в формате PDF (Acrobat 6 Pro) Перед публикацией PDF-документа в сети для широкого распро- распространения необходимо повторной обработкой сократить его размер [Совет № 60]. С помощью Acrobat 6 можно оптимизировать PDF-доку- PDF-документ, выбрав командой меню Advanced\PDF Optimizer (Дополни- тельно\РОР-оптимизатор) опцию Optimizer (Оптимизатор). Создай- Создайте в Acrobat 6 пакетные последовательности, которые применяют Optimizer к папке PDF-документов, а также добавьте метаданные или другие штрихи [Совет № 62]. В Acrobat 6 Professional создайте пакетную последовательность вы- выбрав команду Advanced\Batch Processing (Дополнительно\Пакетная обработка), а затем — New Sequence (Новая последовательность). На- Назовите новую последовательность Refry (Дополнительная обработка) и нажмите ОК. Откроется диалоговое окно Batch Edit Sequence (После- (Последовательность редактирования пакетов). Если хотите добавить метаданные (заголовок, тему, список авторов или ключевые слова) к PDF-документам, нажмите Select Commands (Выбрать команды) и откройте диалоговое окно Edit Sequence (Редак- (Редактировать последовательность). Выберите команду Description (Описа- (Описание) из списка слева и нажмите Add (Добавить). В правом столбце дважды щелкните на этой команде, откройте диалоговое окно и уста- установите в нем значения метаданных, показанные на рисунке 7-1. Нажми- Нажмите ОК, чтобы закрыть диалоговое окно Edit Sequence и возвратиться к диалоговому окну Batch Edit Sequence. Подстройте пакетную последовательность, используя команду Execute JavaScript. Если язык JavaScript являет- является недостаточно мощным, то можно разработать свои собственные команды пакетной обработки, используя дополнение к программе Acrobat. См. примеры допол- дополнений BatchCommand и BatchMetadata, которые по- поставляются с Acrobat SDK [Совет № 98]. Установите опции Run Command On (Выполнить команду в) как Ask When Sequence is Run (Спросить, когда выполняется последователь- последовательность), Select Output Location (Выбрать местоположение вывода) как Same Folder as Original (Та же папка, что и оригинальная) и нажмите Output Options (Опции вывода). В диалоговом окне Output Options (см. рисунок 7-2) выберите Add to Original Base Name (Добавить к оригинальному основному имени), а затем устано- установите опцию Insert After (Вставить после) как .opt. В диалогом окне Output Format (Выходной формат) определите опцию Save File As (Сохранить файл как) как Adobe PDF Files (Файлы Adobe PDF) и установите флажки
Fast Web View и PDF Optimizer. Нажмите Settings (Настройки), чтобы скон- сконфигурировать Optimizer (Оптимизатор), как показано на рисунке 7-3. Рис. 7-1. Добавление PDF-метаданных с помощью команды Description Сконфигурируйте Optimizer для соответствия своим требованиям. Определите его совместимость с Acrobat 5.0 или Acrobat 4.0 для макси- максимальной переносимости PDF-документов [Совет № 41]. Щелкните на кнопке ОК после окончания конфигурирования. Нажмите ОК, чтобы закрыть диалоговое окно Output Options, а затем — диалоговое окно Batch Edit Sequence (Последовательность редактирова- редактирования пакетов). Пакетная последовательность Refry должна быть теперь ви- видима в диалоговом окне Batch Sequences, как показано на рисунке 7-4. Чтобы сделать пакетную последовательность примени- применимой к подпапкам, выберите Run Commands On to Selected Folder (Выполнить команды в выбранной пап- папке), а затем — Browse (Просмотреть), чтобы выбрать папку, которую хотите обработать. Каждый раз при вы- выполнении последовательности будет обрабатываться эта папка (и ее подпапки).
Рис. 7-2. Диалоговое окно Output Options, из которого можно получить доступ к настройкам Optimizer Проверьте работу пакетной последовательности на временной пап- папке PDF-документов. В диалоговом окне Batch Sequences (Пакетные последовательности) выберите Refry (Дополнительная обработка) и щелкните Run Sequence (Выполнить последовательность). Нажмите ОК в диалоговом окне Confirmation (Подтверждение), выберите в рас- раскрывающемся списке один или несколько PDF-документов и щелкни- щелкните Select (Выбрать). Acrobat создаст новые PDF-документы, основыва- основываясь на параметрах настройки программы Optimizer (Оптимизатор). Новые документы будут иметь те же самые имена файлов, что и пер- первоначальные, и кроме того, расширение .opt.pdf вместо .pd/в конце имени. По окончании Acrobat работы убедитесь, что результаты вас удовлетворяют. Отключите диалоговое окно подтверждения пакетной обработки, используя параметры настройки Acrobat: Edit\Preferences\General\Batch Processing (Правка\Па- раметры настройки\Общие\Пакетная обработка).
Рис. 7-3. Использование PDF Optimizer для подготовки документов в формате PDF к сетевому распространению Рис. 7-4. Пакетная последовательность в диалоговом окне Batch Sequences
Конвертирование документов Microsoft Office в формат PDF Если у вас установлены Acrobat б и Microsoft Word, используйте в Acrobat предварительно сконфигурированную пакетную последова- последовательность Open All (Открыть все), чтобы автоматически конвертиро- конвертировать документы Word в PDF-документы. Используйте ее для любого типа файла, который Acrobat умеет обрабатывать, включая файлы PostScript и точечные рисунки. В программе Acrobat 5 имеется пакет- пакетная последовательность Open All, но она не обрабатывает так много ти- типов файлов, как Acrobat 6. Чтобы объединить несколько документов в формате Word в отдельный PDF-документ с помощью Acrobat 6, используйте последовательность действий File\Create PDF\From Multiple Files (Файл\Создать PDF-доку- мент\Из нескольких файлов). Сначала необходимо сконфигурировать Acrobat 6, чтобы создать нужный тип PDF-документа. Сделайте это, используя параметры на- настройки Acrobat командами меню Edit\Preferences\General\Convert to PDF (Правка\Параметры настройки\Общие\Конвертировать в фор- формат PDF). Выберите Microsoft Office, а затем Settings (Настройки). От- Откроется диалоговое окно, показанное на рисунке 7-5. Настройте Adobe PDF Settings (Настройки Adobe PDF) в соответствии с желательным профилем Distiller [Совет № 38]. Профиль Standard (Стандартный) в большинстве случаев работает хорошо . Установите другие опции (за- (закладки, ссылки и защиту) в соответствии со своими потребностями и нажмите кнопку ОК. Отключите опцию Enable Accessibility & Reflow, т. к. ее использование замедляет процесс и создает очень объемные PDF-документы [Совет № 34]. В Acrobat 6 командами Advanced\Batch Processing\Open All (Допол- нительно\Пакетная обработка\Открыть все) запустите пакетную по- последовательность Open All, нажав Run Sequence (Выполнить последо- последовательность). В Acrobat 5 запустите последовательность Open All выбирая команды File\Batch Processing\Open All (Файл\Пакетная об- работка\Открыть все). Нажмите ОК, чтобы в случае необходимости закрыть диалоговое окно подтверждения. Откроется селектор файлов. Установите опцию Files of Type (Файлы по типу) как All Files (Все фай- файлы), выберите один или более входных файлов, а затем щелкните Select (Выбрать). Acrobat создаст по одному PDF-документу для каж- каждого входного документа. Программа Acrobat 5 не может обрабатывать таким способом документы Word, но может обрабатывать растровые изображения.
Рис. 7-5. Параметры настройки Acrobat для управления PDF-документами Исследование пакетных последовательностей Предыдущие примеры были достаточно простыми. Вы можете со- создавать последовательности для выполнения различных задач. Ком- Компакт-диск с программой Acrobat 5 содержит пакет примеров последо- последовательностей и документации в папке Batch (Пакет). Посетите также веб-страницу http://www.planetpdf.com/mainpage.asp?webpageid=1511 для изучения других примеров и комментариев к ним. Примеры пакетных последовательностей на компакт- диске Acrobat 5 предназначены только для чтения. По- После копирования их в какую-либо папку измените этот атрибут файла, чтобы посмотреть JavaScripts-код при- примеров в Acrobat. Пакетные последовательности сохраняются как текстовые файлы, поэтому с ними легко работать. Последовательности системного уров- уровня расположены в каталоге: C:\Program Files\Adobe\Acrobat 6.0\Acrobat\ Sequences\ENU\. Для Acrobat 6 последовательности пользовательского
уровня расположены в каталоге C:\Documents and Settings\Sid Steward\Application Data\Adobe\Acrobat\6.0\Sequences\. Для Acrobat 5 по- последовательности пользовательского уровня расположены в каталоге C:\Documents and Settings\Sid Steward\My Documents\Adobe\Acrobat\ Sequences\. Создание сценариев для Acrobat в Windows с помощью Visual Basic (Управление программой Acrobat с помощью Visual Basic [VB] или Visual Basic for Applications [VBA] для Microsoft Word.) OLE-интерфейс для Adobe Acrobat предоставляет возможность обращаться или управлять PDF-документами из автономного Visual Basic-сценария или из другого приложения, например Word. Используйте OLE-интерфейс программы Acrobat для работы с PDF-документами в ее окне. Acrobat SDK [Совет № 98] поставляется с множеством примеров на Visual Basic в каталоге InterApp- CommunicationSupport, а также содержит документацию к OLE-ин- OLE-интерфейсу. Она находится в файлах IACOverview.pdfи IACReference.pdf. Эти функции OLE не работают с бесплатной программой Reader, не- необходимо иметь программу Acrobat. Acrobat Distiller также имеет OLE-интерфейс. Он опи- описан в файле DistillerAPIReference.pdf, который поставля- поставляется с полным Acrobat SDK (Software Development Kit — набор средств для разработки ПО). Следующий пример показывает работу с PDF-документами, ис- используя OLE-интерфейс Acrobat. Это макрокоманда Word, которая сканирует открытый PDF-документ для обнаружения аннотаций чита- читателей. Она создает новый документ Word и краткое изложение этих комментариев. Код Чтобы добавить эту макрокоманду к Word, выберите команду меню Tools\Macro\Macros (Сервис\Макрос\Макросы), введите имя макро- макрокоманды SummarizeComments и нажмите Create (Создать). Word откро- откроет текстовый редактор, в котором нужно ввести код из примера 7—1. Сохраните его, а затем проверьте. Этот код можно загрузить с сайта http://www.pd/fiacks. com/summarize.
Пример 7-1. Код VBA для суммирования комментариев. Sub SumrtiarizeComments() Dim app As Object Set app = CreateObject(«AcroExch.App») If @ < app.GetNumAVDocs) Then ' PDF-документ открыт в программе Acrobat ' создание нового документа Word для хранения отчета Dim NewDoc As Document Dim NewDocRange As Range Set NewDoc = Documents.Add(DocumentType:=wdNewBlankDocument) Set NewDocRange = NewDocRange Dim found_notes_b As Boolean found_notes_b = False ' получение активного документа и отработка его PDDoc Dim avdoc, pddoc As Object Set avdoc = app.GetActiveDoc Set pddoc = avdoc.GetPDDoc ' выполнение итераций по страницам Dim num_pages As Long num_pages = pddoc.GetNumPages For ii = 0 To num_pages - 1 Dim pdpage As Object Set pdpage = pddoc.AcquirePage(ii) If (Not pdpage Is Nothing) Then ' выполнение итераций по аннотациям Dim page_head_b As Boolean page_head_b = False Dim num_annots As Long num_annots = pdpage.GetNumAnnots For jj = 0 To num_annots - 1 Dim annot As Object Set annot = pdpage.GetAnnot(jj) ' появляющиеся аннотации дают двойной контент If (annot.GetContents <> «» And annot. GetSubtype <> «Popup») Then If (page_head_b = False) Then' вывод номера страницы NewDocRange. Collapse wdCollapseEnd NewDocRange.Text = «Page: « & (ii +1) & vbCr NewDocRange.Bold = True NewDocRange.ParagraphFormat.LineUnitBefore = 1 page_head_b = True End If ' вывод заголовка аннотации и его форматирование NewDocRange.Collapse wdCollapseEnd NewDocRange.Text = annot.GetTitle & vbCr NewDocRange. Italic = True NewDocRange.Font.Size = NewDocRange.Font.Size - 1
Пример 7-1. Код VBA для суммирования комментариев. NewDocRange.ParagraphFormat.LineUnitBefore - 0.6 ' вывод текста примечания и его форматирование NewDocRange. Collapse wdCollapseEnd NewDocRange.Text = annot.GetContents & vbCr NewDocRange.Font.Size = NewDocRange.Font.Size - 2 found_notes_b = True End If Next jj End If Nextii If (Not found_notes_b) Then NewDocRange.Collapse wdCollapseEnd NewDocRange.Text = «No Notes Found in PDF» & vbCr NewDocRange.Bold = True End If End If End Sub Выполнение кода Откройте PDF-документ в программе Acrobat (см. рисунок 7-6). В Word выполните макрокоманду, выбрав Tools\Macro\Macros\Summarize- Comments (Сервис\Макрос\Макросы\Суммирование комментариев), а затем нажав Run (Выполнить). Через несколько секунд появится но- новый документ Word, как показано на рисунке 7-7. Он будет содержать все комментарии, которые читатели добавили к каждой странице откры- открытого PDF-документа. Усовершенствование метода Этот сценарий демонстрирует типичный процесс прохождения че- через уровни PDF-объектов, чтобы найти нужную информацию. Вот уп- упрощенный эскиз этих уровней: арр Выполняющаяся в настоящее время Acrobat-программа. Исполь- Используйте арр для изменения параметров настройки Acrobat или интер- интерфейса пользователя. avdoc PDF-документ, который в настоящее время отображается в про- программе Acrobat. Используйте avdoc для изменения вида PDF-доку- PDF-документа в средстве просмотра или при распечатке страниц.
Рис. 7-6. PDF-комментарии, отображаемые в программе Acrobat pddoc Представляет основной PDF-документ. Используйте pddoc для об- обращения или управления PDF-страницами или метаданными. pdpage Представляет основную PDF-страницу. Используйте pdpage для обращения или управления аннотациями страниц, их вращением или обрезкой. Эти OLE-объекты напоминают объекты API Acrobat [Совет № 97]. Одна- Однако API предоставляет намного больше возможностей. Создание сценариев для Acrobat в Windows с помощью Perl (Использование Perl вместо Visual Basic для управления программой Acrobat) В зависимости от вкусов или потребностей можно использовать в программе Acrobat язык сценариев Perl вместо Visual Basic [Совет № 94]. Perl может обращаться к тому же OLE-интерфейсу программы Acrobat, используемому Visual Basic для управления PDF-документами. Язык Perl хорошо документирован, широко поддерживается и имеет значи- значительное количество модулей расширения. Инсталлятор Perl для Windows свободно доступен от ActiveState. В этом разделе показана установка пакета ActivePerl от ActiveState, и приведен пример обращения к OLE-интерфейсу программы Acrobat с помощью Perl.
Рис. 7-7. PDF-комментарии в Word после извлечения с помощью Summarize Comments Документация OLE Acrobat поставляется вместе с Acrobat SDK [Совет № 98]. Она находится в файлах IACOverview.pdf и IACReference.pdf. Acrobat Distiller также имеет OLE-ин- OLE-интерфейс, описанный в файле DistillerAPIReference.pdf. Установка Perl в Windows Инсталлятор ActivePerl для Windows свободно доступен на веб-странице http://www.ActiveState.com/Products/ActivePerl/. Загрузите и установите его. Он сопровождается превосходной документацией, к которой можно обра- обратиться, выбрав команду Start\Programs\ActiveState Active-Perl 5.8\Docu- mentation (Пуск\Программы\ ActiveState ActivePerl 5.8\ Документация). ActivePerl содержит также OLE Browser (см. рисунок 7-8), который дает возможность просмотреть OLE-серверы, доступные на вашей машине, командой Start\Programs\ActiveState ActivePerl 5.8\OLE-Browser (Пуск\ IlporpaMMbi\ActiveState ActivePerl 5.8\OLE-Browser). OLE Browser - это HTML-файл, который для правильной работы должен быть открыт в Internet Explorer.
Рис. 7-8. OLE Browser, который используется для поиска доступных OLE-серверов Код В этом примере Perl-сценарий использует программу Acrobat для чтения аннотаций из открытого PDF-документа. Сценарий формати- форматирует данные, используя формат HTML, а затем выводит их в stdout. Скопируйте сценарий из примера 7—2 в файл, названный Summarize- Comments.pl. Этот код можно также загрузить с сайта http://www.pdf- hacks. com/ summarize/.
Пример 7-2. Perl-код для суммирования комментариев # SummarizeComments.pl ver. 1.0 use strict; useWin32::0LE; my $app = Win32 ::OLE->new(«AcroExch.App»); if( 0< $app->GetNumAVDocs ) { # PDF-документ открыт в Acrobat # открытие HTML-документа print «<html>\n<head>\n<title>PDF Comments Summary</title>\n</head>\n<body>\n»; my $found_notes_b= 0; # получение активного PDF-документа и перемещение к его PDDoc my $avdoc= $app->GetActiveDoc; my $pddoc= $avdoc->GetPDDoc; # выполнение итераций по страницам my $num_pages= $pddoc->GetNumPages; for( my $ii= 0; $ii< $num_pages; ++$ii) { my $pdpage= $pddoc->AcquirePage( $ii ); if( Spdpage) { # выполнение итераций по аннотациям my $page_head_b= 0; my $num_annots= $pdpage->GetNumAnnots; for( my $jj= 0; $jj< $num_annots; ++$jj) { my $annot= $pdpage->GetAnnot( $jj ); # появляющиеся аннотации дают двойной контент if ( $annot->GetContents ne " and $annot->GetSubtype ne 'Popup') { if( !$page__head_b ) { # вывод номера страницы print «<h2>Page: « . ($ii+ 1). <«/h2>\n»; $page_head_b= 1; } # вывод заголовка аннотации и его форматирование print <«p><i>» . $annot->GetTitle . <«/ix/p>\n»; # вывод текста примечания; замена перевода каретки концом абза my $comment= $annot->GetContents; $ comment =~ s/\r/<Vp>\n<p>/g; print «<p>» . Scomment. «</p>\n»; $found_notes_b= 1; } } } if( !$found_notes_b) { print <«h3>No Notes Found in PDF</h3>\n»; }
Пример 7-2. Perl-код для суммирования комментариев # закрытие HTML-документа print «</body>\n</html>\n»; } Выполнение кода Откройте PDF-документ в Acrobat, как показано на рисунке 7-6, а за- затем выполните этот сценарий из командной строки, вводя: С:\> perl SummarizeComments.pl > comments.html На это потребуется всего несколько секунд. Затем откройте в своем браузере файл comments.html, посмотрите отчет о PDF-комментариях, как показано на рисунке 7-9. Рис. 7-9. PDF-комментарии в Mozilla после извлечения с помощью Summarize Comments.pl
Как отмечалось в разделе «Создание сценариев для Acrobat в Windows с помощью Visual Basic» [Совет № 94], этот пример демонстрирует отноше- отношения между несколькими фундаментальными PDF-объектами. Настройка Adobe Acrobat с помощью JavaScript (Создайте пользовательские пункты меню Acrobat и сценарии пакетной обработки.) Программа Adobe Acrobat может сделать очень много. Но всегда есть что-то, что хотелось бы сделать немного по-другому. Adobe Acrobat предоставляет возможность добавления пользовательских особеннос- особенностей, используя JavaScripts-сценарии с открытым текстом. Они могут добавлять пункты к меню программы или специализированные после- последовательности к пакетной обработке. Acrobat JavaScript основывается на ядре языка, знакомом сетевым раз- разработчикам, но его модель объекта документа полностью отличается от DOM, используемого веб-браузерами. Объекты Acrobat JavaScript описа- описаны в Technical Note 5186: Acrobat JavaScript Object Specification. Обрати- Обратитесь к нему интерактивно на веб-странице http://partnersMdobe.com/asn/ developer/pdfs/tn/5186AcroJS.pdf. Другой полезный документ — Acrobat JavaScript Scripting Guide на веб-странице http://partners.adobe.com/asn/ acrobat/sdk/public/docs/AcroJS- Guide.pdf. Тестирование сценариев с помощью отладчика Отладчик JavaScript Debugger в Acrobat 6 Pro или Console (Консоль) в Acrobat 5 — место для проверки новых идей. Откройте его, выбрав ко- команду меню Advanced\JavaScript\Debugger (Дополнительно^^^аЗсйрД Отладчик) в Acrobat 6 Pro или Tools\JavaScript\Console (Сервис\ JavaScript\ Консоль) в Acrobat 5. Добавление новых функций Acrobat с помощью JavaScripts-сценария При запуске программы Acrobat выполняется любой JavaScripts- сценарий, который находится в папке системного уровня JavaScripts или в папке пользовательского уровня JavaScripts. Местоположения этих папок будут показаны далее. Если они отсутствуют, их придет- придется создать. Используйте JavaScripts-сценарий, чтобы добавлять пункты меню к Acrobat или определять глобальные JavaScript-перемен- JavaScript-переменные. В разделе «Закладки PDF-страниц в программе Reader» [Совет № 15] показано, как добавить пункт меню и как определить/запросить гло- глобальную переменную.
Программа Acrobat сохраняет глобальные переменные в файле glob.js. В разделе «Ускорение чтения или демонстрации слайдов в програм- программах Acrobat или Reader» [Совет № 10] показано, как заставить программу Acrobat периодически выполнять JavaScript-сценарий. Эти сценарии дают возможность добавления функций к бесплатной программе Adobe Reader, хотя более мощные команды выполняться не будут. Сценарии не зависят от платформы, поэтому все JavaScript-ме- JavaScript-методы взлома выполняются в Windows, Mac и Linux. Активизируемые при запуске JavaScripts-сценарии в Windows. Для вер- версий 5 и 6 Adobe Acrobat или Adobe Reader папка системного уровня JavaScripts расположена в каталогах: C:\Program Files\Adobe\Acrobat 6.0\ Acrobat\favascripts\или C:\Program Files\±dobe\icrobat 6.0\Reader\favascripts\ Для Adobe Acrobat или Adobe Reader 6 папка пользовательского уровня расположена в каталоге: C:\Documents and Settings\Sid Steward\ Application Data\Adobe\Acrobat\6.0\ JavaScripts\. Для Acrobat 5 папка пользовательского уровня расположена в ката- каталоге C:\Documents and Settings\Sid Steward\My Documents\Adobe\Acrobat\ JavaScripts\. И Adobe Acrobat, и Adobe Reader используют эту папку. Если папка JavaScripts еще не существует, ее нужно создать. Активизируемые при запуске JavaScripts-сценарии в Мае. Для Acrobat 6 папка системного уровня JavaScripts расположена в пакете Acrobat 6. Щелкните правой кнопкой мыши или щелкните на пиктограмме про- программы Acrobat и выберите в контекстном меню Show Package Contents (Показать содержимое пакета). Папка системного уровня JavaScripts расположена в Contents: MacOS: JavaScripts, Для Acrobat 6 папка пользовательского уровня JavaScripts находится в домашней папке пользователя: ~: Library -.Acrobat User Data: JavaScripts. Для Acrobat 5 папка системного уровня JavaScripts расположена в Adobe Acrobat 5. О: JavaScripts. Папка пользовательского уровня распо- расположена в домашней папке пользователя: ~ : Documents : Acrobat User Data: JavaScripts. Активизируемые при запуске JavaScripts-сценарии в Linux. Для Reader 5 каталог системного уровня JavaScripts расположен в ката- каталоге /usr/local/Acrobat5/Reader/intdlinux/plug_ins/JavaScripts. Каталог пользовательского уровня расположен в основном каталоге пользо- пользователя: -/.acrobat/JavaScripts. Создайте эти каталоги, если они еще не существуют.
Создание команд пользовательских пакетных последовательностей Пакетная обработка в Adobe Acrobat 6 Professional [Совет № 93] исполь- использует пакетные последовательности для изменения или обработки сово- совокупностей PDF-документов. Acrobat обеспечивает основные команды для создания последовательностей, такие как Insert Pages (Вставка стра- страниц) и Execute JavaScript (Выполнить JavaScript-сценарий). Используй- Используйте эту команду, чтобы применить JavaScript-сценарий к каждому PDF- документу пакета, как показано на рисунке 7-10. В случае необходимости используйте глобальный объект для сохранения состояния своего па- пакетного процесса. Посетите веб-страницу http://www.planetpdf.com/ mainpage.asp?webpageid=1511 для ознакомления с интересными приме- примерами и комментариями. Рис. 7-10. Использование команды Execute JavaScript для добавления действий к пакетной последовательности Сконфигурируйте программу Acrobat, чтобы использо- использовать свой текстовый редактор для редактирования JavaScripts-сценария. Выберите команду Edit\Preferences\ General\JavaScript (Правка\Параметры настройки\Об- ni;He\JavaSciipt) и определите порядок запуска редактора.
Средства разработки дополнений к программе Acrobat (Создайте дополнения к программе Acrobat в Windows с помощью GCC.) Интерфейс Acrobat API предоставляет мощные инструменталь- инструментальные средства для обращения к PDF-данным и их изменения. Ти- Типичный способ доступа к API — с помощью дополнения к програм- программе Acrobat. Таким дополнением к программе является DLL (в Windows), и оно создано из исходного кода на языках С или C++ с использованием ком- компилятора Microsoft Visual C++ или GNU Compiler Collection (GCC). В этом методе взлома показано, как установить бесплатный компиля- компилятор GCC в Windows и Acrobat SDK и создать типовое дополнение к про- программе, используя GCC. Ч Можно создать дополнения к программе Acrobat для Macintosh и Unix. Adobe обеспечивает отдельные SDK для каждой платформы. Как правило, Macintosh-до- Macintosh-дополнения к программе Acrobat создаются с помощью программы Metrowerks CodeWarrior. Установка GCC в Windows с помощью MinGW и MSYS Установить GCC на компьютере с системой Windows можно, ис- используя несколько различных методов. Один из них — пакеты от MinGW (http://www.mingw.org), содержащие набор инсталляторов и обеспечивающие обновление программного обеспечения. Их можно распаковать и скопировать в начале основной установки. Посетите сайт http://www.mingw.org/download.shtml и загрузите следу- следующие пакеты. Каждый файл имеет имя согласно своей версии. Если более новые версии доступны в разделе Current (Существующие) веб- вебстраницы, используйте их вместо указанных, например, загрузите файл MSYS-1.0.10.exe вместо MSYS-1.0.9.exe. MSYS-1.0.10.exe MinGW-3.1.0-l.exe gcc-core-3.3.1-20030804-1.tar.gz gcc-g ++-3.3.1-20030804-l.tar.gz Сначала установите MinGW в каталог: C:\MinGW\. Затем установите набор программ MSYS, например, в каталог C:\msys\1.0\. Послеинсталляционный сценарий MSYS сконфигуриру- сконфигурирует ее для вашей среды. На запрос о местонахождении пакета MinGW укажите: C:/MinGW (обратите внимание на косую черту).
Набор программ MSYS обладает несколькими инструментальными средствами из GNU (http://www.gnu.org), которые являются обычными в Linux-системах. Среди них grep, less и diff. MSYS предоставляет также Bourne shell-среду, которая позволяет Linux-пользователю чувствовать себя как дома. Фактически создается основной каталог, например: C:\msys\1.0\home\Sid Steward\. При запуске MSYS командой Start\ Programs\MinGW\MSYS\msys (Пуск\Программы\ MinGW\MSYS\msys) открывается красочное приглашение к вводу команды (по умолчанию в основном каталоге). Это похоже на небольшой фрагмент Linux на компью- компьютере с системой Windows. Выполните команду dir, и она не будет понята. Используйте вместо нее команду ls. Выполните команду pwd и вы увидите, что даже файловые системы выглядят по-разному. Текущим каталогом бу- будет /home/SidSteward/, а не C:\msys\1.0\home\SidSteward\. Вы можете обра- обратиться к традиционным DOS-именам дисководов, например: cd «/c/Program Files» Проверьте, может ли набор программ MSYS найти инсталлятор MinGW, выполнив: $ gcc —version Если выводится сообщение command not found (команда не найде- найдена), отредактируйте текстовый файл C:\msys\1.0\etcystab так, чтобы он содержал строку: c:/MinGU /mingw Обратите внимание на косые черты и замените каталог c/MinGUuz- стоположением MinGW на своем компьютере. Чтобы обратиться к инструментам MSYS и MinGW из Windows-приглашения к вводу команды, нужно до- добавить пути C:\msys\1.0\bin и C:\MinGW\bin к Windows-пе- Windows-переменной среды Path. Получите доступ к этим перемен- переменным, выбрав команду Start\Settings\Control Panel\ System\Advanced\Environment Variables (Пуск\Настрой- ки\Панель управлениях Система\Дополнительно\Пере- менные среды). Примените модификацию 3.3.1 к этой версии. Скопируйте файлы * Jar.gz в каталог с MinGW (например, C:\MinG JV\). Откройте MSYS- оболочку Stait\Programs\MinGW\MSYS\msys (Пуск\Программы\ MinGW\MSYS\msys), а затем внесите изменения в каталог /mingw (cd /mingw). Распакуйте архив *.tar.gz:
Sid Steward@GIZMO /mingw $ tar -xzf gcc-core-3.3.1-20030804-l.tar.gz Sid Steward@GIZMO /mingw $ tar -xzf gcc-g++-3.3.1-20030804-l.tar.gz Убедитесь, что обновления работают. Например: Sid Steward@GIZMO /mingw $ gcc —version gcc.exe (GCC) 3.3.1 (mingw special 20030804-1) Все в порядке! Загрузка и установка Acrobat SDK Полный набор Acrobat SDK от Adobe содержит документацию, при- примеры и файлы API-заголовков. Сейчас только члены ASN Developer могут загрузить полный набор Acrobat 6 SDK. Вместо этого мы исполь- используем свободно доступный Acrobat 5 SDK. Эта бесплатная загрузка тре- требует создания (бесплатно) учетной записи ASN Web Account. Посетите веб-страницу http://partners.adobe.com/asn/acrobat/down- load.jsp и загрузите Acrobat 5.0 Full SDK Installation. Для Windows это zip-архив acro5sdkr4.zip- В дополнение к документации Acrobat SDK загрузите последний справочник по формату PDF с веб-страни- веб-страницы http'.//partners, adobe, com/asn/tech/pdf/specifications.jsp. Разархивируйте, а затем установите программу SDK в каталог C:\acro 5sdkr4\. Откройте C:\msys\1.0\etcYstab в текстовом редакторе и добавьте эту строку (обратите внимание на косые черты): C:/acro5sdkr4 /acro5sdkr4 Преобразование Windows-каталогов в MSYS-каталоги упрощает ра- работу в MSYS. Местоположение SDK в MSYS — это всегда /acro5sdkr4. Это используется при создания дополнения к программе. SDK будет искать Acrobat API-заголовки в каталоге: /acro5sdkr4/PluginSupport/ Headers/Headers/. Загрузка и установка типового дополнения к программе Windows-инсталлятор Acrobat SDK поставляется с типовыми проек- проектами дополнений, но все они используют файлы проектов на Visual
C++. Посетите сайт http://www.pdfhacks.com/jumpsection/ и загрузите файл jumpsection-LO.tar.gz, который является исходным кодом нашего дополнения jumpsection к программе Acrobat [Совет № 13]. Он демонст- демонстрирует основные элементы проекта дополнения к программе Acrobat, использующего MinGW. Поместите файл jumpsection-1.0.tar.gz в свой основной каталог с MSYS и распакуйте: Sid Steward@GIZMO ~ $ tar -xzf jumpsection-l.O.tar.gz Это создаст каталог под названием jumpsection-1.0. Внесите в него из- изменения и скомпилируйте jumpsection, используя команду make: Sid Steward@GIZMO ~ $ cd jumpsection-1.0 Sid Steward@GIZMO -/jumpsection-1.0 $make Команда make использует команды из Makefile для создания допол- дополнения jumpsection.api к программе Acrobat. Затем скопируйте файл jumpsection.api в каталог Acrobat plugjns [Совет № 4] и перезапустите про- программу Acrobat, чтобы протестировать его. Он работает и в Acrobat 5, и в Acrobat 6, но не будет загружаться в Adobe Reader. Этот комплект средств является необходимым минимумом для со- создания дополнения к программе Acrobat. Чтобы разрабатывать допол- дополнения, необходим хороший текстовый редактор типа vim [Совет № 82], или Emacs (http://www.gnu.org/software/emacs/windows/ntemacs.html), или GUI-среда типа Dev-C++ (http://www.bloodshed.net/devcpp.html). Изучение документации и примеров Acrobat SDK (Глубже изучите Acrobat и его возможности.) Acrobat 5 SDK для Windows содержит около 30 документов, 15 при- примеров приложений (например, OLE, DDE) и 52 примера дополнений к программе Acrobat (см. рисунок 7-11). Acrobat SDK также доступен для Macintosh и Unix. Этот материал является основой программирования для PDF, Acrobat и Distiller. Он свободно доступен на веб-странице http://partners.adobe.com/asn/acrobat/download.jsp. За дополнительную плату вы также можете приобрести Acrobat 6 SDK. Ниже приводится список самых известных документов, включен- включенных в Acrobat SDK.
Рис. 7-11. Набор Acrobat 5 SDK для Windows, включающий более 30 документов и 67 примеров программ Справочник по формату PDF Самый важный документ — это справочник по формату PDF (PDFReference.pdf). Справочник, поставляемый с Acrobat 5 SDK, уже устарел, поэтому посетите веб-страницу http://partners.adobe.com/asn/ tech/pdf/specifications.jsp и загрузите последнюю версию. Раздел «Совместимость PDF-документов» [Совет № 41] рассматривает совместимость каждой новой версии Acrobat с новым выпуском спра- справочника. Проверьте раздел справочника «Что нового?», чтобы полу- получить представление о том, что добавилось к соответствующей версии Acrobat. В версии 1.5 справочника по формату PDF (который был вы- выпущен с Acrobat 6) новые PDF-возможности описаны в разделе 1.2. Справочник по формату PDF иногда ссылается на справочник по PostScript. Загрузите этот документ с веб-страницы http://partners.adobe.com/ asn/tech/ps/specifications.jsp.
Справочник по Acrobat Core API Справочник по API (CoreAPIReference.pdf) перечисляет все объекты, методы и обратные вызовы, доступные вашему дополнению к про- программе Acrobat [Совет № 97]. Это справочник, поэтому он не предпола- предполагает глубоких объяснений. Для получения информации, выходящей за пределы API, просмотрите краткий обзор Acrobat Core API Overview (CoreAPIOverview.pdf). Справочник по связям между Acrobat-приложениями (IAC) Справочник по связям между Acrobat-приложениями (IAC — Acrobat Interapplication Communication) (IACReference.pdf) перечисляет интер- интерфейсы, которые вы можете использовать, чтобы обратиться к Acrobat из внешних программ или языков сценариев. Он содержит OLE-объекты Acrobat и их методы, Apple Event-объекты Acrobat и их свойства и DDE- сообщения, которые поддерживают Acrobat. Для введения в 1АС-про- граммирование прочитайте Acrobat Interapplication Communication Overview (IACOverview.pdf). Справочник по примерам SDK Прочитайте справочник по примерам SDK — SDK Samples Guide (SamplesGuide.pdf), чтобы получить представление о возможностях Acrobat SDK, и просмотрите примеры типового кода. Параметры Acrobat Distiller Acrobat Distiller использует параметры настройки [Совет № 38] для создания различных видов документов в формате PDF. Документы, создаваемые для сетевого распространения, не должны иметь боль- большой объем, в то время как PDF-документ, создаваемый для сервис- сервисного бюро, должен иметь самое высокое качество. В документе Distiller Parameters (DistillerParameters.pdf или distparm.pdf) приведены все доступные параметры настройки. Как обсуждалось в разделе «Конфигурирование Distiller и Ghostscript» [Совет № 42], GUI-интерфейс программы Distiller не дает возможности обращаться ко всем этим параметрам. Справочное руководство по pdfmark Справочное руководство по pdfmark (pdfmarkReference.pdf) предо- предоставляет информацию о его операторах. Acrobat Distiller и Ghostscript
конвертируют PostScript-страницы в страницы формата PDF. Добав- Добавляя операторы программы pdfmark к входному PostScript-сценарию, вы сможете добавить к выходному PDF-документу такие функции, как аннотации, ссылки, закладки и метаданные. Различные макрокоман- макрокоманды текстового процессора [Совет № 32] используют для этой цели опера- операторы pdfmark. Использование дополнений к программе Acrobat для расширения PDF-документов (Acrobat API позволяет адаптировать PDF-документ к конкретным потребностям.) Методы взлома расширяют возможности программы Adobe Acrobat, используя дополнения к ней. Но это же возможно сделать с помощью пользовательских средств или PDF-аннотаций. Лучшей иллюстрацией этих возможностей является тот факт, что Adobe ис- использует дополнения [Совет № 4], чтобы осуществлять самые интерес- интересные функции Acrobat, как показано на рисунке 7-12. Поля PDF-фор- PDF-формы, например, представлены как PDF-аннотации. Специфическое дополнение (AcroForm.api) обрабатывает их в программе Acrobat. Оно добавляет средства для создания и редактирования аннотации полей формы, а затем обрабатывает взаимодействие пользователей с этими полями. Аналогичным образом можно расширить PDF-документ, добавляя пользовательские аннотации к страницам с помощью пользователь- пользовательского инструмента. Затем дополнение к программе регистрирует обра- обработчик аннотаций с помощью Acrobat. Обработчик ответственен за отображение аннотаций на PDF-странице и за пользовательское взаи- взаимодействие с аннотацией. Больше узнать о PDF-аннотациях вы можете, прочитав версию 1.5 справочника по формату PDF, раздел 8.4, и консультируясь с Acrobat SDK [Совет № 98]. SDK содержит пример дополнения к программе — Stamper, который демонстрирует создание пользовательского инст- инструмента и пользовательского обработчика аннотаций. Рассмотрите примеры дополнений, включенные в раздел Annotation and Forms (Аннотации и формы), чтобы получить представление о других воз- возможностях. Другие программы от Adobe, включая Photoshop, Illustrator и InDesign, предлагают дополнительные ин- интерфейсы для расширения приложений.
Рис. 7-12. Расширение PDF и Acrobat-возможностей с помощью дополнения к программам PostScript и PDF-игры (Развлекайтесь, благодаря PostScript и PDF-программированию.) PostScript — вполне развитый язык программирования, и вы можете анимировать PDF-документ, используя его. Те, кто взламывает PDF- документы, могут делать любые вещи. «Морской бой» и Tic-Tac-Toe в формате PDF Игра «Морской бой» (см. рисунок 7-13) является PDF-игрой, в которой нужно потопить суда компьютера раньше, чем он потопит ваши. Крэйг Коннор из Adobe Systems, Inc создал эту игру, и ее можно загрузить с веб-страницы http://www.math.uakron.edu/~dpstory/acrotex.html. Этот сайт предлагает много других интерактивных PDF-игр, включая Tic- Tac-Toe от D. P. Story.
Рис. 7-13. PDF-игра «Морской бой» Программирование PostScript PostScript — это больше чем метки на странице, это вполне развитый язык программирования. Он может обрабатывать всевозможные дан- данные. Например, Мишель Шарпантье создал PostScript-программу, вы- вычисляющую простые числа (http://www.cs.unh.edu/-charpov/Programming/ PostScript-primes/). Естественно, она сообщает о своих результатах в виде выводимой страницы. Если послать такую программу PostScript-прин- PostScript-принтеру, его интерпретатор фактически выполнит вычисления. Если нет PostScript-принтера или Acrobat Distiller, можно использовать Ghostscript, чтобы выполнить эти PostScript-программы и увидеть их результаты на экране [Совет № 3]. PostScript и фракталы С помощью языка PostScript легко описывать большие запутанные рисунки, используя PostScript-процедуры. В частности, PostScript — это
способ генерирования фракталов (см. рисунок 7-14). Мишель Шарпантье предоставляет хорошие примеры и описание процесса генерирования фракталов на веб-странице http://www.cs.unh.edu/-charpov/Programming/ L-systems/. Стайн Ван Донген обеспечивает другой источник интерес- интересных примеров на сайте http://www.micans.org/stijn/ps/. Наконец, если вы серьезно относитесь к математическому языку PostScript, посетите веб- вебстраницу http://www.math.ubc.ca/~cass/graphics/text/www/, чтобы прочи- прочитать «Математические иллюстрации» Билла Касселмэна. Рис. 7-14. Генерирование фракталов Сетевой PostScript-сервер Первым сетевым PostScript-сервером является PS-HTTPD. Он соответствует запросу на комментарий RFC 1149 для Linux (http://www.blug.linux.no/rfcll49/). Посетите сайт http://www.pugo.orgили веб-страницу http://public.planetmirror.com/pub/pshttpd/, чтобы получить дополнительную информацию о PS-HTTPD и загрузить исходный код.
Указатель A Graphviz 90 Acrobat, 5 gVim дополнения к программе 15 включение в pdftk 240 изменение порядка слов 176 объединение страниц 155 Н растеризация рисунков 175 HylaFAX 153 Acrobat Distiller 114 конфигурирование 128 I внедрения шрифтов 135 ImageMagick оптимизация документа 181 установка 149 параметры 129 профили joboptions 115, 130 J разбиение шрифтов 137 JavaScript Acrobat SDK 298 настройка Adobe Acrobat 292 установка 297 перелистывание страниц 34 Amazon 97 JavaScript-сценарий для переворачивания страниц 35 G для создания закладок в Acrobat 44 Ghostscript 12 Joboptions 114 конфигурирование 128 внедрения шрифтов 135 К печать PDF-документов 117 kw-catcher 54 профили joboptions 130 разбиение шрифтов 137 М растровые Microsoft Graph 88 опции 142 схемы 142 Р установка 117 Perl GhostWord 101 установка 258,288 GNU Compiler Collection (GCC) 295 PDF IFilter 5.0 61 Gs4Word 102 инсталляция 63
pdftk S форматирование 245 SVG-графики 143 шифрование вывода 163 SVG-изображения, просмотр 143 PDF-гиперссылки изменение 243 V PDF-документ Virtual PostScript Printer, архивирование 198 установка 118, 122 внедрение шрифтов 132 Virtual Printer Kit 118 добавление вложений 164 добавление таблиц 167 W загрузка 198 Windows Indexing Service 59 защита 194 идентификация 72 X конвертировать 12 XSL-FO 272 копирование свойств 183 многоцелевой 105 Б прикрепление таблиц 169 Библиотека преобразование в шаблон 251 FPDF 260 совместимость 126, 128 iText 230 уменьшение размера 180 pdf4php 261 чтение 8 шифрование 159 В PDF-закладки 39 Веб-обложки 204 PDF-игры 302 Версии Acrobat 127 PDF-код, редактирование 237 Вкладка Comments 39 PDF-комментарии 207 PDF-пароли 159 Г PDF-принтер, установка 118 Генерирование документов из XML PDF-страницы и CSS 269 HTML-гиперссылки 201 Граф 90 наложение 266 PDF-форма 211 Д заполнение 225 Демонстрация слайдов в интерактивная 227 Acrobat/Reader 33 объединение 229 Добавить распространение 220 PDF-метаданные 187 тестирование 216 закладки 186 Plucker 110 профили к контекстному меню Plug-ins 13 PDF-файла 19 Дополнение R ВВОХ 179 RedMon Shortcuts 49 установка 118 TAPS 21
3 М Заголовок 185 Метаданные документа 187 Закладки получение 190 PDF-страниц 44 настройка 191 Метки-заполнители 246 И Индекс, тестировать 64 Н Индексирование PDF-коллекций 57 Навигационная панель 191 Инструмент Настройка вида эскиза 41 Form 213 Номер ISBN 91 Paper Capture OCR 24 Нумерация страниц, Select Table 23 логическая 184 Text Select 22 Интерактивное чтение 195 0 Обрезка страниц 177 К Оптимизация Качество 150 папки с документами 278 Кернинг 85 с помощью PDF Optimizer 182 Ключевые слова, Опция генерирование 53 Auto-Crop 179 Компоновка страниц 263 Trim Page 179 на языке PHP 265 Ориентация страниц 186 с помощью Java и iText 263 Конвертировать П PDF-документ в формат Word 25 Перемещение PDF-документ в различные выбранных страниц 42 форматы 25 закладок 187 документ Microsoft Office Переплет 95 в формат PDF 282 Плотность 150 изображение в формат PDF 150 Поиск Контент 77 PDF-документов 57 Конфигурирование индексированный 61 PDF-принтера в Windows 98 121 неиндексированный 61 полноэкранного режима 34 Поле порта RedMon 120 DDE 51 Копирование автора 185 выбранных страниц 42 Порт RedMon, выделенных страниц 43 свойства 123,146 данных с PDF-страниц 21 Права доступа 160 кнопок 194 Представление 77 Принтер GSPdf Printer 124 Л Программа Линеаризация 196 Formatting Objects Processor 272
gnuplot 89 в WordiMac v. X 109 Graphviz 90 в StarOffice и OpenOffice 109 GSview 12 HTML-издания 106 ImageMagick 149 HTML-оглавления 202 PDFIFilter 60 Windows-ярлыков 48 Pdfskins 205 автоматического оглавления pdftk 39,157,203 в Word 80 Preview 10, 37 диаграмм и графиков 88 Process Explorer 62 динамического pstoedit 144 PDF-документа 256 Samba 137 документов с помощью XSL-FO Программирование и FOP 272 PostScript 303 интерактивного Просмотр PDF-документа PDF-документа 99 в нескольких окнах 28 кнопок 192 Профиль обложки PDF-документа 205 Standart 116 оглавления еВоок 116 PDF-документа 203 Smallest File Size 117 порталов документов 67 Публикация порталов коллекций 70 электронных книг 95 портативного издания 109 предметного указателя 171 Р пункта контекстного меню Размер текста 85 Attach File 170 Разработка дизайна документа 81 сценариев Распаковка PDF-вложений 38 с помощью Visual Basic 284 Регистрация щелчков с помощью Perl 287 на страницах 209 формы 212 Режим Full Screen 33 экранного издания 103 Сохранение PDF-документов С в Mac OS X 125 Слова, игнорируемые 54 Стиль 77 Словарь XSL-FO 272 Microsoft Word 2002 78 Служба Lightning Source 96 Word 2000 78 Создание WordiMac v. X 78 PDF-альбома цифровых изменение 78 фотографий 149 Страница, 150 PDF-документ наложение с помощью языка Java 262 с помощью Java и iText 267 с помощью языка PHP 260 с помощью pdftk 269 PDF-файла 221 HTML-версии Т в Microsoft Word 2002 и 2003 107 Текстовый редактор gVim 239
У Ч Управление дополнениями Чтение PDF-документа в веб- к Acrobat 16 браузере 29 Установка PDF IFilter 5.0 63 Ш PDF-принтера 118 Шрифт Ps2pdf.com Printer 147 Base 14 133 Virtual PostScript Printer 118 Base 35 134 Сервера Apache в Windows 215 встраиваемый 132 системный 84 Ф стандартный 84 Файлы .htaccess 199 установить 83 Формат PDF, конвертирование 113 Формат данных формы 217 3 Фракталы 303 Эскизы страниц 41
Практическое пособие Стюард Сид Взломы PDF Перевод Г. Нищего Верстка М.В. Матвеевой Дизайн и оформление О. В. Будко Главный редактор Е.А. Макарова Директор издательства В.И. Говорухин ПОЛЬЗОВАТЕЛЬ IN LEGAL USE Подписано в печать 10.09.2005. Формат 70хЮ0У]6. Гарнитура «Ньютон». Бумага офсетная. Печать офсетная. Усл. печ. л. 2i Тираж 3000 экз. Заказ № 15677. Издательство «СП ЭКОМ» 117342, Россия, Москва, ул. Бутлерова, д. 17а, оф. 105 Телефон для оптовых покупателей: @95) 330-68-65 www.ecom.ru zakaz@ecom.ru Издательство «БИНОМ. Лаборатория знаний» 119071, Россия, Москва, Ленинский проспект, д. 15 Телефон для оптовых покупателей: @95) 171-19-54 www.Lbz.ru Lbz@aha.ru Отпечатано в ОАО «Саратовский полиграфический комбинат». 410004, г. Саратов, ул. Чернышевского, 59.
взломы PDF 100 профессиональных советов и инструментов O'REILLY® Сид Стюард эк«м
ВЗЛОМЫ PDF. 100 профессиональных советов и инструментов Файлы в формате PDF очень широко распространены, однако большинство людей используют их в основном для чтения и распечатки. Даже создатели таких файлов просто выбирают команду «печать в PDF», не задумыва- задумываясь, что PDF-файл — не только удобная электронная версия документа. PDF-файлы пересылаются в электронном виде как некий черный ящик, который можно открыть с помощью программы Acrobat. В этой книге рассказывается, как использовать множество различных средств и методов работы с PDF-файлами, как создавать, реорганизо- реорганизовывать и представлять информацию в формате PDF. Вы узнаете: • как устроен PDF-файл; • как контролировать и управлять PDF-файлами; • как настраивать средства просмотра PDF-файлов, чтобы сделать чтение более удобным; • как сжимать огромные PDF-файлы до гораздо меньших размеров; • как создавать функционально богатые PDF-файлы на различных платформах; • как редактировать PDF-тексты в программе gVim; • как использовать схожее программное обеспечение для создания PDF-файлов с расширенными навигационными возможностями; • как создавать PDF-файлы со сложными средствами навигации и интерактивными возможностями; • как генерировать PDF «на лету»; • как интегрировать PDF-файлы с web-сайтами не только при помощи гиперссылок; • как собирать данные на web-сайте с помощью PDF-форм; • как индексировать и сравнивать PDF-файлы; • как преобразовывать входящие факсы в формат PDF; • как писать сценарии, управляющие программой Acrobat. Одним словом, если Вы хотите знать о PDF-файлах все, то эта книга для Вас! Информация о наших новых книгах на сайте: www.ecom.ru ЭК^М O'REILLY®