2010-05-04 39 views
0

我從SQL數據庫提供PDF並在瀏覽器中顯示它們。我試圖找出一種方法來動態地在PDF中嵌入一個數字,這樣當用戶提交XML表單數據時,就可以使用該PDFs SQL記錄的recordID。用戶點擊表單上的提交按鈕,表單將其XML數據提交到我的提交頁面。如果有一些方法可以隨時更改提交URL,那麼我可以執行一個查詢字符串來傳遞我自己的recordID。我不是在代碼中生成PDF,它是由手工創建的,然後上傳到我的網站。動態地將數字附加到PDF或使提交按鈕更改其編號

編輯

給予用戶鏈接someServer.com/pdfLink.aspx?formID=5他們去那裏和頁面從數據庫中拉一個PDF和顯示。這使得瀏覽器中的acrobat全部大小,所以我的aspx頁面無法控制提交完整的表單,Acrobat是。用戶填寫表單並點擊表單中的提交按鈕。此提交按鈕在表單設計時設置爲指向另一個頁面someSite.com/pdfSubmit.aspx提交按鈕將XML數據發佈到該頁面,我可以處理它。我需要someSite.com/pdfSubmit.aspx頁面的查詢字符串中的recordID。爲此,我需要修改PDF以將recordID和查詢字符串添加到提交按鈕的提交URL,或者將其嵌入到PDF其他軟件中。最大的問題是,在我通過someServer.com/pdfLink.aspx?formID=5顯示它來執行這兩個選項之前,我該如何修改PDF。

+0

如何爲每個表單使用唯一的提交網址?你需要爲此實現一個HTTP處理程序。例如,一個表單將發佈到某個server.com/submit/5,另一個將提交到某個server.com/submit/6。 HTH – unclepaul84 2010-05-04 14:48:15

+0

這樣可以,但仍然是我堅持的問題仍然存在,我如何讓PDF將自己發佈到這些獨特的URL? – jamone 2010-05-04 14:50:35

+0

您必須將URL Acrobat文章更改爲使用Acrobat Professional。 – unclepaul84 2010-05-04 14:59:36

回答

0

在嘗試@plinth的建議時,我意識到我不得不從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> 

公告第2至最後一行。它會自動包含具有我需要的formID值的PDF格式的url。所以我所要做的就是從表單中獲取XDP而不是純XML的帖子,它爲我提供了我需要的一切。

0

查詢字符串是隻讀的,所以你不能在運行時動態改變。但是你可以:

  1. 的的recordId添加到窗體當時的提交頁面最初呈現

  2. 您可以處理提交表單,然後做的Response.Redirect或Server.Transfer的到添加了的recordId參數正確的頁面來查詢字符串

+0

我不認爲你完全明白這個問題。我已經添加了更多的解釋來幫助。 – jamone 2010-05-04 14:40:40

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 2010-05-04 15:14:46