寫幾篇簡書,先從一個簡單問題開始,這問題與導(dǎo)出為 PDF
相關(guān)擎析,但是 htmltopdf
這個工具在我電腦上不可用绎橘,所以我果斷放棄了使用 pdfkit
哑诊。偶然間我發(fā)現(xiàn) Chromium
下右鍵再 print...
可以保存為 PDF
并且導(dǎo)出樣式也基本一致繁莹。但是這樣又引發(fā)了一個新問題:
例如這樣丈秩,導(dǎo)出的 js 代碼只一行狮辽,自己去點(diǎn)擊 save 按鈕來保存仅乓。
function ExportToPDF () {
window.open(window.location.href.replace(/#.*?$/, '') + '/export_to_pdf');
}
如何在子窗口的 onload 事件上加動作赖舟,例如我想等子窗口加載完畢,去點(diǎn)擊一個按鈕夸楣,然后再調(diào)用子窗口的 print
宾抓。否則有些東西被隱藏,打印出來無意義豫喧。
這問題各種方法嘗試了很多石洗,最終都沒有達(dá)到想要的效果,一句一句在 console
下執(zhí)行都沒有問題紧显,寫代碼中去都沒有反映了讲衫。最終的一般化方法并沒有找到,現(xiàn)在也只是根據(jù)這個特例來專門解決孵班,想打印的頁面和當(dāng)前的頁面區(qū)別只是有沒有 layout
和是否點(diǎn)擊顯示全部的按鈕涉兽,其實(shí)一切動作都當(dāng)成是一個頁面就好了,通過 url 區(qū)分一下就可以了篙程。
window.onload = function() {
// ...
if (window.location.href.match(/export_to_pdf$/)) {
document.getElementById('show_hide_all_button').click();
window.print();
}
}
function ExportToPDF () {
window.open(window.location.href.replace(/#.*?$/, '') + '/export_to_pdf');
}
最后 export_to_pdf
的路由應(yīng)該是這樣:
get :export_to_pdf, on: :member