2011-09-05 44 views
0

我試圖將生成的PDF文件(Apache FOP)發送到客戶端。我知道這可以通過將數組寫入響應流並通過在servlet中設置正確的內容類型,長度等來完成。我的問題是,整個應用程序是基於它只會接收/發送JSON的想法而構建的。在servlet的service()方法,我有這樣的:發送PDF爲字節[]/JSON問題

response.setContentType("application/json"); 
    reqBroker.process(request, response); 

RequestBroker是誰處理JSON(傑克遜處理器)類,一切都是通用的,我不能改變它。最重要的是,我必須正確接收來自請求的JSON,才能訪問數據並生成我的pdf。所以這兩條線是必要的。但是,當我發送回覆時,我需要有另一種內容類型,以便PDF在瀏覽器中正確顯示。 到目前爲止,我能夠將字節數組作爲JSON的一部分發送,但是我不知道如何在客戶端上將數組顯示爲PDF(如果這樣的話甚至可能)。 我想就如何發送我的PDF和設置正確的標題,而不是搞亂JSON提出一些建議。謝謝。

+0

您要發送給客戶的是什麼?如果是網絡瀏覽器,爲什麼不將內容類型設置爲「application/pdf」,並讓瀏覽器按照用戶配置的方式處理顯示/下載。 – Gus

+0

當你說「客戶」時 - 你是指瀏覽器?還是有真正的客戶端處理? –

+0

有響應JSON的一些客戶端處理。主要是javascript。我無法將內容類型設置爲「application/pdf」,因爲它已經設置爲「application/json」。這必須留下來的請求,但對於我需要「應用程序/ pdf」的響應 – joanna

回答

1

JSON和字節數組不混合。

相反,您應該創建一個並將其指向一個返回原始PDF的URL。

-1

看看這裏:How to send pdf in json,它列出了幾種可以考慮的方法。最簡單的方法是使用Base64壓縮將二進制數據轉換爲字符串。在C#中,這意味着對Convert.FromBase64String的調用。但是,由於Base64壓縮意味着大約增加了33%以上的內存,因此這佔用了空間。如果你能擺脫它,這是最簡單的解決方案。如果額外的大小是一個問題,你可以考慮把它拉大。

+1

無論該網站是什麼,它都需要用戶名和密碼。 –