2016-10-01 33 views
1

我使用pdf.js API方法(如運行和打開)在我的網頁中加載pdf.js查看器。帶外部文件上傳功能的Pdfjs查看器

在這個頁面中我也有一個文件上傳部分附上相關文件。

的問題是,當我在文件上傳部分上傳的文檔,使用懸浮窗,PDF閱讀器認爲我上傳文件到它,並改變現有的文檔。有沒有關閉這個設置?我認爲network.js中會有東西,但我還沒有發現任何有希望的東西。

+0

您是否直接使用項目[觀察者]的定製版本(http://mozilla.github.io/pdf.js/web/viewer.html)例如,或顯示層API與'PDFJS.getDocument'並手動渲染到像[this]這樣的畫布元素上(http://mozilla.github.io/pdf.js/examples/)?還是第三方包裝? – yscik

+0

我直接使用API​​。我給了我的配置文件PDFViewerApplication,它告訴它佈局元素,然後我打開我的URL。 – segFault

回答

0

Here is the offending part in PDFViewerApplication,它增加一個全球性的事件change監聽和改變PDF格式是否與選定的文件的文件輸入。

不幸的是,沒有設置標誌來禁止這種行爲,沒有引用監聽功能來刪除它,也沒有辦法取消或改變事件(它也會打破應用程序的其他部分),所以,必須修改此代碼才能將其刪除。好像聽衆只是發送一個新的內部fileinputchange事件,這個事件只用於這個,所以你只需要註釋掉this line

+0

這樣做!我一直在挖掘2天,從未見過。非常感謝!只是好奇,你知道如何有多個pdfjs查看器在同一頁面,而不使用iFrames? – segFault

+0

我在兩個不同的部分中有一個頁面應用程序和一個查看器,我還沒有找到清理它們的好方法。我曾嘗試刪除他們的dom,但沒有取得任何成功,並且無法在app.js文件中找到銷燬方法 – segFault

+0

是的,我之前看到過您的問題。這個查看器實際上只是作爲一個演示/示例實現而已,並且查看代碼對於那種包含的存在是非常不合適的,它的單個實例對象直接掛接到窗口中的所有內容。你可以拋棄它,只需使用帶PDJS.getDocument的顯示層,將頁面渲染到畫布上(如示例中所示),並添加您真正需要的幾個UI函數(如縮放,跳轉到頁面),它可以在幾百代碼行。 – yscik