2010-05-04 2 views
0

Я обслуживаю PDF-файлы из базы данных SQL и представляю их в браузере. Я пытаюсь выяснить способ встраивания числа в PDF динамически, чтобы идентификатор записи для этой записи SQL PDFs был доступен мне, когда пользователь отправляет данные формы XML. Пользователь нажимает кнопку отправки в форме, и форма отправляет свои XML-данные на мою страницу отправки. Если есть какой-то способ изменения URL-адреса отправки на лету, я могу сделать строку запроса, чтобы передать мне идентификатор записи. Я не создаю PDF-код в коде, его создаются вручную, а затем загружаются на мой сайт.Динамически добавьте номер в PDF или нажмите кнопку «Отправить», изменив свой URL на основе этого номера.

Редактировать

Пользователь получает ссылку someServer.com/pdfLink.aspx?formID=5 они идут туда, и что страницы тянет PDF из БД и отображает его. Это затягивает acrobat в полноразмерном браузере, поэтому моя страница aspx не контролирует отправку заполненной формы, Acrobat. Пользователь заполняет форму и нажимает кнопку отправки в форме. Эта кнопка отправки была настроена на время разработки формы, чтобы указать на другую страницу. someSite.com/pdfSubmit.aspx Кнопка отправки отправляет данные XML на эту страницу, и я могу ее обработать. Мне нужен recordID в строке запроса для страницы someSite.com/pdfSubmit.aspx. Для этого мне нужно будет изменить PDF, чтобы либо добавить строку recordID и строку запроса на URL отправки кнопки отправки, либо вставить ее в PDF-файл. Большой вопрос заключается в том, как изменить PDF непосредственно перед отображением его через someServer.com/pdfLink.aspx?formID=5, чтобы выполнить любой из этих двух параметров.

+0

Как использовать уникальные отправные URL-адреса для каждой формы? Для этого вам потребуется реализовать обработчик HTTP. Например, одна форма будет размещаться на someserver.com/submit/5, другая - на someserver.com/submit/6. HTH – unclepaul84

+0

Это было бы хорошо, но все же вопрос, который я застрял, остается, как я могу получить PDF, чтобы опубликовать его сам по этим уникальным URL-адресам? – jamone

+0

Вам нужно будет поменять URL-адреса Acrobat на использование Acrobat Professional. – unclepaul84

ответ

0

При попытке предложения плинтуса я понял, что мне пришлось перейти от представления XML (так как его данные были непосредственно в PDF-формате). Поэтому я изменил форму для отправки в виде XDP, в которой есть данные XML + встроенный PDF. Когда я сделал это и рассмотрел необработанный XDP, что представленная форма прошла через это.

<?xml version="1.0" encoding="UTF-8" ?> 
    <?xfa generator="XFA2_4" APIVersion="3.0.8262.0"?> 
    <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2010-05-04T15:15:00Z" uuid="6d0944c8-1573-442c-9c85-11e372bd38c3"> 
    <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> 
     <xfa:data> 
     <form1> 
      <TextField1>TestMe</TextField1> 
     </form1> 
     </xfa:data> 
    </xfa:datasets> 
    <pdf href="ViewPDF.aspx?formID=10" xmlns="http://ns.adobe.com/xdp/pdf/" /> 
</xdp:xdp> 

Обратите внимание на вторую на последнюю строку.Он автоматически включает URL-адрес PDF, который имеет значение formID, которое мне нужно. Поэтому все, что мне нужно было сделать, это получить XDP вместо чистого XML-сообщения из формы, и он дает мне все, что мне нужно.

0

Запрос запрашивается только для чтения, поэтому вы не можете динамически изменять его во время выполнения. Однако может вам:

  1. Добавьте RecordId в форму в то время представить страницу первоначально оказанной

  2. Вы можете обрабатывать отправить форму, а затем сделать Response.Redirect или Server.Transfer к правильная страница с RecordId параметра добавляется в строку запроса

+0

Я не думаю, что вы поняли вопрос. Я добавил больше объяснений, чтобы помочь. – jamone

1

Встраивание номер в формате PDF не совсем кошерно, но есть некоторые вещи, которые вы можете сделать это будет выполнять спецификации.

В настоящее время PDF спецификации говорит, что «последняя строка файла должна содержать только конечные из файла маркера

%%EOF 

но есть некоторое покачивание номер - деталь реализации говорит, что это не технически должны быть последней строкой файла, но должны появляться только в последнем 1K, и, вообще говоря, если вы не слишком сильно себя чувствуете, большинство совместимых читателей даже не моргнут. Если бы мне пришлось делать это, я был бы склонен добавить новую строку (если ее нет), то% (это комментарий в формате PDF), маркер, чтобы сообщить мне, что это мое, и, наконец, номер. Что-то вроде:

// assume we already know it ends with %%EOF 
void AppendNumberToPdf(Stream stm, int number, bool addNewline) 
{ 
    stm.Seek(0, SeekOrigin.End); // go to EOF 
    StreamWriter writer = new StreamWriter(stm, new ASCIIEncoding(), 1024); 
    writer.WriteLine(string.Format("{0}% {1} {2}", (addNewLine ? "\n" : ""), kMyMarkerString, number)); 
    writer.Flush(); 
} 

kMyMarkerString должно быть чем-то вроде «MyApplicationDocumentIdentifier:» или что-то подобное, что позволит легко идентифицировать ваши треки.

+0

Это кажется разумным. Я сейчас пытаюсь. – jamone