2013-04-08 60 views
3

我使用pdf.js查看pdf文檔,pdf.js首先從服務器獲取整個文檔然後開始渲染,並且此行爲導致兩個問題:使用pdf.js時只從服務器加載需要的頁面

  • 如果PDF文檔是大的,它需要很長的時間來加載。
  • 如果有人從移動設備讀取緩存內存泄漏。

我認爲使用http範圍請求只需要用戶瀏覽的所需頁面,而不是整個文檔,將解決這些問題。

這裏是實現範圍請求,但仍在運行,直到整個文檔的請求加載不與取,因爲你去的行爲PR。 https://github.com/mozilla/pdf.js/pull/2719

任何幫助嗎?

+0

問題服務器是否支持範圍請求?特別是在動態創建pdf的情況下,他們通常不會。 – mkl 2013-04-08 21:35:20

+0

是的,服務器支持範圍請求,但問題是範圍請求仍在運行,直到整個文檔加載。 – 2013-04-09 06:00:41

+0

這聽起來像服務器不*支持範圍請求,而是總是提供完整的文件。無論是你的測試PDF還是一種無法滿足範圍要求的人。 – mkl 2013-04-09 06:42:59

回答

1

如果沒記錯的PDF格式,實際的文件是不容易裂開的,除非你知道每個頁面的確切字節範圍做一個呼叫之前(即使如此,我不知道JS能處理二進制有效的操作來完成這項工作,或者如果你正在修改JS庫來做到這一點)。您可能想要做的是按頁面服務器端(使用PHP或其他語言)拆分文檔,而不是使用pdf.js加載整個文檔,逐個加載頁面。

這有一些優點和一些缺點。缺點:

  • 您需要以編程方式分割PDF。這實際上並沒有那麼難,但有點乏味
  • 您還需要找到一種方法,以PDF文件的所有URI傳遞到您的瀏覽器。這也很容易

優勢應該是顯而易見的:較少的帶寬使用,提供逐頁視圖的能力,保存單個頁面的能力。

相關問題