我查看了一下週圍的計算器,試圖找到一種方法來做到這一點,而現在找不到合適的答案。我需要能夠通過base64編碼的字符串在新窗口或iframe中加載PDF,並在加載後立即觸發其打印預覽。我可以使用這兩種方法輕鬆加載PDF,但實際上無法正確顯示打印預覽。這裏是我試過的:從javascript中觸發打印預覽的base64編碼的PDF
- 在新窗口中使用
embed
元素。即使在加載內容之後,調用window.print()
也是空白的。 - 使用隱藏的動態創建的
iframe
與src="data:application/pdf;base64,JVBERi0..."
並調用myFrame.contentWindow.print()
。但是這給出了一個CORS錯誤。我不知道爲什麼,因爲我沒有通過iframe加載新域,只是內容。 - 打開一個新窗口,只有
iframe
元素(如#2中的元素),並在整個窗口中調用打印件。這也顯示一個空白的白頁。 - 用數據uri打開一個新窗口並打印出來。
window.open('data:application/pdf;base64,JVBERi0...').print();
。這也不起作用,因爲它甚至不顯示打印預覽。我也嘗試用setTimeout
延遲它,但是這也沒有做任何事。
在這一點上,我以爲什麼沒有這些工作,特別是因爲在Chrome它顯示的自定義菜單欄這樣很困惑:
如果我點擊的實際打印圖標在那裏,打印預覽是完美的。無論Chrome在點擊該按鈕時做什麼,都正是我想要完成的。無論如何觸發該功能?還是有另一種方法來實現我想要的?只是爲了澄清,我只需要這個在Chrome中工作,我不需要擔心其他瀏覽器。
你有沒有設法得到它的工作?我試了一樣似乎沒有任何工作 – db306
@ db306不,我真的不認爲這是可能的,我試過了我能想到的一切。 Chrome瀏覽器中的PDF查看器實際上是一個插件,我不認爲可以通過javascript與它進行交互。我認爲可以用PDF.js來完成,但我沒有時間去嘗試並實現它 – jtate
我實際上設法讓它在彈出窗口上打印,但是,該函數會很快被觸發,因爲每個瀏覽器都有不同的閱讀器,所以我無法在pdf格式器上添加事件監聽器。唯一可行的方法是將pdf文件保存在服務器上,在隱藏的iframe上提供pdf,並在加載iframe時進行打印。希望這種幫助某人。謝謝 – db306