2011-04-18 70 views
0

嘿,夥計們。我想要做的是編寫一個包含一個基於Active Directory生成pdf的servlet的Confluence插件。無論如何,在合流空間有一個附件倉庫。問題是,當我嘗試從PDF創建一個IText圖像時,它會得到所有的錯誤。我假設這是因爲該頁面在登錄後面。任何其他圖像工作得很好。Java - 在登錄後從網站檢索圖像

無論如何,在Java中,我可以通過某種憑證登錄後檢索圖像,即使只是byte[]

錯誤示例:

Image portrait = Image.getInstance(new URL("http://*Local Network*/download/attachments/3409000/PdfTestImage.JPG")); 

^^拋出java.io.IOException: http://*Local Network*/download/attachments/3409000/John.Doe.JPG is not a recognized imageformat. at com.itextpdf.text.Image.getInstance(Image.java:317)

雖然

Image portrait = Image.getInstance(new URL("http://www.dominionpaper.ca/files/dominion-img/hedgehog.JPG")); 

或其他任何東西我擺在那裏不會造成問題。有什麼建議麼?我之前使用過HttpClient,但如果適用,我不積極。

+0

如何定義「Local Network」?一個真正的IP?本地主機? 「本地網絡」是什麼?你有沒有檢查你是否得到一個圖像,而不是一個500服務器的錯誤信息? – Aleadam 2011-04-18 18:10:48

+0

它是本地Confluence(內部開發wiki)實例運行的IP地址。至於服務器錯誤信息是我不知道。什麼隨機互聯網圖像工作和什麼似乎不是登錄頁面之間唯一的相關性。 – ReimTime 2011-04-18 18:48:33

回答

0

你問題描述很混亂。讓我重複一遍,以確保我已經正確:您需要從受密碼保護的站點提取圖像,但是您未登錄到該站點(用戶可能已登錄,但不是您的服務器端代碼)?

然後,我會建議用戶HttpClient提供正確的憑據,並將文件下載到本地存儲,您可以按照自己的喜好進行處理。請注意,如果網站使用MS SSO,則任務可能非常複雜,因爲您的代碼需要具有AD/Kerberos的服務帳戶。

+0

是的,IText似乎只需要將圖像的URL放在pdf上,這正是我正在做的。到目前爲止,除了最基本的servlet設置(doPost之類)之外,沒有其他服務器端的東西。 – ReimTime 2011-04-18 18:50:32