Как я могу объединить данные в файл XDP и вернуть PDF (через.NET)?
У моей команды есть шаблон (XDP), который мы создали с помощью дизайнера Adobe LiveCycle.
Ситуация:
Мы заменяем старую форму Acrobat (формат XFDF) на эту форму LiveCycle в рамках более масштабного обновления
Текущая форма Acrobat динамически заполняется основными данными и доставляется пользователю в виде файла PDF (пользователь нажимает ссылку, и на его компьютере открывается файл PDF, предварительно заполненный основными демографическими данными).
Текущий процесс выглядит примерно так: пользовательские щелчки, приложение.NET извлекает данные, приложение.NET извлекает PDF из файловой системы, приложение.NET сериализует данные в шаблон в форме XFDF, приложение ASP.NET отправляет ответ HTTP обратно пользователю в XFDF формат, пользователь просматривает PDF в Adobe Reader
Мы хотели бы сохранить примерно аналогичный процесс с новым форматом XDP.
Для записи, у нас действительно есть доступ к сервисам LiveCycle, которые выполняют эту работу (например, сервис Render). Тем не менее, мы хотели бы создать этот тип сериализации в.NET по нескольким причинам: у нас ограничены лицензии LiveCycle и мы будем бороться за доступ к службам LiveCycle из-за их расположения на предприятии.
Любые мысли (даже "перестань это делать, ты безумен") приветствуются.
2 ответа
Эй, извините за медленный ответ, не видел этого.
Создать PDF. Закодируйте его как base64.
Создайте текстовый файл, foo.xdp:
<?xml version='1.0' encoding='UTF-8'?>
<?xfa generator='AdobeDesigner_V7.0' APIVersion='2.2.4333.0'?>
<xdp:xdp xmlns:xdp='http://ns.adobe.com/xdp/'>
<xfa:datasets xmlns:xfa='http://www.xfa.org/schema/xfa-data/1.0/'>
<xfa:data>
Вставьте сюда XML, который является вашими динамическими данными, в соответствии с динамическими полями в PDF.
</xfa:data>
</xfa:datasets>
<pdf xmlns=\"http://ns.adobe.com/xdp/pdf/\"><document>
<chunk>
Не помещая никаких символов после тега, вставьте PDF в формате base64.
</chunk>
</document></pdf>
</xdp:xdp>
И, о чудо, у вас есть действующий XDP. Adobe Reader примет это и отобразит PDF с вашими значениями.
В Java, если у вас есть Свойства с подробной информацией о соединении, следующий код может использовать Livecycle для преобразования XDP в PDF, хотя ваш пробег может отличаться в C#.
// Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory
.createInstance(connectionProperties);
// Create a PDF Utility client
PDFUtilityServiceClient pdfClient = new PDFUtilityServiceClient(myFactory);
// Specify an XDP file to convert to a PDF document
ByteArrayInputStream bais = new ByteArrayInputStream(xdp.getBytes("ASCII"));
Document inDoc = new Document(bais);
// Convert the XDP file to a PDF document
Document pdf = pdfClient.convertXDPtoPDF(inDoc);
// Return the PDF as an InputStream.
return pdf.getInputStream();
Похоже, вы ищете для рендеринга на стороне клиента - то, что я никогда не был в состоянии использовать в рабочем виде. И учитывая, что вы работаете в.Net, это, вероятно, сделает вещи невозможными..
На мой взгляд, лучше всего будет использовать сервис рендеринга, который поставляется с Forms ES. Наверное, не очень помогает, но эй:)