Автоматизированное добавление печатных штампов при помощи Adobe Acrobat 6.0 благодаря использованию Visual Basic (VBA) и JavaScript | Статья в сборнике международной научной конференции

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: 1. Информатика и кибернетика

Опубликовано в

III международная научная конференция «Технические науки: теория и практика» (Чита, апрель 2016)

Дата публикации: 05.04.2016

Статья просмотрена: 998 раз

Библиографическое описание:

Степуро, Е. Н. Автоматизированное добавление печатных штампов при помощи Adobe Acrobat 6.0 благодаря использованию Visual Basic (VBA) и JavaScript / Е. Н. Степуро. — Текст : непосредственный // Технические науки: теория и практика : материалы III Междунар. науч. конф. (г. Чита, апрель 2016 г.). — Чита : Издательство Молодой ученый, 2016. — С. 19-21. — URL: https://moluch.ru/conf/tech/archive/165/10182/ (дата обращения: 16.12.2024).



В статье рассматривается наиболее простой способ добавления печатных штампов в документ MS Word, а именно при помощи макроса, описанного на языке программирования Visual Basic for Application с использованием Adobe Acrobat 6.0 и элементов программирования на языке JavaScript.

Ключевые слова: макрос для Word, Interapplication Communication for Acrobat, JavaScript API.

В MS Word макрос представляет собой инструмент, который позволяет запоминать какие-либо определенные задачи и действия, а в дальнейшем их выполнять. Одна из целей создания макросов — выполнение задач одним щелчком мыши или одним нажатием клавиши. [5] Макросы для MS Word пишутся на языке программирования Visual Basic для приложений (VBA). Это упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office, а также версий для MacOS. Чтобы запускать макрос одним щелчком мыши, можно добавить кнопку на панель быстрого доступа. Для его запуска также можно назначить сочетание клавиш.

Иногда на практике встречаются случаи, когда требуется определить удобный макрос для создания водяных знаков для печатных бланков. Первая мысль, которая может прийти в голову, это добавление графического объекта в верхний и нижний колонтитулы документа. Редактор MS Word может сделать это автоматически. Задача звучит достаточно просто. Но что если, во-первых, графический объект должен быть за текстом, а, во-вторых, предположим, что бланки должны быть только на первой странице. Их можно поместить в основной текст первой страницы, или изменить формат страницы так, чтобы получились разные верхний и нижний колонтитулы на первой и последующих страницах. Если необходимы печатные бланки на всех страницах, кроме первой, то можно использовать второй вариант. Но если получать документ из другого источника, как клиент или поставщик, то есть вероятность, что документ уже имеет разные колонтитулы в разных разделах. В итоге мы получаем слишком много условий.

Но в то же время Adobe Acrobat 6.0 имеет такую функцию, как размещение одной RDF-страницы поверх другой. Это является отличным решением проблемы. Для правильной работы необходимо конвертировать документ MS Word в формат PDF и затем использовать Adobe Acrobat 6.0 для того, чтобы добавить печатный штамп в PDF.

Эта версия Adobe Acrobat была выпущена еще в 2003 году. Программа позволяет создавать собственные документы, формы, презентации и многое другое. Нынешние технологии предусматривают вставку в PDF анимации, аудио- и видеофайлов. К ключевым особенностям Adobe Acrobat следует отнести:

 Сканирование и конвертирование непосредственно в формат PDF. В данный формат можно перевести любые бумажные документы, фотографии, сообщения электронной почты, web-страницы, электронные таблицы, видео, совместимое с AdobeFlashPlayer.

 Экспорт и редактирование PDF. Утилита позволяет экспортировать PDF в форматы Excel или Word, сохранять их без изменения форматирования. Рисунки, таблицы, текст в несколько колонок, атрибуты шрифта и параграфы — все остается на своих местах. Документ можно конвертировать не полностью, а частично.

 Комбинирование нескольких файлов из различного контента. Один PDF-файл может хранить в себе разный контент, представленный в удобной форме — хорошо читаемой и структурированной. [7]

Единственное, что остается это описать инструкцию для пользователей. Повезет, если пользователь будет знаком с работой Adobe Acrobat 6.0 и редактора MS Word. А если он является новичком? Большинство пользователей не понимают, как работают эти программы, по какому алгоритму все происходит и почему происходит именно так, а не наоборот. Вместо этого они пытаются запомнить нужную им последовательность действий. Чтобы не обременять пользователя инструкциями «Конвертируйте документ MS Word в документ PDF. Затем объедините его с печатным штампом PDF, используя добавление водяных макросов, после чего распечатайте документ», стоит написать макрос, который максимально автоматизирует задачу.

В данной статье рассмотрим использование Visual Basic for Application (VBA) для решения данной задачи. На первый взгляд эта идея кажется трудной, но вполне разрешимой.

Для этого будем использовать Interapplication Communication for Acrobat (IAC), которое описывает отдельный процесс приложения для контроля функциональности Acrobat. [1] На Windows термин «Interapplication» подразумевает OLE (Object Linking and Embedding), на MacOS он выступает в качестве AppleScripts. [4] Объекты OLE могут быть описаны на языке Visual Basic. Существуют три версии IAC, каждая из которых соответствует одной из основных версий Adobe Acrobat: 4, 5 или 6. Но в них доступ к водяному знаку можно обеспечить только путем выполнения пункта меню, который имитирует нажатие кнопки мыши:

Dim app As Object

Set app = CreateObject("AcroExch.App")

app.MenuItemExecute( "COMP:AddBack" )

Метод MenuItemExecute() определен в справочнике IAC, в котором данный пункт меню описан в Acrobat Core API Reference. Приведенный выше код открывает диалоговое окно, которое появляется при добавлении водяных знаков в Adobe Acrobat.

Также можно использовать JavaScript API для наложения двух PDF-страниц. [2] Такая техника использует функции, которые доступны только через JavaScript, а не через IAC. Компания Adobe представила некий мост JavaScript — IAC с версии Acrobat 6.0. [3] Но документ, описывающий его работу, исключен из публичного доступа. Хотя в базе знаний Acrobat можно найти не задокументированный код на Visual Basic для метода PDDoc.GetJSObject(). С помощью этого метода получается двойной интерфейс к объекту JavaScript, который связан с PDDoc. Здесь JSObject является коллекцией объектов, находящихся в Acrobat JavaScript API. JSObject возвращает аргументы типа Variant и принимает почти все аргументы элементарных типов. Из этого можно сделать вывод, что мост Visual Basic/JavaScript должен быть вызван следующим образом:

Set app = CreateObject("AcroExch.App")

Set avDoc = app.GetActiveDoc ' get the logical doc

Set pdDoc = avDoc.GetPDDoc ' get the physical doc

Set jso = pdDoc.GetJSObject ' get the bridge

docs = jso.app.activeDocs ' get array of active docs,

' app is the JS handle to Acrobat's Application top level object

For Each doc In docs ' iterate docs

...

Next

На данном этапе есть все, что нужно для описания макроса. Таким образом, для реализации нашей задачи необходимо выполнить следующие шаги:

  1. Преобразовать документ MSWord через AdobePDFPrinter.
  2. Подождать, пока Acrobat откроет обработанный PDF-документ.
  3. Получить JSObject из обработанного PDF-документа.
  4. Добавить первую страницу другого PDF-документа в обработанный PDF-документ.
  5. Включить добавленную страницу в шаблонную.
  6. Инициализировать шаблонную страницу для всех обработанных PDF-документов, при помощи слияния содержимого шаблона с нормальным содержанием.
  7. Удалить шаблонную страницу из обработанного PDF-документа.

Самым сложным является шаг 4, так как в JavaScript API нет метода GetActiveDoc(), который получает самый «передний» документ. Этот метод возвращал бы необходимый документ. [6] Подобное по функционалу свойство JavaScript App.activeDocs возвращает массив всех открытых PDF-документов. Для того чтобы получить управление через JavaScript для обработанного PDF-документа, следует перебрать весь этот массив и сравнить имя каждого документа с именем документа полученного через метод GetActiveDoc().

Литература:

  1. Пономаренко, С. Adobe Acrobat 8. Формат PDF и печать: Самоучитель / С. Пономаренко. — Изд-во БХВ-Петербург, 2007. — 296с.;
  2. Stefanov, S. Object-Oriented JavaScript / S. Stefanov // Packt Publishing, 2013. — 354 с.;
  3. [Электронный ресурс] http://www.planetpdf.com/;
  4. [Электронный ресурс] http://public.id/interapplication-communication-api-reference-ppt.htm;
  5. [Электронный ресурс] https://msdn.microsoft.com/ru-ru/library/office/ff604039 %28v=office.14 %29.aspx;
  6. [Электронный ресурс] https://ru.scribd.com/doc/33265752/19/AcroExch-App-GetActiveDoc-Method;
  7. [Электронный ресурс] http://chem-otkrit.ru/soft/Adobe_Acrobat.
Основные термины (генерируются автоматически): PDF, API, IAC, документ, OLE, VBA, обработанный PDF-документа, нижний колонтитул, печатный штамп, шаблонная страница.

Ключевые слова

макрос для Word, Коммуникация для Acrobat, API JavaScript, Interapplication Communication for Acrobat, JavaScript API

Похожие статьи

Использование сервиса API SendGrid для реализации отправки Email-сообщений в проекте ASP.NET Core

В данной статье рассмотрено использование Email-рассылки при помощи API SendGrid в проекте ASP.NET Core.

Автоматическая поддержка документации Asp.Net Core и Angular веб-приложений

В данной статье рассматривается автоматизация генерации и сопровождения документации Asp.Net Core и Angular приложения, с автоматической публикацией в GitLab.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Оформление документов в системе компьютерной вёрстки TeX

В статье описаны некоторые способы оформления основных элементов документов, содержащих учебные и математические тексты, указаны основные принципы построения фрейм-окружений, приведены рекомендации по выбору компилятора TeX и использованию цветовых п...

Проектирование активных фильтров с использованием FilterLab 2.0

Данная статья призвана познакомить читателя с программой FilterLab (FL), которая позволяет пользователю работать с активными фильтрами на новом уровне. FL крайне дружелюбен и удобен для проектирования активных фильтров.

Сравнительный анализ времени отображения экранов с использованием стандартного подхода в Android и библиотеки Jetpack Compose

В данной статье проводятся измерения скорости отображения интерфейса и сравнение Jetpack Compose со стандартным подходом создания интерфейсов. Измеряется скорость отображения с использованием режима отладки и R8, а также комбинированием подходом при ...

Применение библиотеки AForge.NET и ее расширения Accord.NET Framework при распознавании лиц в режиме реального времени

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов. Представлены способы использования данных компонент для решения задачи распознавания лиц в режиме реального времени.

Разработка алгоритма валидации форм на клиентской стороне для передачи данных

В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.

Использование двухфакторной аутентификации в проекте ASP.NET Core

Данная статья рассматривает процесс настройки двухфакторной аутентификации в проектах ASP.NET Core.

Похожие статьи

Использование сервиса API SendGrid для реализации отправки Email-сообщений в проекте ASP.NET Core

В данной статье рассмотрено использование Email-рассылки при помощи API SendGrid в проекте ASP.NET Core.

Автоматическая поддержка документации Asp.Net Core и Angular веб-приложений

В данной статье рассматривается автоматизация генерации и сопровождения документации Asp.Net Core и Angular приложения, с автоматической публикацией в GitLab.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Оформление документов в системе компьютерной вёрстки TeX

В статье описаны некоторые способы оформления основных элементов документов, содержащих учебные и математические тексты, указаны основные принципы построения фрейм-окружений, приведены рекомендации по выбору компилятора TeX и использованию цветовых п...

Проектирование активных фильтров с использованием FilterLab 2.0

Данная статья призвана познакомить читателя с программой FilterLab (FL), которая позволяет пользователю работать с активными фильтрами на новом уровне. FL крайне дружелюбен и удобен для проектирования активных фильтров.

Сравнительный анализ времени отображения экранов с использованием стандартного подхода в Android и библиотеки Jetpack Compose

В данной статье проводятся измерения скорости отображения интерфейса и сравнение Jetpack Compose со стандартным подходом создания интерфейсов. Измеряется скорость отображения с использованием режима отладки и R8, а также комбинированием подходом при ...

Применение библиотеки AForge.NET и ее расширения Accord.NET Framework при распознавании лиц в режиме реального времени

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов. Представлены способы использования данных компонент для решения задачи распознавания лиц в режиме реального времени.

Разработка алгоритма валидации форм на клиентской стороне для передачи данных

В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.

Использование двухфакторной аутентификации в проекте ASP.NET Core

Данная статья рассматривает процесс настройки двухфакторной аутентификации в проектах ASP.NET Core.