Как я могу объединить данные в файл 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. Наверное, не очень помогает, но эй:)

Другие вопросы по тегам