2013-08-30 85 views
3

我們的網絡應用程序提供下載pdf的能力。Firefox下載pdf後pdf下載

當用戶點擊下載鏈接時,我們在新標籤中打開pdf。

我的firefox使用pdfjs作爲pdf查看器,我可以通過它的界面保存pdf。

在Firefox 19中一切正常,但版本24下載文件看起來像損壞(它顯示該文件,但無法正確下載)。

我注意到文件的結果大小是2的最近冪,例如,如果我的原始pdf大小是97kb然後通過Firefox的pdfjs下載它的大小變成128kb,並且我的桌面pdf查看器(如acrobat)不能打開它。

我在我們的應用程序的相同版本上測試它。

更新

Demo pdf file - 一切都很好,通過Linux的谷歌瀏覽器瀏覽器和Linux的Firefox 21(pdfjs)下載,但與Linux的同樣的問題火狐23.0.1

有毛病pdfjs或與我們的服務器?

更新#2

我看着破和不破文件的二進制內容:

 
$ git diff not-broken.dump broken.dump 
diff --git a/not-broken.dump b/broken.dump 
index 3621089..5de337c 100644 
--- a/not-broken.dump 
+++ b/broken.dump 
@@ -336,5 +336,7 @@ 
000014f0 b8 d0 3d 76 85 f8 76 9d e6 50 74 df e7 a7 bd b0 |..=v..v..Pt.....| 
00001500 00 f1 6e 05 63 0a 65 6e 64 73 74 72 65 61 6d 0a |..n.c.endstream.| 
00001510 65 6e 64 6f 62 6a 0a 73 74 61 72 74 78 72 65 66 |endobj.startxref| 
-00001520 0a 35 32 31 33 0a 25 25 45 4f 46 0a    |.5213.%%EOF.| 
-0000152c 
+00001520 0a 35 32 31 33 0a 25 25 45 4f 46 0a 00 00 00 00 |.5213.%%EOF.....| 
+00001530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 
+* 
+00010000 
+0

你是否在文本/十六進制編輯器中打開壞pdf以查看導致文件大小增加的原因? –

+0

任何機會你有一個生活在線的例子嗎?如果沒有,您是否至少可以發佈初始加載請求的頭文件(響應/回覆)​​以及稍後的下載請求(Web控制檯,Wireshark等)? – nmaier

+0

@MarcB我已經更新了問題 –

回答

3

我們在這裏是一個真正的錯誤。我提交了:https://github.com/mozilla/pdf.js/issues/3634

由於數據傳輸沒有指定內容長度,但使用分塊傳輸編碼,因此pdf.js將使用64kb的初始緩衝區,每次該緩衝區溢出時會加倍。但是,一旦傳輸完成,pdf.js將不會將該緩衝區縮小爲實際大小,也不會記住實際大小,因此在下載完整大小緩衝區(您的示例中仍然是最初的64kb)時將被傳輸。

我不認爲有真正的解決方法,因爲根本不使用pdf.js(這是用戶選擇)。