2013-05-21 43 views
0

我正在使用pdf.js在我的GWT應用程序中查看PDF文件。我完全按照readme上描述的構建操作的產品來實現查看器。pdf.js:需要變量的servlet的PDF文件

當我用靜態pdf使用查看器時,這可以正常工作。當我提供鏈接到一個服務於PDF的Servlet時,PDF查看器不會加載。

做工精細

http://127.0.0.1:8888/pdfjs/web/viewer.html?file=http://127.0.0.1:8888/staticpdf.pdf

不工作

http://127.0.0.1:8888/pdfjs/web/viewer.html?file=http://127.0.0.1:8888/api/getPdf?nodeRef=001

http://127.0.0.1:8888/api/getPdf?nodeRef=001產生的PDF文件。該servlet一直工作。

這是行不通的,因爲pdf.js#getDocument進入,恕不參數的GET調用,而servlet需要的nodeRef:

GET http://127.0.0.1:8888/api/getPdf?nodeRef 
HTTP/1.1 200 OK 
Content-Type: application/pdf 
Content-Length: 0 

我將如何實現Java servlet和pdf.js能夠查看一個PDF文件給定了一個nodeRef?(只有servlet知道如何將nodeRef轉換爲PDF,我需要PDF的路徑保持隱藏)

我一直在想api/getPdf/001,但不知道如何在tomcat上捕獲這個服務器,如果這甚至是可能的。

回答

1

事實證明,我在pdf.js內想得太多,我一直在修補它幾個小時,甚至這個問題本身已經改變了十幾次,因爲我不斷尋找新的線索。

但是,我現在找到了一個簡單的解決方案。

  • 而不是訪問我的servlet作爲/getPdf?nodeRef=001,我訪問/getPdf/001
  • 我的servlet映射現在是/getPdf/*

這個servlet包含的doGet下面的新代碼:

String nodeRef = request.getPathInfo().substring(1); 

這省略了url中基本參數GET的必要性,至少格式爲?a=1&b=2,並且可以很好地將變量傳遞給使用pdf.js返回PDF文件的servlet。

編輯:我編輯了我的問題標題以反映情況,以便那些偶然發現這個問題的人也可能在這裏找到他們的答案。

+1

不錯。一定要選擇你自己的答案作爲接受的答案。 – rees

+0

謝謝:)。我會在兩天內允許我! –

1

如果你不想改變你的服務器映射,你應該編碼您的URL(用encodeURIComponent方法爲例):

http://127.0.0.1:8888/api/getPdf?nodeRef=001會變成http%3A%2F%2F127.0.0.1%3A8888%2Fapi%2FgetPdf%3FnodeRef%3D001和pdf.js正確處理爲「文件」參數值。

乾杯!