Как конвертировать XDP в PDF в Adobe LiveCycle ES3 через HTTP REST-запрос
У меня есть: сервер LiveCycle (ES3, JBOSS), верстак, конструктор. Используя LC Desginer, я конвертирую PDF в XDP - теперь это шаблон. Теперь мне нужно конвертировать этот XDP-файл в PDF. Итак, я думаю, мне нужно как-то вызвать сервер LiveCycle по HTTP-запросу, в теле этого запроса я могу отправить тело документа XDP. Все что мне нужно от LC это просто PDF.
Выглядит как простая задача, но я не могу найти никакой информации, как это сделать. Я вижу много примеров, как сделать это в Java, но мне не нужна Java, мне нужно сделать это через HTTP (конечная точка REST или SOAP, если это невозможно).
Может быть, мне нужно создать какое-то "приложение" в Workbench? Если да, есть ли пошаговая документация? Или, может быть, кто-то может объяснить мне, как это сделать. Может быть, в ES3 Server уже есть встроенное приложение - я думаю, что это очень распространенный и простой случай.
UPD: я открыл работу в Одессе по этому вопросу, обещаю опубликовать решение здесь, чтобы поделиться знаниями с сообществом
2 ответа
Как и было обещано, вот как решить эту проблему:
- Недостаточно просто вставить PDF в LiveCycle Designer. Вам точно нужно оформить форму в LC Designer. Вы можете использовать свой PDF в качестве шаблона, но для всего, что вы хотите выполнить с помощью пользовательских данных, вам нужно добавить объекты в LC Designer (взгляните на меню "Вставить", попробуйте таблицу или текстовое поле) и добавьте данные Подключение на вкладке "Просмотр данных". Я думаю, что это довольно легкий шаг для профессионалов, но новичкам может потребоваться некоторое время. Сохраните результаты своей работы как, например,
Template.xdp
файл. - Также у вас теперь есть пример файла XML - источника данных. Давайте назовем это
DataSource.xml
- Теперь мы можем установить LiveCycle Server. Лучшим для LC ES3 является RHEL 5.5 (мы потратили около 2 дней, чтобы найти правильную комбинацию ОС и настроек). Вам понадобится умный системный администратор (или просто опытный в Adobe LiveCycle:))
Сервер работает, вы можете видеть веб-интерфейс, поэтому давайте создадим приложение в Adobe LiveCycle Workbench ES3. Добавьте приложение с новым именем и добавьте процесс к этому приложению. Чтобы описать все этапы процесса, потребуется много слов, просто взгляните на скриншоты результата (и обратите внимание также на переменные):
Теперь самая простая часть - вызвать это приложение по HTTP-запросу. Но мы не можем просто отправить обычный запрос POST в Adobe LiveCycle:) Мы должны отправить содержимое 2 файлов (
Template.xdp
а такжеDataSource.xml
) так как multipart/form-data и имена частей являются именами входных переменных (в моем примере этоxmlTemplate
а такжеxmlData
). И не забудьте заголовок авторизации с базовыми учетными данными.- В ответе вы получите тело документа в кодировке base64.
Спасибо Thierry Stortenbeker за это приложение и за помощь и терпение.
Да, вы должны создать приложение LC, используя инструментальные средства. Вот как это сделать:
- Создайте новое приложение в рабочей среде, используя File -> New -> Application.
- Создайте новый процесс, используя контекстное меню приложения.
- Удалите действие формы renderPDF из действия и назовите его "renderPDFForm".
- Выберите действие формы renderPDF, чтобы добавить переменные, используя нижнюю панель переменных.
- Добавьте переменную типа "Документ" и назовите ее "inputXDP". Мы будем использовать это для передачи файла xdp. Отметьте его как "входную" переменную.
- Добавьте переменную типа "Документ" и назовите ее "outPDF". Отметьте его как "выходную" переменную.
- Теперь дважды щелкните действие renderPDFForm, это откроет редактор свойств с левой стороны.
- Разверните раздел "Ввод", если он еще не расширен. Убедитесь, что "Форма" подбирается из переменной. Затем выберите "inputXDP" из выпадающего списка.
- Разверните раздел "Вывод", если он еще не расширен. Убедитесь, что "Rendered Form" выбран из переменной. Затем выберите переменную "outPDF" из выпадающего списка.
- Теперь разверните свое приложение, щелкнув правой кнопкой мыши меню приложения.
Вот и все. Вы готовы к работе. Теперь сохраните процесс и дважды щелкните "начальную точку по умолчанию", чтобы получить остальную часть URL-адреса, где будет открыт этот сервис. Остальные URL должны выглядеть http://localhost:8080/rest/services/RestFormRender/renderForm:1.0
, Здесь RestFormRender - это имя приложения, а renderForm - имя процесса. Теперь выполните вызов GET/POST для этого URL-адреса REST и укажите байты XDP в параметре запроса "inputXDP".